2009年3月17日

阅读评论 发表评论

    这个应该算是补遗漏,去年在MSN Space上写过一篇关于凹凸贴图的,当时写了半天其实写的一点也不明白,呵呵,因为有很多细节其实我也没搞太清楚,现在这里发一点关于其中一个用来完成凹凸贴图计算中将光向量转向顶点所在的切向量的细节,这个在当时的例子中是通过API实现的,这里简单描述一下原理,以下翻译自OpenGL.org中关于Tangent Space的阐述。 
     为了能够正确的完成凹凸贴图中偏移的计算,光向量L必须转换到切向空间中,所谓的切向空间包括3个轴:T,B和N。其中T是该点切线向量,平行于参数曲面上S方向上的增量(我理解应该就是在多边形曲面上的切向方向吧);N是该点法线向量,垂直于局部平面;B(Binormal)是副法线,同时垂直于N和T,并且和T确定了切平面。这三个向量确定的一个空间坐标系就是传说中的切空间,如果所处的表面是曲线,那么切空间在每一个顶点上都应该是变化的。
    既然光源必须转换至表面中每一个顶点的切空间,那么下面的问题就只有一个,如何能够正确的计算出每一个顶点的切空间呢?我们可以使用顶点的法线向量作为N;然后使用模型的局部坐标系中的S方向上的增量(模型空间中材质的S轴方向上)作为切线方向(这一块还是不太明白他的意思,用增量的极限来表示切线没有错,但是怎么实现的好像没说明白,可能是我还处于初级阶段吧,呵呵,不过在D3D中是有可以仅通过法线向量来计算切线空间的API的);然后B可以通过N和T的叉乘计算求得,单位化后的三个向量可以组成一个旋转矩阵:
      
    T,B,N分别作为空间内的X,Y,Z轴。它可以将向量从局部空间坐标系转换至切空间坐标系,如果T,B,N是在观察空间内定义的,那么就可以使用它来完成观察空间到切空间的转换。在非平整的表面上,每一个顶点所对应的矩阵自然也都是不同的。
    有了这个矩阵我们就可以将光向量变换到每个顶点自己的切空间内了,来计算光给每个顶点的漫反射和镜反射的不同影响了。
    这就是在各种贴图技术中很重要的切空间了~。
   

[图形学]切向空间(Tangent Space)相关推荐

  1. 切线空间(Tangent Space)

    1. 线性变换 2. 切线空间(坐标系) 2.1 切线空间的构成 2.2 切线空间中光照计算及其弊端 Reference 1. 线性变换 在掌握切线空间之前我们先来简单了解线性变换与向量空间.矩阵的关 ...

  2. 彩色空间(Color Space)

    背景 学习openCV-Python Tutorial,在Image Processing in OpenCV这一节里有提到彩色空间的转换,结合其他的一些资料对彩色空间(Color Space),彩色 ...

  3. Java堆空间(Heap Space)

    Java 堆空间(Heap Space) 概述 在Java程序中,堆是JVM内存空间中最大的一块,同时我们知道,每个线程都拥有一个虚拟机栈,但是堆不同,Java堆是被所有线程共享的一块内存区域,在虚拟 ...

  4. Java 堆空间(Heap Space)

    Java 堆空间(Heap Space) 概述 在Java程序中,堆是JVM内存空间中最大的一块,同时我们知道,每个线程都拥有一个虚拟机栈,但是堆不同,Java堆是被所有线程共享的一块内存区域,在虚拟 ...

  5. linux 交换空间(space space)详解

    内存和磁盘简介 正常的linux操作系统一般有两种内存,第一种就是我们熟知的RAM(random access memory),它是用来存储一段时间内频繁使用的数据和文档,电脑是不能直接读写非内存的东 ...

  6. sed模式空间(pattern space)和保持空间(hold space)

    前面的基本用法已经可以满足90%的需要,人个认为想要真正掌握sed,还需要学习一下sed的高级用法,本节就详细讲解一下sed的模式空间和保持空间 前面基本用法中也有提到模式空间,即为处理文件中一行内容 ...

  7. 计算机图形学-----齐次坐标、空间变换矩阵和通用的建模方法

    齐次坐标系 齐次坐标系是为了区分空间点和向量的.三维空间中,(x,y,z)(x,y,z)(x,y,z)可以表示一个点ppp的位置,但是也可以表示一个向量v\bf{v}v.对于点的移动是有实际意义的,但 ...

  8. MAALA4.14.2_空间和子空间 (Space and Subspace)

    注:本文是对Matrix Analysis and Applied Linear Algebra一书4.1节Space and Subspace和4.2节Four Fundamental Subspa ...

  9. 100% 远程办公也能培养企业文化、享受乐趣并组建办公空间 #Party Space

    Mixlab 云端虚拟空间将重构所有线下的行业与社交活动,并逐渐融入人们的日常生活.此类空间与日常生活的线下空间相比有哪些区别? 知识库 1989年美国社会学家 RAY OLDENBURG 在< ...

最新文章

  1. findler mac 隐藏文件_Fiddler使用文档
  2. 远程办公,你希望在家工作几天?
  3. mysql数据库什么是事件_MySQL数据库之mysql 事件(Event) 总结
  4. 微软发布Azure Functions、Service Fabric和IoT Starter Kits新服务
  5. Acwing 1083. Windy数
  6. Oracle快速备份表数据
  7. 类模板(参考《C++ Templates 英文版第二版》)
  8. LeedCode篇:234. 回文链表
  9. 20145309李昊《网络对抗》MSF应用基础
  10. 计算机组成原理—Cache主存块中的替换算法
  11. Android Studio 使用Method trace,查看某进程的所有线程trace的方法
  12. iOS底层探索之Runtime(四): 动态方法解析
  13. python的数据类型分为复数_Python的基本数据类型
  14. sv编程语言_sv零星知识点
  15. aliyun的产品都是有哪些,主要是做什么的呢?
  16. 视频如何加水印文字?
  17. sonarqube+sonar-scanner+jenkins安装配置及使用
  18. 数据结构题(C语言)----括弧匹配检验(check)
  19. 旧上海老大杜月笙语录
  20. 应用安全技术趋势之 Top 5

热门文章

  1. 【AutoML】强化学习如何用于模型量化?
  2. 【AI初识境】如何增加深度学习模型的泛化能力
  3. 全球与中国重型离合器市场运营状况分析与“十四五”发展规划建议2021年版
  4. 数据库配置,参考django框架,采用嵌套的字典实现
  5. openssl简介-指令asn1parse
  6. vs2005制作安装包(自动安装.net framework 2.0)(小寿原创)
  7. 【转】PYTHON open/文件操作
  8. 1-36随机生成6个不重复的数
  9. 如何理解Java中参数传递只能传值?
  10. Develop chrome extension study