众所周知:
对法线进行变换,需要用变换矩阵M的逆转置,即
这个在lightinghouse上有推导:The Normal Matrix
本文先给一个更直观的推导,然后讲它的局限性和伴随转置。
一,推导
引理:若两向量垂直,其中一个缩放S,另一个缩放
证:设
则
欲解决如下问题:
矩阵M将
解:设
现在来构造N到N'的变换过程,根据引理知,只要照抄
所以
又因为
(旋转矩阵逆等于转置
所以
注:
(1)一般情况下不能保证向量经
(2)如果
(3)如果
二,局限性
前文我们刻意隐瞒了一个问题:如果M不可逆怎么办。
这是有可能的,因为
如果缩放矩阵
前面的引理“若两向量垂直,其中一个缩放S,另一个缩放
所以,用M的逆转置矩阵作为法线变换矩阵是有局限性的。
那么能否构造出对任意M都适用的法线变换矩阵呢?
答案是可以,M的伴随转置矩阵
实际上,将前面推导过程中的“逆”都替换成“伴随”,稍加修改就能通。
补充:
求伴随矩阵需要计算所有元素的代数余子式,比较繁琐。搜到个在线的伴随矩阵计算器,而且支持符号运算:
伴随矩阵计算器 - Symbolab
三,从逆转置到伴随转置
结论:可以用M的伴随转置作为法线变换矩阵,即
推导:
引理:若两向量垂直,其中一个缩放S,另一个缩放
证:设
则
欲解决如下问题:
矩阵M将
解:设
现在来构造N到N'的变换过程,根据引理知,只要照抄
所以
又因为
(根据伴随矩阵与逆矩阵关系及旋转矩阵逆等于转置,有
所以
由于旋转矩阵
常数因子
故取
总结:
(1)无论M是否可逆,含有何种缩放,都可以用
(2)如果M可逆,无论含有何种缩放,都可以用
(3)如果M无缩放,则M必定可逆,可直接用M作为法线变换矩阵,也无需单位化。
(4)如果M只有等比缩放,且不为零矩阵,则M必定可逆,可直接用M作为法线变换矩阵,需要单位化。或者如果知道缩放系数k的值,用