發(fā)布時間 : 2019-12-23
文章熱度 : 227
零基礎了解3D游戲開發(fā),是一件不容易的事。我們將分幾部分為大家細化3D游戲開發(fā)的每個環(huán)節(jié),希望對你了解3D游戲開發(fā)有些許幫助。
在之前的10個小節(jié)中,我們已經(jīng)可以對3D游戲和圖形開發(fā),有了一個基礎的概念性認知。最后簡單介紹一些3D數(shù)學的基礎常用概念。例如:向量、 矩陣、 歐拉角、四元數(shù)、射線、包圍體。
1、向量
既有大小又有方向的量稱之為向量(物理學叫矢量),向量也有維度,例如,2維、3維、4維。與向量對應的是數(shù)量(物理學叫標量),數(shù)量是只有大小沒有方向的量。有的文章把數(shù)量理解為1維向量,而我們通常所指的向量是2維或以上維度,不包括1維。
在LayaAir引擎中,針對2維、3維、4維向量的封裝方法示例分別為:Vector2(1, 2) 、Vector3(1, 1, 3)、Vector4(1, 2, 3, 0.5) 。然而LayaAir引擎封裝的Vector方法,不僅可以作為向量的使用,還可以用于頂點坐標位置,或者表達顏色的時候使用。比如原點坐標Vector3(0, 0, 0),顏色值Vector3 (0.6, 0.6, 0.6) 、Vector4(0.9, 0.5, 0.1, 1)。
提到向量,再順帶理解一下分量,我們把一個向量分解成幾個方向的向量之和,那這些分解的向量就叫做該向量的分量(也稱為向量投影)。例如,某個向量坐標u為(5,10),那分解的向量坐標w1(5,0)和w2(0,10)都是向量坐標u的分量。在引擎中,我們也可以把向量元素視為分量,比如 Vector3( 0.6, 0.6, 0.5) ,有3個分量,其中的0.5稱為這個向量的第3個分量。
2、 矩陣
在線性代數(shù)中,矩陣是以行和列形式組織的矩形數(shù)字塊。如果把向量定義為1維數(shù)組,那么矩陣就是2維數(shù)組。這里不要把2維理解為2D,是指來自數(shù)組的行與列形成2維。以數(shù)組的角度去理解,那向量是數(shù)量的數(shù)組,矩陣則是向量的數(shù)組。
矩陣是在顯卡圖形API中直接用于描述方位的形式,可立即進行向量的旋轉(zhuǎn)。LayaAir引擎提供了3×3的旋轉(zhuǎn)矩陣Matrix3x3() 和4×4的變換矩陣Matrix4x4(),變換矩陣可用于平移、旋轉(zhuǎn)、縮放計算。
3、歐拉角、四元數(shù)
歐拉角與四元數(shù)都是用于旋轉(zhuǎn)計算的數(shù)學方法,剛剛介紹的矩陣明明也可以用于旋轉(zhuǎn)計算,為什么要介紹這兩種呢?相對而言,3×3旋轉(zhuǎn)矩陣需要9個數(shù),歐拉角只需3個數(shù)(3維向量),四元數(shù)只需要4個數(shù)(4維向量),明顯輕量了很多。那是不是歐拉角最優(yōu),也不盡然。盡管歐拉角內(nèi)存占用小,也更加易用,但歐拉角也有他特有的問題,那就是可能會導致萬向節(jié)死鎖。而四元數(shù)則相對于矩陣內(nèi)存占用小,也不受萬向節(jié)死鎖的困擾,而且在平滑插值方面只能是四元數(shù)才能完成。
4、射線
射線是只有一個端點無限延長形成的直的線,在LayaAir引擎中的射線 Ray是一個數(shù)據(jù)對象,擁有起點與發(fā)射方向兩個屬性。常用于基礎的碰撞檢測,也可以用于鼠標拾取。
5、包圍體
包圍體用于可見檢測計算,基本思想是體積稍大且結(jié)構(gòu)簡單的包圍體來替代結(jié)構(gòu)復雜的被包圍體,當進行檢測的時候,達到提高檢測效率的作用。比如,一旦檢測到包圍體被遮擋不可見,那無論包圍體內(nèi)是什么樣的模型,那全部不可見。LayaAir引擎中提供了盒狀包圍體( 包圍盒 )與球狀包圍體(包圍球)。
以上就是一些零基礎學習3D游戲開發(fā),需要了解的基本情況。如果感興趣的話,可以來上海博思游戲?qū)W校,了解專門的3D游戲開發(fā)培養(yǎng)計劃。