图形学中的透视变换

************************* 点的透视投影

座标系如下所示。右手系xyz座标。z的正方向和眼睛看的方向相反,也就是说一个点的z座标越小,距离相机越远。


把P投影到视平面上一点(x*, y*),N是视点到视平面的距离。由相似三角形可得:

  

所以,

1)

注意这里的Pz < 0。 当 |Pz| 不断变大时,即目标越来越远时,(x*,  y*)到视平面中心的距离越来越小。


**************************  直线的透视投影

 设直线 p(t) 过点P,即 p(t)=P+t*(cx, cy, cz) 把 p(t) 点代入(1)式得

不妨设cx<0 cy<0cz<0,即直线上的点P(t) 随着t增加,向远处移动。当t趋于无穷大时,

该极限点称为灭点


************************** 透视变换

投影是一个降维的过程,最后把三维物体投影到视平面,只需要确切的xy座标。z座标是被“扔掉”的。所谓的“扔掉”只是说最后得到的图像中看不出有z,但实际上,深度z是用于计算遮挡问题的。所以,事实上z不需要确切的值,只需要相对大小反映深度信息即可。---> 伪深度

可以取

(2)

给定近平面到视点距离N,远平面到视点距离F。系数 a b 的作用是把视景体长度F-N 映射到指定范围,如[-1, 1]


现在我们的想法是,可不可以将(2)式右边化为齐次座标下的矩阵相乘的形式,即 M*(Px,Py,Pz,1)^T 这样以来,所有的座标变换、投影都可以用矩阵相乘来完成。只要算出最后的 座标变换+投影 对应的矩阵,三维空间的点到视平面的映射,乘以一个矩阵就了事啦!!

很简单,

这时候只要把结果中 前三个分量除以 -Pz,取前两个作为投影点的平面座标,第三个分量作为伪深度就可以了。 前面那个矩阵叫 透视变换矩阵,除以 -Pz的过程叫 投影除法

透视投影=透视变换矩阵 + 投影除法 + 去掉第z个分量


下面我们看看透视投影的意义。

将一个视景体里面的点 P(Px,Py,Pz) 经过透视投影(保留z分量) 得到新的点P‘,从视觉上看,原来的锥形视景体 变为了 长方体。我们可以对这个透视变换矩阵再做一些变换,比如平移,缩放,使得最后的长方体为单位立方体,并且中心在视点(相机座标系的原点)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章