現代計算機圖形學入門-L4-變換.2

Viewing Transformation(觀測變換)

一.View/Camera Transformation(視圖變換)

視圖變換主要包含模型變換和視圖(攝像機)變換,統稱為視圖變換。

什么是視圖變換?

模型-視圖-投影變換,簡稱“MVP變換”

  • M:model transformation
    • 設置好場景
    • ex: 選好地方人擺好姿勢
  • V:view tranforamtion
    • 設置好Camera的look at方向和up方向
    • ex:找到一個角度放置照相機
  • P:projection tranformation
    • 將camera看向的3d內容轉換為2d畫面
    • ex:拍照

model/view變換常常同時進行,由下方視圖變換章節可知,做視圖變換時根據相對靜止,模型也同時應用變換。

如何做視圖變換?

1.定義照相機

  1. postion 定義相機的位置
  2. look-at/gaze direction 定義相機看向的方向
  3. up direction 設定相機的up-direction

一個位置,兩個向量,則可以確定一個相機,以上則是觀測矩陣所需要的初始的定義。

2.觀察

前提:當物體與相機保持相對靜止時,相機與物體無論如何移動,觀察的結果不變。

因此,進行以下的處理:

  • (1) 處理:變換相機到標準中心:

    放在原點、up方向為向上的y軸,看向-z方向

  • (2) 模型隨相機一起運動

好處:簡化很多操作

  • 設相機在e點上,look at/gaze direction的方向為g,up方向為t
  • 現在需要把相機移動到原點,向量g旋轉到-z上,t旋轉到y正半軸上。

基本步驟:

  1. 平移,將e點移動到原點
  2. 旋轉g到-z方向
  3. 旋轉向上方向t到+y上
  4. 前面步驟完成后,自然而然地gxt的方向就在+x方向了。

上述步驟使用矩陣表示

  1. Tview 平移矩陣


  2. Rview 旋轉矩陣

由g,t,gxt旋轉到-z,y,x上矩陣難寫,可以利用旋轉矩陣是正交矩陣(正交矩陣的逆等于轉置)的特性:

  • 先求Rview的逆->Rview-1(即x,y,-z旋轉到gxt,t,g),
  • 再對Rview-1求轉置得到Rview。

二、Projection Transformatio(投影變換)

  1. 正交投影:假設相機拿到無限遠,近平面與遠平面完全一樣大小。

  2. 透視投影,frustum中內容成像到近平面上

1、正交投影<br />Orthographic projection

無近大遠小.


基本思想

  1. 設置camera在原點,gaze /look at方向為-z,up方向為+y
  2. 舍棄物體z值,使物體的z都等于0,至此所有物體都只在x軸跟y軸上,攝像機看到的就是x、y平面上的一張圖。
  3. 將物體都擠壓到規范正方形[-1,1][-1,1],這一步是約定俗稱的操作,為了方便后面的計算。
圖形學中的實際操作:
    1. 定義空間中的立方體,[lxr]x[b,t]x[f,n]。f<n,因為右手系,camera延著-z方向看
    1. 中心位于((r+l)/2,(t+b)/2,(n+f)/2)的立方體延著(-(r+l)/2,-(t+b)/2,-(n+f)/2)平移到原點。
    1. 將其給拉成一個[-1,1]的正則(canonical)立方體

數學上的表現

2、透視投影:<br />Perspective projection

符合人眼成像,近大遠小,平行線遠處會相交

基本思想:

  1. 將frustom擠壓成一個長方體
  2. 再做一次正交投影

如何擠?

定義:

  1. 在擠壓的過程中,近平面任何一個點的x,y,z值永遠不會發生變化。

  2. 在擠壓過程中,遠平面上的Z值不會發生變化。

  3. 擠壓過程中,遠平面的中心點也不會發生變化。

