正交投影和透视投影矩阵推导

简介

投影是把不同z值(不包括z值大于摄像机z值的部分)的物体投射到z=n(也就是near)的平面上。
投影的关键是找到投影后的点和投影前的点的关系。

这张图片展示了透视投影(左)和正交投影(右)的不同。

正交投影

只需将长的立方体映射成标准正方体:

  1. 将中心平移至原点
  2. 缩放至[-1,1]

=>


透视投影

  1. 将视锥挤压成立方体
  2. 做正交投影

那么关键在于确定

首先,从侧面根据相似三角形可以得出

即:

根据上式可以确定的部分值:

接下来便是确定剩下的值。这些值可以通过下面的已知条件来计算。

  • 任意在z=n平面上的点在投影前后保持一致
    即:

    那么可以得出第三行的前两个值。

  • 任意在z=f平面上的点的z值在投影前后保持一致
    这里用中心(0,0,f,1)来算,因为中心在变换前后都会是中心。
    即:

    那么:

联立(1)(2)式可解出:


所以:



图片来源:GAMES-Webinar