法线矩阵和TBN矩阵

法线变换矩阵

经过模型变换后,法线也要跟着一起变换。假设物体发生了缩放形变,如果对法线应用相同的变换,可能会得到错误结果:


三角形插值

2D平面中三角形

对于2D空间三角形,假设三个顶点分别为\(\mathbf{a} ,\mathbf{b},\mathbf{c}\)。则2D空间任意点都可以被下式表示出来:

\[ \mathbf{p}=\mathbf{a}+\beta(\mathbf{b}-\mathbf{a})+\gamma(\mathbf{c}-\mathbf{a})\tag{1} \]

可以理解为\(\mathbf{a}\)为起点,向量\((\mathbf{b}-\mathbf{a})\)\((\mathbf{c}-\mathbf{a})\)构成的基张成一个平面空间。


三维空间中的旋转

在介绍旋转之前,先分析一下两个概念:旋转和方向。方向即一个单位向量;旋转用来描述一个方向如何变换到另一个方向。在3维空间中,使一个方向变换到另一个方向的旋转有无数种,因为变换后的向量还可以绕以自己为旋转轴轴旋转。这意味着将旋转说成是一个方向变换到另一个方向的过程是不严谨的。准确地说,旋转描述的是坐标系到坐标系的变换。在3维空间中,只知道一个方向会变换到另一个方向,是无法唯一确定一个旋转的(当然也是可以构造出满足条件的旋转的,比如指定一个上向量)。