关于三维空间法线变换的问题,之前就有看到过,但是一直也木有注意,普通的三维空间中的法线变换还是直接使用模型的变换矩阵来进行。但是,近来又看到了一些这方面相关的东西,因而总结一下。
已经知道不能直接用模型变换矩阵来变换Normal,比如使用某含有非一致性缩放(在x,y,z方向上进行不程度的拉伸)的变换矩阵来变换一球体,则可能得到如下列图示的结果:


左图为原始球体及其表面上的法向分布(2D投影后);中间为直接使用变换矩阵操作后的法向分布,但注意其明显与表面不垂直;右图为正确变换后的法向分布。
为什么直接变换不正确呢?网上有多种说明版本,但是对比了一下感觉还是PBRT上的解释比较好一些。这里假设某一点处的法向量为n,切向量为t,由两者在曲面上的垂直关系可知:

本文探讨了在3D图形中,为何不能直接使用模型变换矩阵进行法线变换,原因是非一致性的缩放会导致法线方向错误。通过数学推导,解释了使用逆转置矩阵来变换法线以保持其与切线垂直的关系。还提到了在不可逆矩阵或仅考虑旋转时的处理方式,并指出在三向一致缩放的情况下,可以直接用变换矩阵进行法线变换。对于建模工具开发,处理任意缩放变换是关键问题。
最低0.47元/天 解锁文章
5536

被折叠的 条评论
为什么被折叠?



