18.5 在切线空间和物体空间之间变换

现在,我们在网格的每个顶点上都有一个正交TBN基,而且还有相对于网格物体空间的TBN向量坐标。所以,我们现在可以得到一个相对于物体空间坐标系的TBN矩阵,通过该矩阵我们可以将坐标从切线空间变换到物体空间:

Mobject=[TxTyTzBxByBzNxNyNz]

由于该矩阵是正交矩阵,它的逆矩阵和转置矩阵相同。所以,从物体空间到正切空间的坐标转换矩阵为:

Mtangent=Mobject1=MobjectT=[TxBxNxTyByNyTzBzNz]

为了在着色器代码中进行光照计算,我们希望将法线向量从正切空间变换到世界空间。一种实现方式是,先将法线向量从正切空间变换到物体空间,然后再从物体空间变换到世界空间:

 nworld = (ntangentMobject)Mworld

不过,矩阵乘法满足结合律,所以我们可以把它改写为:

nworld = ntangent(MobjectMworld)

注意

MobjectMworld=[TBN]Mworld=[TBN]=[TxTyTzBxByBzNxNyNz]

其中,Tʹ = TMworldBʹ = BMworldNʹ = NMworld。这样,法线向量可以直接从正切空间变换到世界空间。我们只需要描述在世界空间中的TBN基,就可以将法线向量从物体空间变换到世界空间。

注意:我们只对向量进行变换(不考虑点的变换)。所以,我们只需要一个3×3矩阵。前面讲过,仿射矩阵的第4行用于平移,但是我们在这里不需要平移向量。

文件下载(已下载 1083 次)

发布时间:2014/8/23 下午7:51:50  阅读次数:4405

2006 - 2025,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号