發布時間 : 2019-11-28
文章熱度 : 585
零基礎了解3D游戲開發,是一件不容易的事。我們將分幾部分為大家細化3D游戲開發的每個環節,希望對你了解3D游戲開發有些許幫助。
坐標系與坐標
坐標是3D空間世界的基礎之一,干啥都離不開坐標,移動攝像機,定位,繪制圖形等等。
在學習LayaAir 3D時,我們需要了解兩個坐標,一個是位置坐標,另一個是UV坐標。
而了解這兩種坐標之前,我們先介紹一下空間笛卡爾直角坐標系。
空間笛卡爾直角坐標系是用經過相同原點的xyz三條互相垂直的坐標軸相交而構成。
坐標系的兩個軸正方向一致的情況下,因第三軸正方向相反,所以將坐標系分為左手坐標系與右手坐標系。
這兩種坐標系沒有好或不好,都應用的都比較廣泛,比如Unity等引擎采用的是左手坐標系,LayaAir等引擎采用的是右手坐標系。所以我們有必要理解什么是左手坐標系與右手坐標系,以及兩者的區別。
兩種3D坐標系之所以用左右手分別命名,是為了便于記憶,分別用左手和右手三根手指的朝向,來代表三個坐標軸的正方向,這三個手指分別是拇指、食指、中指。
無論是左手還是右手,我們要記住,大拇指朝向的方向是x軸正方向,食指的朝向是y軸的正方向,中指的朝向是z軸的正方向。
現在我們面向屏幕,準備好雙手來擺造型。先將左右兩個手的食指(y軸)指向天空方向(在房間的就指天花板),然后將中指(z軸)沖前(立正站立時眼睛平視的方向),此時兩個手的中指應該都與食指保持90度垂直。然后,再伸出大拇指(x軸)與食指和中指都保持90度垂直。可以參照下圖手勢。
網絡中有不同的左右手坐標系統的說法和介紹,如果圖片和軸朝向與本篇介紹的不同,一般也都是攝像機角度的差異,不用管別的,學習LayaAir以本篇為準來理解記憶即可。
擺好后,我們會發現,在保持z軸和y軸正方向相同的情況下,x軸的正方向是相反的。這就是左手坐標系和右手坐標系的區別。LayaAir引擎unity導出插件就是以x軸取反來自動適配LayaAir引擎。所以,直接在unity里編輯導出,然后在LayaAir引擎中使用,是不需要手工對坐標進行轉換的。如果開發者一定要在LayaAir引擎項目中手動來調坐標,那需要注意左手坐標系與右手坐標系在x軸正方向的差異。
了解完坐標系,我們了解一下頂點。頂點可以理解為3D空間中的任意一個帶xyz坐標的位置點,但頂點不僅包含了坐標位置信息,還有UV、法線、顏色等信息。其它的先不講,我們繼續來了解UV。
UV其實也是坐標, 完整的說應該是UVW(由于xyz已經被頂點坐標軸占用,所以另選三個字母表示), 這三個軸U是屏幕水平方向,V是屏幕垂直方向,W的方向是垂直于顯示器表面的,到目前為止,一般游戲開發是用不上的,所以我們通常就會簡稱為UV。
去掉了W,那UV坐標就是一個2D平面坐標,UV坐標可用于模型紋理貼圖等(后面介紹紋理的時候還會提及)。
UV坐標的貼圖紋理向右和向下分別是U與V的坐標正方向。取值范圍是0-1,不管紋理圖片的像素是多少,3D美術制作軟件導出的模型頂點數據都會對應貼圖紋理的UV坐標,以保障渲染時的采樣正確。
相對于UV坐標最終會對應貼圖紋理上的像素點,頂點坐標則沒有恒定的計量單位,最小的單位是點,無論是現實世界還是3D世界,點都是一個基礎的抽象概念,他代表著一個單獨的個體,可以無限大,也可以無限小。所以,點可以是1個像素,也可以是1毫米、1納米、1千米等任意單位的基礎單元。最終頂點之間用什么計量單位,通常由3D美術結合游戲設計而設定,3D游戲美術用的比較多的單位是米。所以程序的設定要與美術設定的單位保持統一,否則就會造成視覺效果上的過大或過小,出現與設計不符的效果。
下一部分,上海博思游戲學校將為你介紹3D游戲開發中的三角面、網絡、模型,敬請期待。