M:模型变换(model trans)

就是把3d点坐标统一在一个世界坐标系下,通过仿射变化(平移+旋转)实现。

C:相机变换(camera trans)

视图变换就是把相机所在位置变换为世界坐标原点。

就是说这时候,摄像机看向-z轴方向,相机的y轴与世界坐标系的y轴重合。

相机坐标系

相机坐标系

相机变换的步骤:首先通过平移变换,把相机坐标$(p_x,p_y,p_z)$移动到原点,再旋转使得相机坐标系和世界坐标系重合。

平移矩阵M如下。

image.png

这个时候相机坐标系和世界坐标系的原点已经重合,现在需要旋转把相机朝向$l$变为$(0,0,-1)$,y轴方向向量转换为$(0,1,0)$。但是要旋转多少度呢?

但是,我们知道如何将 $(0,0,-1)$ 变为相机朝向$l=(l_x,l_y,l_z)$,$(0,1,0)$ 变为y轴方向向量$u$,也就是上述旋转的逆变,我们假设我们原先要求的矩阵为R,那么它的逆变换矩阵即为$R^{-1}$.

下面矩阵,实现了$(0,1,0)$变成相机y轴方向向量$u$,$(0,0,1)$变成了$-l=(-l_x,-l_y,-l_z)$方向。$(1,0,0)$变成了相机x轴方向向量也就是$l×u$

image.png

旋转矩阵为正交矩阵,转置就等于逆矩阵,因此,我们要求的旋转矩阵R如下:

image.png