擠壓過程:

  1. 從側面觀察,根據相似三角形可得y'=(n/z)*y


  2. 同理可得x’


  3. 結果的點可以寫成一個齊次坐標矩陣,然后同乘z后,仍然表示同一個點


  4. 寫出變換矩陣表達式,原來的點經過變換矩陣后,得到第3步表示的點


  5. 由第4步,可以反推變換矩陣的形式如下:


    • M的第3行一定與z'有關系。


  6. 根據前述的定義:

  • 近平面上的點x、y、z值不變。取點(x,y,n),得到結果后同乘n


    觀察結果第3行=n*n,與x、y無關,因此M前兩項必為0:M的第3行=(0,0,A,B)

  • 遠平面上的點的z值不變。取點(0,0,f),代入上述求到的(0,0,A,B)——變換矩陣第三行

綜上兩個等式,變換矩陣求解完畢


課后思考:

在將frustum擠壓為Cuboid的過程中,已知遠平面和近平面的Z'不變,那么近平面與遠平面之間的z,z’相對z如何變化,更近了還是更遠了?

  • 解答
    設任意點(x,y,z)經M變換



    注意點:camera在原點看向-z方向,所以n+f<0

綜上,z’相對z減小,更接近遠平面了

小結:

本節課主要講述觀測變換(Viewing Transformation)——三維的場景轉換為二維的畫面。觀測變換包括:

  1. 視圖變換(M、V)
  • 視圖變換包含模型變換(Model Transformation)與視圖變換Viewing Transformation,兩者通常同時進行,統稱為視圖變換。
  • 這一步的目的是將攝像機擺放到look at/gaze方向為-z方向,up為+y,位置為原點的方向,包含平移與旋轉過程,物體跟隨相機同步變換。
  • 變換矩陣最終實際上是作用到物體上,因為應用到物體后,我們就知道這時攝像機就已經擺放到指定位置。
  • 求旋轉變換矩陣的過程中根據正交矩陣的性質,可以通過求逆矩陣的方式計算,計算非常方便。
  1. 投影
    投影分為:
  • 正交投影


    • 求將立方體映射到[-1,1]x[-1,1]x[-1,1]的標準立方體(canonical cube)的變換矩陣。
    • 無近大遠小,工程制圖應用多。
  • 透視投影


    • 先將四棱錐frustum“壓縮成”立方體
    • 再進行正交投影。
    • 近大遠小,更符合人眼

更多

現代計算機圖形學入門-L3-變換.1

現代計算機圖形學入門-L2 ——線性代數

現代計算機圖形學入門-L1

另辟蹊徑的"一鍵打包"

Web/Native資源加密方案

Spine換裝方案多平臺解析

基于creator3.0的3D換裝

CocosCreator3.4.2原生二次開發的正確姿勢——手把手教你接SDK

在編輯器上聲明自定義數據數組

包體優化指南

不規則3D地形行走

快速實現3d拋物線繪制

奇形怪狀-不規則按鈕實現

關于作者

我是羽毛,一名游戲研發工程師,一名野生攝影同學。我的公眾號主要分享自己的一些游戲項目開發過程中的功能總結及日常開發筆記。也希望能通過平臺的交流,與更多有想法的同學交流認識,共同成長。

歡迎大家在日常開發過程中,如果覺得有需要討論解決、分享或者探討的內容,在公眾號后臺或者文章留言處給我反饋,提供寫作的方向,從另一個角度也盡量讓寫作內容更貼近大家的需求以及痛點,在此謝謝各位同學.

另外羽毛也提供付費技術咨詢的服務,有需求的同學可以公眾號后臺私信添加微信。

今日技能你學廢了嗎?

<div align ="center">
<h2>更多精彩歡迎關注微信公眾號“羽毛不會飛”</h2>
<img src="https://upload-images.jianshu.io/upload_images/21178773-2e5d33fde1edc63e.png" width="80%"/>
<img src="https://upload-images.jianshu.io/upload_images/21178773-ebca0bcc56f0bd3e.png" />

</div>

本文由mdnice多平臺發布

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容