圖形學中的透視變換

************************* 點的透視投影

座標系如下所示。右手系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‘,從視覺上看,原來的錐形視景體 變爲了 長方體。我們可以對這個透視變換矩陣再做一些變換,比如平移,縮放,使得最後的長方體爲單位立方體,並且中心在視點(相機座標系的原點)





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