关于法线变换矩阵的思考_虎翼_百度空间

关于法线变换矩阵的思考。

                        

1,法线变换与顶点变换一致吗?

        看到很多demo上都是将法线与顶点乘以同一个矩阵进行变换,于是自己也就一直这么做。 最近重新温习渲染管线,发现原来两者的变换矩阵是不一样的(都是不求甚解惹得祸)。法线变换矩阵与顶点变换矩阵的关系推导如下:

(参考

考虑平面 n = [a, b, c, d] ,该平面任一点p = [x, y, z, 1] 满足下面条件:

nt p = ax + by + cz + d = 0

如果将整个空间进行R矩阵变换,显然点p的变换矩阵为R。设平面n的变换矩阵为Q,则有变换过后的点p1 及变换过后的平面n1

p1 = R p             n1 = Q n

显然,两者同样满足: n1t p1 = 0   => (Q n)t (R p) = 0 =>   nt Qt R p = 0

如果Qt R = I (单位矩阵)则有 nt Qt R p = nt I p = nt p = 0。故 有:

Qt R = I   => Qt = R-1 => Q = (R-1)t

也就是说向量变换矩阵,是对应顶点变换矩阵的逆再转置。

             

2,那些demo错了吗?

        话又说回来,难道平时看的那些demo都写错了?可是感觉两者效果也没啥差别啊。为了进行统一光照运算,我们需要将模型空间的法向量变换到世界空间或者摄像机空间。而这一系列的变换都可以分解为位移、缩放和旋转变换。 其实只要没有非等比例的缩放变换,法线变换与顶点变换的矩阵是相同的。

                            

1,位移变换矩阵T 不影响法线,因为法线的w分量为0。想想也明白,法线与具体位置是无关的。

2,旋转变换矩阵R 是正交矩阵。也就有旋转矩阵的逆等于其转置Rt=R-1

3,缩放矩阵S 是一个对角矩阵。若进行等比例缩放,不影响法线方向。

                        

设顶点变换矩阵 G = S*R*T.

则有对应法线变换矩阵K = (G-1)t = ( (S*R*T) -1)t

由于T 不影响法线,故,K = ( (S*R) -1)t = ( R -1 * S-1)t = (S-1)t *(R-1)t

又有 Rt=R-1 ,所以 K = (S-1)t *(Rt)t = (S-1)t *R = (St )-1*R = S-1*R

S为等比例缩放 K == R == S*R*T == G

也就是说 若为等比例缩放变换,则法线变换矩阵等价于顶点变换矩阵

所以平时我们只要在模型空间到世界空间不进行非等比例的拉伸,就可以直接统一用一个变换矩阵了



郑重声明:资讯 【关于法线变换矩阵的思考_虎翼_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——