投影矩阵网上推导一大堆,怎么构建矩阵,怎么运用透视除法等都有说,但说清楚为什么这样做的貌似不多。我现在尝试用矩阵乘法的本质去说明投影矩阵是怎么推导的。
以下向量统一用列向量表示法。
1.坐标转换
坐标的表达形式(Fundamentals of Computer Graphics, 4th page 135)
看上图,p在世界坐标系下的坐标值有两种表示法:
其中:
u,v是e坐标系下的标准正交基。
从图中可以看到,p在o坐标系下的坐标是(2.5,0.9),在e坐标系下是(0.5,-0.7)。
但按上面两个公式,算出来的值都是(2.5,0.9)。
我们把 的方程化为矩阵:
从矩阵可以看出(x,y)->(u,v)的转换关系。如下式:
那么,e坐标系下的坐标可由下式求的:
由于[u v]是正交矩阵,所以有:
说了这么多,目的是为了引出下面的推导,世界坐标转到摄像机空间坐标。
上式可写为:
2.摄像机矩阵推导
先明确一点:这里说的摄像机矩阵是指世界空间到摄像机的矩阵。
摄像机空间的三个基分别是向量right,up,look,世界空间中的位置是P。以R表示摄像机right向量,U表示up向量,V表示look向量,我们的目的是把R,U,V三个向量分别转换到x,y,z向量。
由于这个向量比较难转换,我们换种思路,把x,y,z轴转到RUV的矩阵是:
由于该矩阵是正交矩阵,那么有
回想一下,在空间中绕一点P旋转,是不是,可以看成先把P移到原点,然后旋转,再移动回P点上。
而摄像机空间,是把摄像机的坐标移动到原点,再把各个轴旋转到xyz轴上。
假设摄像机世界坐标是P,矩阵如下: