Perspective transformation
透视变换Perspective Transformation
什么是透视变换?图片 透视变换是一个投影过程,其中透视变换就像将人的眼睛当做一个中心点,外部世界是一个大平面,在眼睛与这个平面之间形成一个椎体,然后将这个平面上的内容投射到眼睛内。
为什么变换之后的空间被称为裁切空间?裁切就是把不需要的部分去除掉,就是这幅图片中一样,投影平面在左侧
而在投影中心另一侧的右侧的点我们是不需要的,假设这个点的坐标为
应用计算之后是
那么这个计算过程是如何进行的呢?根据相似三角形

Figure 1 (从P投射到P')
我们有
其中,由于我们的摄像机是看向方向的,所以在计算的时候前面要加号,这就是式子中的值为,计算是为

Look at the projection from another aspect
步骤
假设我们有一个矩阵
我们先让坐标分量等于,这样计算后的就等于,就可以满足如Figure 1中的
接下来,再调整分量从
这样一来,当除以分量从齐次转三维中的点时,除以分量相当于除以了分量,经过这样调整后我们有
其计算过程正好是我们想要的
其中, , 接下来我们就需要详细计算每个部分了
计算投影点的和坐标,将范围映射到[-1,1]
将投影点的z坐标重新映射到范围[-1,1]
(我们根据齐次转三维点时, 这三个分量都要除以分量,我们有
其中和对无影响),则上一步骤中的矩阵可以设为
其中A和B是我们要求的,则可以列出等式
注意这里的是中的,而不是这个矩阵中的分量
再根据我们已知正好落在近平面时应当等于,正好落在远平面时应当等于, 我们可以列出式子
(也可以映射到[0,1]范围内)
补充资料
- 关于
链接: https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/projection-matrices-what-you-need-to-know-first
-
为什么除以了呢?投影过程中的相似三角形中的比例关系
-
关于透视矩阵中的齐次项的
链接: https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/building-basic-perspective-projection-matrix
将原来透视矩阵中的变为之后, 就说当我们用这个透视矩阵的分量乘以一个齐次点
时,我们有
也就是说,这个齐次点的值经过矩阵计算之后从之前的变为了,同时,齐次点变为三维点时需要经过,此时这样就有
- 关于透视矩阵中的项的
链接: https://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/building-basic-perspective-projection-matrix
因为摄像机是朝向方向的,所以摄像机前所有的点的坐标都是负的,这就是为什么【资料1】中
中的前方带有负号
透视变换矩阵
或
(注意其中两者之间的负号)
则我们有
其中
计算并验证一下,假设,公式
代入和并计算得
其中和则得到结果