顶点是(x,y,z,1),法线的表示是(x,y,0),顶点是个点,法线是个方向。如果用用MV矩阵来直接变换法线,会造成法线的方向出错误。
法线变换:应该用变换矩阵的逆转置矩阵
- 假设Model space中的某条切线向量是T,法线向量是N。那么由他们是垂直的可得到:TTN=0
- 假设他们变换到Eye space中后分别是T’和N’。那么他们应该仍然是相互垂直的:T’TN’=0
- 假设切线向量和法线的变换矩阵为M、G。则有:(MT)T(GN)=0
- 进一步推出:TTMTGN=0
- 由于TTN=0,因此我们猜想MTG=0.因此:《注:我觉得这里该写 MTG=E. E:为单位矩阵》
- G=(M-1)T
- 即:应用于法线向量的变换矩阵是顶点变换矩阵的逆转置矩阵。
法线变换
最新推荐文章于 2023-02-06 11:31:59 发布