最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

關于三維坐標系要知道的事

2023-03-20 23:30 作者:CarelessWP  | 我要投稿

任何坐標系,都是用來描述物體的運動軌跡,在游戲中會經(jīng)常使用坐標系,它們大部分是為了計算物體的位置、距離和角度。

二維坐標系

坐標系的專業(yè)名稱叫做笛卡爾坐標系,它分為二維笛卡爾坐標系和三維笛卡爾坐標系(以下簡稱坐標系),二維坐標系由原點、X軸和Y軸組成。在游戲領域,二維坐標系主要在屏幕空間映射時會使用到,它分為兩個標準:OpenGL和DirectX,它們之間最大的區(qū)別在于對原點和Y軸的位置定義不同。OpenGL標準原點在左下角,Y軸正軸朝上;而DirectX標準原點在左上角,Y軸正軸朝下。

三維坐標系

三維坐標系由原點、X軸、Y軸和Z軸組成,坐標軸之間兩兩互相垂直相交。三個坐標軸又叫做坐標系的基矢量,如果坐標軸長度都為1,那么這樣的基矢量被稱為標準正交基,正交這個詞我們經(jīng)常聽見,它其實就是表示互相垂直的意思。

三維坐標系在游戲引擎、建模軟件中經(jīng)常使用,它的情況要比二維坐標系更加復雜。不同的軟件,采用的三維坐標系朝向都可能有所不同,有的是Y軸朝上,有的是Z軸朝上,雖然朝向各有所不同,但總的可分為兩大類:左手坐標系和右手坐標系。任何軟件使用的三位坐標系,總是可以通過旋轉來判斷出它是左手坐標系還是右手坐標系。

游戲中向前、向右等方向的描述,和游戲引擎使用的坐標系有很大的關系。不同的游戲引擎,前后方向都很可能是相反的,所以明確坐標系的類型非常重要。

另外一個就是旋轉方向問題。以鐘表為例,順時針和逆時針旋轉大家都能分清楚吧。對于左手坐標系而言,它旋轉的正方向是順時針,而右手坐標系旋轉的正方向是逆時針。大家可以通過左右手法則,來確定旋轉的正方向。以左手坐標系為例,伸出左手,拇指豎直,其他手指微握,微握的方向就代表左手坐標系旋轉的正方向。右手坐標系同樣如此。

各種空間概念

游戲開發(fā)中經(jīng)常會聽到各種空間,什么模型空間、世界空間、觀察空間和屏幕空間,它們到底是什么意思呢?

模型空間

模型空間又叫對象空間或者局部空間,每個模型自身就是一個坐標系,在編寫shader時我們說的頂點坐標,其實是模型上的點相對于模型空間的原點而言的。模型的原點是可以在三維軟件自定義的。

以3dsMAX為例,它可以通過調整軸來修改原點位置,原點一旦修改,模型導出后,各頂點的坐標也會發(fā)生改變。

模型導出成obj格式后,用記事本打開,可以看到各個頂點的坐標。Y軸為0,表示的是長方體底面的四個頂點。因為3dsMAX創(chuàng)建的長方體,默認以底面中心作為長方體模型空間的原點。

另外還需要注意的是:模型空間坐標會受旋轉的影響而發(fā)生改變,旋轉之后,它的各坐標軸都會發(fā)生變化。在游戲編程中,經(jīng)常會遇到“角色旋轉45度,然后向前行走100米”類似這樣的邏輯,這其實是針對模型空間而言的,通常情況下,就要將角色使用的坐標系切換到局部坐標系,然后調用旋轉、向前之類的API方法,這樣才能得到正確結果。我們經(jīng)常說的方位術語,比如forward、back、left、right、up、down之類的,其實也是針對模型空間來說的。

世界空間

世界空間是一個絕對位置,它描述的是一個宏觀的大空間,而且他的坐標軸方向使不會發(fā)生變化的。這個很好理解,但在一些情況下,模型空間位置會等于世界空間,這取決于物體本身的層次結構。

如果物體本身沒有父節(jié)點,那么這個物體的模型空間位置會等于世界空間位置;

如果物體本身有父節(jié)點,那么物體的位置是指相對于父節(jié)點模型空間而言的;

如果物體從父節(jié)點移出,此時物體的位置會被自動轉換成世界空間坐標;

觀察空間

再來說說觀察空間,觀察空間又叫相機空間,它是以攝像機為原點的空間,攝像機所在的位置就是觀察空間的原點。正因為如此,觀察空間的坐標系往往和世界坐標、模型坐標是相反的。

屏幕空間

其他三個空間都是三維坐標系,而屏幕空間是一個二維空間,觀察空間向屏幕空間轉換,就叫做投影。但它們之間還有一次轉換,叫做裁剪空間轉換。

裁剪空間

模型能否被渲染,取決于相機的是視野范圍,這通過相機的視錐體來定義,視錐體類似于一個梯形空間,通過設置最近距離、最遠距離以及視野角度來定義視錐體的范圍。模型只有在視錐體范圍內(nèi)才能被渲染。

觀察空間經(jīng)過一個透視投影的操作,將所有頂點變換到裁剪空間內(nèi),視錐體作為裁剪空間的一部分,決定了相機可以看到的空間,裁剪空間的存在,是為了方便對圖元進行裁剪。


關于三維坐標系要知道的事的評論 (共 條)

分享到微博請遵守國家法律
尉犁县| 年辖:市辖区| 高台县| 都匀市| 波密县| 册亨县| 五华县| 阿坝县| 西华县| 尼木县| 固始县| 芦山县| 南平市| 宁阳县| 大化| 镶黄旗| 靖江市| 招远市| 鹤峰县| 娄烦县| 富阳市| 金秀| 炎陵县| 古丈县| 博爱县| 平安县| 闽侯县| 福清市| 仙游县| 莆田市| 岐山县| 瓦房店市| 凭祥市| 潮州市| 监利县| 仙游县| 乌拉特后旗| 温泉县| 隆安县| 塔城市| 酒泉市|