要将模型坐标系点转换为世界坐标系,请使用模型矩阵。 但是,要将模型坐标系中的法向量转换为世界坐标系,不能直接使用模型矩阵。
用二维平面的变换来说明:
图中的线段AB已经过缩放转换。 左图中点a=(0,1 ) b=(1,0 ),法向量n=(1,1 ); 如果将右图的y坐标值放大到两倍,则法线向量n=(1,2,2 ),向量t '=a-b=(-1,2,2 ),法线向量n’不再垂直于线段AB。
同样,如果XYZ轴在Model变换中按不同比例缩放,则可以看到原始法线向量可能不再垂直于切平面。 那么,如何换项链呢?
相切向量和该点的法向向量包括:
()
通过转换4x4模型矩阵获得的法向量如下:
())是
可得:
() )为
() )为
从中得到:
因此,为了使模型空间中的法线矢量成为世界空间,需要用原Model矩阵的逆转置矩阵进行转换。