[Unity3D學習]3D數學基礎之座標系



以前都是做2D遊戲,基本不關注數學方面的知識。現在學習unity了,很多概念都不懂。學生時代的東西,早還給老師了。當然我學習不好 = =!所以現在來補補。畢竟現在要做3D了。基礎的東西還是得懂。

下面是我看書的一些重點、我將其記錄下來。以後也方便自己溫習!

笛卡爾座標系 的定義 :

1、每個2D笛卡爾座標系都有一個特殊的點,稱爲原點(0,0)它是座標系的中心。

2、每個2D笛卡爾座標系都有兩條過原點的直線向兩邊無限延伸,稱爲,兩個軸互相垂直。

笛卡爾座標系定位

座標系是一個精確定位點的框架。爲了在笛卡爾座標系中定位點,引入了笛卡爾座標的概念。在2D平面中,兩個數(x,y)就可以定義一個點。座標的每個分量都表明了該點與原點之間的距離和方位,每個分量都是到相應軸的有符號距離。如下圖所示,x分量表示該點到y軸的有符號距離,同樣y分量表示該點到x軸的有符號距離。“有符號距離”指在某個方向上距離爲正,而在相反方向爲負。

26102602-9b618c876e1944ecb5236d5a906c8b0b

3D座標系:

3D座標系表示三維空間系,3D座標系存在三個軸,比2D座標系多了一個Z軸,3個軸相互垂直,也就是沒個軸都有垂直於其他兩個軸。在3D座標系中點位需要3個數:x、y、z.

26102602-9b618c876e1944ecb5236d5a906c8b0b

左手座標系、右手座標系:

3d座標系存在兩種完全不同的座標系,左手座標系和右手座標系。如果屬於相同的座標系,可以通過旋轉來重合,否則是不可以重合的。兩個座標系之間沒有好壞,之是應用與不懂的場景。 計算機中使用左手座標系,線性代數中使用右手座標系。

多座標系:

爲什麼使用多座標系?因爲在不同的情況下使用不同的座標系更加的方便。某些信息只有在特定的上下文環境中獲得。

一些有用的座標系:

1、世界座標系:是一個特殊的座標系,它建立了描述其他座標系所需要的參考框架,另一方面說,能用時間座標系描述其他座標系的位置,而不能用更大的座標系來描述世界座標系。

2、物體座標系特定物體相關聯的座標系。當物體位移或改變方向時,和該物體相關的座標系也隨之移動和改變方向。比如告訴你“向前走一步”,則是向你的物體座標系發指令。“前”、“後”、“左”、“右”這樣的概念只有物體座標系纔有意義。“向左轉”是物體座標系,“向東”則是世界座標系。有時物體座標系也稱作模型座標系,模型頂點的座標都是在模型座標系中描述的。

3、攝像機座標系觀察者密切相關的座標系。攝像機座標系被看作是一種特殊的物體座標系,該物體座標系定義攝像機的屏幕可視區域。在攝像機座標系中,攝像機在原點,x軸向右,z軸向前,y軸向上。一個攝像機座標系如下圖所示。關於攝像機座標系的軸向約定可能不同。許多圖形學書中習慣用右手座標系,z軸向外,即從屏幕指向讀者。2D屏幕上顯示的內容就是3D攝像機座標系通過投影轉換呈現的。

26102602-9b618c876e1944ecb5236d5a906c8b0b

4、慣性座標系:爲了簡化世界座標系到物體座標系之間的轉換,纔有了慣性座標系。慣性座標系的原點和物體座標系的原點重合,但慣性座標系的軸平行於世界座標系軸。所以從物體座標系轉換爲慣性座標系只需要旋轉,從慣性座標系到世界座標系只需要平移。

26102602-9b618c876e1944ecb5236d5a906c8b0b

5、嵌套座標系:3D虛擬世界中每個物體都有自己的座標系———-自己的原點和座標軸。每個模型都有自己的原點和座標軸,模型的子物體就是在這個嵌套座標系中。

 

物體座標系到世界座標系的轉換:

26102602-9b618c876e1944ecb5236d5a906c8b0b

1、旋轉物體座標系到慣性座標系。將物體座標軸旋轉到與慣性座標系重合。

26102602-9b618c876e1944ecb5236d5a906c8b0b

2、將慣性座標系原點平移至世界座標系。

26102602-9b618c876e1944ecb5236d5a906c8b0b

關於Unity的一些座標系的知識:

Unity是左手座標系

世界座標系:我們在場景中添加物體(如:Cube),他們都是以世界座標顯示在場景中的。transform.position可以獲得該位置座標。

屏幕座標系:以像素來定義的,以屏幕的左下角爲(0,0)點,右上角爲(Screen.width,Screen.height),Z的位置是以相機的世界單位來衡量的。注:鼠標位置座標屬於屏幕座標,Input.mousePosition可以獲得該位置座標,手指觸摸屏幕也爲屏幕座標,Input.GetTouch(0).position可以獲得單個手指觸摸屏幕座標。

繪製GUI界面的座標系:這個座標系與屏幕座標系相似,不同的是該座標系以屏幕的左上角爲(0,0)點,右下角爲(Screen.width,Screen.height)。

視口座標系:視口座標是標準的 相對於相機的。相機的左下角爲(0,0)點,右上角爲(1,1)點,Z的位置是以相機的世界單位來衡量的。

世界座標→屏幕座標:camera.WorldToScreenPoint(transform.position);這樣可以將世界座標轉換爲屏幕座標。其中camera爲場景中的camera對象。

屏幕座標→視口座標:camera.ScreenToViewportPoint(Input.GetTouch(0).position);這樣可以將屏幕座標轉換爲視口座標。其中camera爲場景中的camera對象。

視口座標→屏幕座標:camera.ViewportToScreenPoint();

視口座標→世界座標:camera.ViewportToWorldPoint();

發佈了45 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章