Unity座標系入門

一、座標系的概念

Unity 世界座標系採用左手座標系,大拇指指向X軸(紅色),食指指向Y軸(黃色),中指向手心方向歪曲90度表示Z軸(藍色),同時Z軸也是物體前進方向,下圖表示Unity的四種座標系:

其中GUI和Screen的單位是像素單位,什麼是像素單位呢,這裏可以先了解一下像素相關知識:

像素:簡單地來說,可以理解成一個方塊,它是圖像的最小單元,不能再分割,但它並沒有固定的大小。

屏幕分辨率:指的是由像素組成的點陣,比如說一臺電腦的屏幕分辨率爲1920*1080,那麼該電腦屏幕在橫向有1920個像素,縱向有1080個像素。

談及像素和分辨率,還有一個概念叫做PPI,什麼是PPI呢?

PPI:每英寸像素數目,可以理解爲屏幕像素密度

因爲像素並沒有固定的大小,所以,PPI 越高,像素大小越小,也就越清晰。具體的計算公式如下:

所以可以知道,在購買顯示器的時候,同是2K屏,24寸的是要比27寸的更清晰一些,因爲PPI更高。

回到正題,比如我的電腦的分辨率是1920*1080,那麼其X軸最大單位就是1920,Y軸最大單位就是1080。

瞭解了GUI、世界和屏幕座標系後,Viewport座標系其實沒什麼好說的,只是進行了歸一化。

二、Screen座標系和World座標系的換算

在進行換算前,需要知道Camera相機的概念,相機又分爲正交視圖(orthogonal)、透視視圖(perspective)。

一般2D遊戲採用正交視圖,3D遊戲採用透視視圖。

1、正交視圖

2、透視視圖

 1、2D座標系換算(正交視圖)

在上述示例中用到的天空背景圖的分辨率是4096*2048,但是有個地方很奇怪,Unity顯示該圖分辨率是2048*1024,實際是4096*2048。

如果想要背景圖填充滿整個屏幕,可以將遊戲視圖分辨率設置爲圖片分辨率,然後還需要設置相機大小:

相機大小(size):採用世界座標系單位,爲屏幕半寬。(所以相機大小爲2048/2/100=10.24)

Pixels Per Unit:每多少像素爲一世界座標系單位。

這裏我們應該知道屏幕座標系的範圍是(0,0)到(4096,2048),那世界座標系範圍是什麼呢?

 

世界座標系的原點和範圍受到相機的影響,若相機的位置爲(0,0),並且沒有發生旋轉,那麼世界座標系的原點就在屏幕正中心,其範圍是(-20.48,-10.24)到(20.48,10.24)。

2、3D座標系換算(透視視圖)

 3D座標系換算相對更復雜一點,如下實例:

相機位於(0,0,-16),且視野角度爲60度,帽子位於(0,6,0),且都沒有發生旋轉,那麼其在Y軸上的分辨率既可以推算出來。

同理,其在X軸上的分辨率也可以算出來。

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