- 在顶点着色器中,对顶点从模型空间转换到世界空间的矩阵用M来表示的话,那对法线是否也能同样进行转换呢?
答案要看你的M里面涉及了怎样的平移、旋转和缩放。
思考过程
-
我们先要知道顶点是否和法线是同一类(同一类的才能进行相同的转换)。而很明显,顶点代表的是一个点,在齐次坐标系下(x,y,z,1),法线代表的是方向,在齐次坐标系下(x,y,z,0)。两者不是同一类。如果你问为什么点是1,方向是0,先补补知识…
-
尝试一下呢?如果对点和方向同时进行平移,点经过平移后变成了一个新的点,这个新的点具有了不同的含义。而方向经过平移,还是原来那个方向,就好比你开车一直笔直朝着前面开,你的方向并没有改变。
-
我们知道一个4x4的变换矩阵,其平移的数据存放在第4列中即a14、a24、a34。而我们知道法线最后求得齐次形式是(x,y,z,0),所以很明显变换矩阵的第四行和第四列都不会对法线产生影响(脑中思考下)。
-
那我们只需要考虑变换矩阵的前3x3就行了咯。那其实就只剩旋转和缩放了,先看缩放会不会影响。如果进行非统一变换,例如:(1,2,1),法线将不会与几何体表面垂直,大概就是下图的含义,如果要垂直,则需要其缩放的逆矩阵(2,1)即可(自行脑补下)。
-
旋转矩阵没有影响,因为其是正交矩阵
我们大概可以确定在一些情况下,我们不能使用顶点的变换矩阵M套用至法线上。
法线变换矩阵推导过程
上面的毕竟也不是特别严谨,还是网上查阅相关资料后把证明过程自己推导了一遍。
综上,对于一开始提出的问题,如果变换矩阵里只涉及了旋转,因为旋转是正交矩阵,其特性是逆矩阵也是转置矩阵,所以不会发生影响。其余情况我们都不能直接使用