Shader編程學習筆記(十三)—— 3D數學基礎1 - 座標系


1、引言

  從這一篇開始瞭解一些3D數學知識,這一片主要是關於座標系的。本篇涉及知識點:

  • 模型座標系
  • 世界座標系
  • 攝像機座標系
  • 屏幕投影座標系

2、各座標系介紹

2.1、2D中的模型座標系

在這裏插入圖片描述
  在2D中沒有模型之間相對位置的變化,此時無需考慮多個物體之間相對位置關係的變化。

2.2、2D中的世界座標系

  當在2D中有多個遊戲物體時就要考慮多個物體相對位置的關係,這就用到世界座標系。
在這裏插入圖片描述
  這裏演示了一個遊戲物體相對世界座標發生的偏移和旋轉。

2.3、3D中的模型座標系

在這裏插入圖片描述
  上圖所示是一個3D模型座標系。當取+z時爲左手座標系,-z爲右手座標系!unity採用的是左手座標系。而DMax使用的是右手座標系,所以當輸出的時候就要考慮到以何種方式輸出以適應遊戲引擎的座標系。這裏的座標原點位於cube的幾何中心,如果我們對unity的模型有所瞭解就知道,unity中所有的cube的模型座標處於(-0.5,+0.5)之間,因此我們很容易就知道這個cube的所有頂點位置的模型座標。

2.4、3D中的世界座標系

在這裏插入圖片描述
  我們遊戲中的物體不可能剛好都處於世界座標系的原點。就像上圖中的cube放入遊戲場景中,不一定就在左下角的世界座標系的中心位置。
  在unity中創建下面場景,隨意創建一個cube,並reset它的位置。
在這裏插入圖片描述
  此時transform組件下的position、rotation、scale都爲默認值。我們此時可以認爲模型座標和世界座標重合了。我們可以通過切換,上圖中左上角的Global和Local按鈕來觀察,座標並沒有變化。此時如果我們隨意旋轉一下cube模型的Y,再次切換觀察發現座標是不同了,此時模型座標就和世界座標沒有重合了,此時模型繞着Y軸做了一定的旋轉。
在這裏插入圖片描述

在這裏插入圖片描述
  這裏我們把世界座標系做了一定的旋轉。在遊戲開發中我們經常需要旋轉一個遊戲物體,此時有兩種辦法,一種是旋轉游戲物體的頂點,一種是旋轉座標系。實際種我們常常使用的旋轉座標系來實現的。

2.5、攝像機視座標系

在這裏插入圖片描述
  上圖中藍色的座標系即爲攝像機視座標系可以認爲在藍色座標系的原點架設一個相機,視野方向向上的綠色範圍即爲可視範圍。也最大視野距離超過了就看不見了。事實上它的視野是一個視錐體的範圍。GPU只會渲染視野內的遊戲物體超出了就不會渲染。這裏是由底層決定的,這裏我們只需瞭解即可。

2.6、屏幕座標系

在這裏插入圖片描述
  屏幕座標系在3D遊戲中也叫屏幕投影過後的座標系。它有一個近大遠小的特性。原理類似於小時候大家熟悉的小孔成像的原理。由於屏幕是一個2D的平面,而是現實世界是一個複雜的3D環境,3D遊戲也是如此,在處理3D圖像時,需要顯示在2D屏幕上就要處理Z方向上的深度,怎麼樣顯示在屏幕上使我們的肉眼能夠感受到一個3D的一個近大遠小的世界,這個三個世界就是一個投影座標。unity中還有一個正交投影,沒有近大遠小的變化,這裏可以稱爲正交投影,主要用在2D遊戲的製作中。

3、總結

  綜上所述我們在屏幕中看到的遊戲物體都經歷了或多或少的轉換才得以顯示!實際上游戲物體的變化是很多的,不僅有位移,還有旋轉、鏡像、縮放…等的轉換。好在有矩陣這個工具可以把這些轉化統一到一個矩陣中去。那麼遊戲物體從:模型座標—>世界座標—>
攝像機座標—>屏幕座標需要經歷三次轉化,我們在unity的shader編碼中稱爲MVP。

4、結束語


The End
  好了,今天的分享就到這裏,如有不足之處,還望大家及時指正,隨時歡迎探討交流!!!


喜歡的朋友們,請幫頂、點贊、評論、收藏、轉發,您的肯定是我寫作的不竭動力!

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