Viewing and Projection

 

  Viewing和projection將一個三維的場景映射到render target的兩維空間。Viewing 就是將一個虛擬的照相機放置和定位在場景裏面。Projection就是將三維場景轉換成一個兩位面。

   Direct3D 應用程序使用了平面幾何projection.  物體的平面幾何投影由線組成,稱作projector,它穿越物體的每個頂點以及投影儀的中心。當投影儀中心是有限的時候,每條從中心發起的projectors,都會產生透視projection. 當投影儀中心無限大時,所有的projector則是平行的,這樣就產生了平行投影。被投影的物體將會落在投影平面上。每個被被映射的頂點將落在projector和投影平面的交點上。

   平面幾何投影在藝術和工程製圖上有很久的歷史。透視projection產生的圖片將與人眼所看到的物體更加相似,並且在外觀上更加真實。然而,它扭曲了不平行於projection平面的線以及線之間的夾角。這種扭曲使越靠近相機的物體越大。這種扭曲就是非統一的透視縮短。

   平行projection能夠保留線的相對長度和夾角。這種屬性將使它能夠用在工程製圖。一個物體的多個平行投影將能準確的描述一個物體的形狀,並且能直接從投影圖裏面標註機械製造尺寸。

   對於在三跟垂直軸裏面的物體,投影將能夠進一步分類。Projector的朝向,投影面以及一個物體主要座標軸定義了這個分類。平行投影還能夠被分成垂直和傾斜投影。垂直平行投影還可以分成axonometric ,isometric ,dimetric,trimetric。 Cavalier和cabinet則是通常的傾斜投影。 透視投影將被分成1 point, 2 point和3 point的透視投影。

   Direct3D將使用同次轉換矩陣來定義平面幾何投影。其他的投影也是可能的,但是Direct3D可能並不支持。場景裏面照相機的運動能通過改變照相機的參數來實現,照相機位置和朝向的變化,是通過改變view轉換矩陣。虛擬相機顯示出來的那部分場景是通過改變投影轉換矩陣來實現的。

 

Viewing Through a virtual camera

   Direct3D使用一個虛擬相機模型來構造場景的渲染,相機概念上是落在世界座標系的。相機指向一個特定的方向,稱作direction of gaze.  場景裏面相機的位置和朝向定義了一個相對世界座標的新的座標系。這個座標系被稱作camera空間,或者eye空間,就好像通過一隻眼睛去看。

  世界轉換後,所有的模型都在世界座標系裏面了。View 轉換再將世界空間裝換成camera 空間。camera空間將照相機放在原點,y向上增加,x 向右增加,z將指向視線的方向。

  在左手座標系裏面,z 值將隨着物體離相機的距離增加,增加x,就向右邊移動,增加y,將向上移動。注意:在camera空間,y是向上增加的,在屏幕空間,y是向下增加的。對Direct3D來說,照相機模型只是一個轉換矩陣,對一個應用程序,更加容易定用參數來定義一個照相機模型,然後從參數裏面產生轉換矩陣。

  簡單的照相機模型是把照相機放在C(Xc,Yc,Zc),照相機指向場景裏面的A(Xa,Ya,Za)。  相機朝向就是g = (Xa- Xc, Ya-Yc, Zz-Zc).  相機並且定義了一個向上的向量u. 使用這個模型,我們能定義一個轉換矩陣V。

 V = T(-C)Rg->zRz(@).  其中Rg->z是一個圍繞Z軸的旋轉矩陣。

 

平面幾何投影

一個平面幾何投影主要是通過它的投影面和投影儀的中心來確定的。

 

投影轉換

在計算機圖形學,我們對場景的動態視圖非常感興趣,主要是因爲場景裏面的物體和虛擬相機可以同時很自由的運動。在這種情況下,不同類別的平行投影或者透視投影的之間區別不是那麼重要,因爲場景裏面的物體可能在場景裏面的任意位置。

投影矩陣

至今,我們所接觸過的矩陣,還未使用矩陣最右邊的那一欄。這一欄是用在透視投影的。當使用這一欄的時候,計算出來的w將不是1,爲了將他轉換到笛卡爾座標,我們需要除以w,這樣經過projection轉換後,頂點的笛卡爾座標也相應改變了。

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