在计算机图形学中,法线(normal) 是表示表面方向的向量。它在光照、阴影、碰撞检测等领域有着重要作用。本文将介绍如何在模型变换过程中正确变换法线,确保其在光照计算中的正确性,特别是法线与顶点的变换问题。
1. 法线与切线的基本概念
法线(Normal Vector)
法线(或法矢量)是指垂直于曲面或平面的向量。在3D图形中,通常每个顶点会携带一个法线信息,用于描述该点表面朝向。这对于计算光照等效果至关重要。若变换了模型的位置、旋转或缩放,法线也必须做相应的变换,以保持其正确性。
切线(Tangent Vector)
切线是指沿着表面方向的向量,通常与纹理空间对齐,并且与法线垂直。切线的主要作用是帮助在纹理坐标系中计算如法线贴图等效果。切线通常是通过相邻两个顶点的差值计算得到的,因此它随顶点的变换直接受顶点变换矩阵影响。
2. 顶点变换与法线变换
顶点变换
当我们进行模型变换时,通常需要变换模型的顶点。这些变换包括平移、旋转、缩放等。顶点变换使用变换矩阵(如模型矩阵、视图矩阵、投影矩阵等)来进行计算。例如,若使用一个矩阵 M 变换顶点 V,变换公式为:
V′=M×V<