|
公式编辑器用的不习惯,排版有点乱,见谅。
--------------------------------------------
因为,模型在进行左边变换的时候,可能包含缩放操作。
如果unity_ObjectToWorld,在当前模型计算时存在 不等比的缩放,那么法线方向将不再与切线方向垂直(图中右侧可以理解为,直接用unity_ObjectToWorld,可能导致的结果)。如图所示。
此时 要得到法线那么就要保证变换过后的法线 N' 与 变换过后的切线方向T’依然垂直。
由于N ·T = 0, 所以应满足N' ·T' = 0。
切线方向了来自于模型顶点的位置,所以假设T' = MT,M相当于 unity_ObjectToWorld。
那么设N'=GN;
则(GN) · (MT)=0 ;解出G即可。由于(GN) 和 (MT) 实际上都是列向量。则 可将 GN转置。得到
去括号,变为连续的矩阵乘法
N·T=N·T=0,则要满足上面的式子,需要
左右除M,然后 转置之后得到
即,法线变换矩阵是顶点变换矩阵的逆矩阵的转置。这就是上面的答案了。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|