为什么将模型视图矩阵的转置逆用于转换法向量?


22

当渲染3D场景并将变换应用于对象时,必须使用模型视图矩阵的转置逆来变换法线。因此,对于法线,modelViewMatrix M,变换后的法线n 'nMn

n=(M1)Tn

变换对象时,很明显需要对法线进行相应的变换。但是,为什么从数学上讲这是对应的转换矩阵呢?


如果模型矩阵由平移,旋转和缩放组成,则无需进行反转置即可计算法线矩阵。只需将法线除以平方比例,再乘以模型矩阵即可。您可以将其扩展到具有垂直轴的任何矩阵,只需为要使用的矩阵的每个轴计算平方比例即可。我在博客中写了详细信息:lxjk.github.io/2017/10/01/Stop-Using-Normal-Matrix.html
Eric

Answers:


22

这是需要逆转置的简单证明。假设我们有一个平面,由平面方程定义,其中Ñ是正常的。现在我想用一些矩阵M变换这个平面。换句话说,我想找到一个新的平面方程ñ '中号X + d ' = 0是满足了完全相同的X满足前面的平面方程值。nx+d=0nMnMx+d=0x

为此,将两个平面方程式设置为相等就足够了。(这放弃了任意缩放平面方程的能力,但这对论点并不重要。)然后我们可以设置并将其减去。我们剩下的是:d=d

nMx=nx

我将使用矩阵表示法(将向量视为1列矩阵)表示的点积来重写此代码:

nTMx=nTx

现在要满足所有 ,我们必须具有:x

nTM=nT

现在求解来讲ñnn

nT=nTM1n=(nTM1)Tn=(M1)Tn

快点!如果点由矩阵M变换,则平面法线必须通过M的逆转置变换,以保留平面方程。xMM

这基本上是点积的属性。为了在应用转换时使点积保持不变,必须对两个向量进行点缀,但必须以相应但不同的方式进行转换。

数学上,这可以通过说出法线矢量不是一个普通的向量来描述,但事情称为covector(又名协变矢量,双载体,或直链形式)。协矢量基本上定义为“可以用矢量点缀以产生不变标量的事物”。为了实现这一点,它必须使用在普通矢量上运行的任何矩阵的逆转置进行变换。这适用于任何数量的尺寸。

请注意,特别是在3D模式下,双向量类似于辅助向量。它们并不完全相同,因为它们具有不同的单位:协矢量的长度单位为倒数,而双矢量的长度单位为平方(面积),因此它们在缩放时的行为不同。但是,它们的定向方式确实相同,这对于法线很重要。我们通常不关心法线的大小(无论如何我们总是将其归一化为单位长度),因此我们通常不必担心双矢量和协矢量之间的差异。


2
很棒的解释。但是,在2点上有点快,您会喜欢更多细节:1.如何从点积跳到矩阵积?2.在最后引用部分的第2行和第3行之间,发生了什么(n对我来说从左向右神奇地移动了)
v.oddou

4
1.如果a和b是相同维的列矩阵,则(a ^ T)b与点(a,b)相同。自己尝试一下数学!2.(AB)^ T =(B ^ T)(A ^ T),并且(A ^ T)^ T = A有关更多矩阵身份,请查看Matrix Cookbook
Mokosha

3
@ v.oddou是的,Mokosha是正确的。点积可表示为将1×n矩阵(行向量)与×1矩阵(列向量)相乘; 结果是一个1×1矩阵,其单个成分是点积。列向量的转置是行向量,因此我们可以将a·b写为a ^ T b。对于第二个问题,转置矩阵乘积等效于转置单个因子并反转其顺序。
内森·里德

完美,现在一切都清楚了。都谢谢
v.oddou

@NathanReed(天哪,这使我回到了PowerVR的早期时代,我们使用飞机为大多数事物建模)。可能还值得一提的是,出于优化目的,如果您的矩阵Mr只包含旋转(即正交),则Inverse(Mr)= Transpose(Mr),因此Trans(Inverse(Mr)= _ Mr_。您也可以走捷径与翻译部分,如果你知道这个比例是一致的FWIW在SGL的PowerVR图形库,我们用来保持布尔跟踪变换矩阵是否具有这些特性,以节省成本与正常转换。
西蒙F

6

这仅仅是因为法线并不是真正的向量!它们是由叉积创建的,将产生双向量,而不是向量。代数在这些坐标上的工作方式大不相同,几何变换只是行为不同的一种操作。

埃里克·伦盖尔Eric Lengyel)在Grassman Algebra上的演讲是了解更多有关此内容的重要资源。


法线也称为伪向量。作为概括和经验法则,由叉积(例如飞机)产生的所有内容都将以类似的方式进行转换。
马提亚斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.