18.5 在切线空间和物体空间之间变换
现在,我们在网格的每个顶点上都有一个正交TBN基,而且还有相对于网格物体空间的TBN向量坐标。所以,我们现在可以得到一个相对于物体空间坐标系的TBN矩阵,通过该矩阵我们可以将坐标从切线空间变换到物体空间:
由于该矩阵是正交矩阵,它的逆矩阵和转置矩阵相同。所以,从物体空间到正切空间的坐标转换矩阵为:
为了在着色器代码中进行光照计算,我们希望将法线向量从正切空间变换到世界空间。一种实现方式是,先将法线向量从正切空间变换到物体空间,然后再从物体空间变换到世界空间:
nworld = (ntangentMobject)Mworld
不过,矩阵乘法满足结合律,所以我们可以把它改写为:
nworld = ntangent(MobjectMworld)
注意
其中,Tʹ = T•Mworld、Bʹ = B•Mworld、Nʹ = N•Mworld。这样,法线向量可以直接从正切空间变换到世界空间。我们只需要描述在世界空间中的TBN基,就可以将法线向量从物体空间变换到世界空间。
注意:我们只对向量进行变换(不考虑点的变换)。所以,我们只需要一个3×3矩阵。前面讲过,仿射矩阵的第4行用于平移,但是我们在这里不需要平移向量。
文件下载(已下载 1083 次)发布时间:2014/8/23 下午7:51:50 阅读次数:4405