简介
投影是把不同z值(不包括z值大于摄像机z值的部分)的物体投射到z=n(也就是near)的平面上。
投影的关键是找到投影后的点和投影前的点的关系。
这张图片展示了透视投影(左)和正交投影(右)的不同。
正交投影
只需将长宽高的立方体映射成标准正方体:
- 用将中心平移至原点
- 用缩放至[-1,1]
=>
透视投影
- 用将视锥挤压成立方体
- 用做正交投影
那么关键在于确定。
首先,从侧面根据相似三角形可以得出和
即:
根据上式可以确定的部分值:
接下来便是确定剩下的值。这些值可以通过下面的已知条件来计算。
任意在
z=n
平面上的点在投影前后保持一致
即:那么可以得出第三行的前两个值。
任意在
z=f
平面上的点的z值在投影前后保持一致
这里用中心(0,0,f,1)
来算,因为中心在变换前后都会是中心。
即:那么:
联立(1)(2)式可解出:
所以:
图片来源:GAMES-Webinar