- 齐次空间
要理解3d的齐次空间,我们先理解2d的齐次空间。
2d的齐次空间可以理解为三维空间上的向量在(x, y, 1)平面上的投影. 投影结果是(x/z, y/z, 1)

- 齐次矩阵
- 齐次矩阵能够对向量做仿射变换,也就是能够将平移加入到矩阵中,这是3*3矩阵做不到的。
- 而4*3矩阵虽然也能做仿射变换,但是不能求逆矩阵,因为不是方阵。
-齐次矩阵的透视投影
空间坐标与其投影到投影平面上的坐标的关系:
我们构造齐次矩阵来实现这样的计算

- 平截头体

这样构造矩阵,得到齐次向量,然后用x,y,z分量除以w分量就得到真实的(x,y,z).
真正的投影也是在这一步发生的。这个在shader里面做。

- 计算缩放系数
fov为90°的时候,就相当于透视投影的比例为1:1.当fov变动的时候,投影的比例也会跟着变动。
焦距越大,fov就越小,像在投影平面的比例就越大,这就是长焦镜头。
缩放系数和视场角有关系,最终会提现在x方向和y方向的缩放分量上。
计算缩放系数

透视投影矩阵
先看看构造好的投影矩阵

x,y方向的缩放:主要是将相机坐标系下的坐标
zoomx 在x方向的缩放值
zoomy 在y方向的缩放值
z方向缩放:主要是为了将z值归一化到-1到1之间
(f+n)/(f-n) 在z方向的缩放量
z方向平移:主要是为了将z值归一化到-1到1之间
-2nf/(f-n) 在z方向的平移量
|