图形学--切线空间
这里简单描述定义以及用途
一、切线空间是什么?
切线空间 (Tangent Space) 与 世界空间 (World Space) 和 观察空间 (View Space) 一样,都是一个坐标空间,它是由顶点所构成的平面的 UV 坐标轴以及表面的法线所构成,一般用 T (Tangent), B (Bitangent), N (Normal) 三个字母表示,即切线,副切线,法线, T 对应 UV 中的 U, B 对应 UV 中的 V
切线空间相切于模型网格的一个顶点,并且对于切线空间拥有三个向量:
T:即Tangent,是该顶点的一个切线,一个顶点有无数个切线,但一般这个表示的是对应着UV坐标(纹理坐标)U轴方向相同的切线。
N: 也就是Normal,是该顶点本身的法线,相当于切线空间的Z轴。
B:即Bitangent,也可以叫做副法线,是由T和N叉乘得到的向量,他与UV坐标的V方向相同。
二、为啥需要切线空间?
这里要通过法线贴图来讲述。
绝大部分的法线贴图是偏蓝色,因为法线贴图中存储的法线向量大部分都是朝向或者接近 z 轴的,即 (0,0,1),换算到 RGB 中,就是偏蓝色,这就是切线空间 (Tangent Space)下的法线贴图。假设一个立方体6个面都一样,每个面上都有法线向量(方向不一样),如果只用同一个法线贴图,而且法线贴图中采样出来的法线都趋近于(0,0,1),这样就会导致一些面处理光照时会产生错误的光照结果。所以要找到一种即使有空间变换也可以得到世界坐标正确的法线向量的一种方法,就可以让所有面共用一个法线贴图,这就需要切线空间下的法线贴图,也就需要通过TBN来计算出切线空间。