1。对象空间,纹理空间,切线空间。
空间这个概念,并不一定是通常说的看得见摸得着的几何空间。在老白看来,空间就是N个维度组合的说法,而1个维度就是一种认识视角 (认识的结果就叫坐标) 。举个例子,对所有地球人,可以以年龄和性别两个维度构造一个二维空间,可以说每个人的 年龄和性别 就是 在这个二维空间的坐标。如果需要在一张纸上绘制,则可以画两个垂直轴,一个标年龄,一个标性别,点出60亿个点,重合的点自然是很多了。如此这般是一个认识世界的方法论而已。
空间这个概念,并不一定是通常说的看得见摸得着的几何空间。在老白看来,空间就是N个维度组合的说法,而1个维度就是一种认识视角 (认识的结果就叫坐标) 。举个例子,对所有地球人,可以以年龄和性别两个维度构造一个二维空间,可以说每个人的 年龄和性别 就是 在这个二维空间的坐标。如果需要在一张纸上绘制,则可以画两个垂直轴,一个标年龄,一个标性别,点出60亿个点,重合的点自然是很多了。如此这般是一个认识世界的方法论而已。
对象空间,纹理空间,切线空间都是针对对象的任意点而言。不同的是对象的所有点都有唯一一个统一的对象空间,一个统一的纹理空间,而切线空间则是不同点有自己不同的切线空间。
对象空间也叫model-space,是以对象轴点为原点,沿轴向建立三维直角坐标系,依此坐标系尺量 对象的每个点 就建立了每个点的坐标。
对象空间也叫model-space,是以对象轴点为原点,沿轴向建立三维直角坐标系,依此坐标系尺量 对象的每个点 就建立了每个点的坐标。
纹理空间,对象的任意一个点都在纹理空间有一个坐标,但这个坐标其实是人为指定建立的(不是按坐标系尺量而来),一般是为满足绘制贴图的方便在3D编辑软件中通过拖拽或快速
展开
工具
得到。
切线空间的坐标系定义
如下:
a.对象上任何一个点按序(取决于具体实现算法)选取毗邻的三个顶点构造一个三角形。(不能做到这样的点没有切线空间)
b.此三角形面上所有点的对象空间向量可以并要求与纹理空间对应点的坐标 标量 建立 线性映射 关系( 统一的代数方程式 ) 。 其中T, B为映射到纹理空间(0,1),(1,0)的对象空间的对应 向量 。利用已知三角形三顶点的双空间坐标,可算出 T,B。
a.对象上任何一个点按序(取决于具体实现算法)选取毗邻的三个顶点构造一个三角形。(不能做到这样的点没有切线空间)
b.此三角形面上所有点的对象空间向量可以并要求与纹理空间对应点的坐标 标量 建立 线性映射 关系( 统一的代数方程式 ) 。 其中T, B为映射到纹理空间(0,1),(1,0)的对象空间的对应 向量 。利用已知三角形三顶点的双空间坐标,可算出 T,B。



c.算出 T,B后,映射到纹理空间原点的对象空间的点坐标也可以算出来,这样在三角形平面有了T,B两个轴向,再加上该点的原始(或插值算出)法线N作为第三轴,一个新三维空间即建立起来,此即为该点的切线空间 。注意,切线空间不一定是正交空间 。
d.
T, B值是和点所在三角形的三个顶点相关的,同一个三角形内的所有点将使用一致的
T,B值,称为切线基础。所以T,B
(也可是转置值T',B'
)
一般可存储在对象的顶点数据中,如在FBX导出界面中有勾选控制。在UDK中,当光线从世界空间换算为切线空间时就可以利用存储在mesh的切线基础进行快速换算。
2。法线贴图
法线贴图既可以建立在对象空间上,也可以建立在切线空间上。这里说的是后者。
对象的任何一个点A,所在三角形的三个顶点都有原始法线,通过某种算法(比如插值计算)后得到点A的法线并延伸,和高精度对象的表面相交,取交点( 可能是高精度模型的顶点 )处的法线(若是顶点则可直接为高精度模型的顶点原始法线,否则也可能是插值算法算来) ,将此法线按点A所在的切线空间进行尺量,并归一化长度,得到坐标值 ,转换成RGB表示, 范围0-255的代表-1到1之间的值,0在贴图中存储为颜色值127/128(UDK说是127,polycount说是128,但是老白实际测是xnormal烘焙127, 3dmax烘焙128 )。最后 按点A所在的UV坐标存入贴图的像素。对象的所有点按这样的算法烘焙后构成的贴图即为法线贴图。
根据法线贴图的建立算法可以推知:
a.对象做任何xform,因为UV和顶点法线不变,所以法线贴图始终适用。
b.如果对象有硬边或者相邻顶点的法线角度过大,则烘焙时可能造成失真。因为一般说来尽量均匀地贴着高精度模型才有利于保真。不过如果高模本身预期硬边,则低模对象的对应硬边当然是合理的.

参考:
http://www.terathon.com/code/tangent.html
http://wiki.polycount.com/NormalMap/
http://www.bencloward.com/tutorials_normal_maps10.shtml
http://www.haogongju.net/art/910932
< Iterative Parallax Mapping with Slope Information >