路宜松
沈陽理工大學 遼寧 沈陽 110159
(1)課題研究的背景和意義。近年來,游戲行業(yè)發(fā)展飛快,電腦游戲已經(jīng)成為游戲產(chǎn)業(yè)發(fā)展的中堅力量,遺憾的是成功作品寥寥無幾。隨著計算機硬件的提升和游戲行業(yè)的發(fā)展,越來越多的玩家更著重與品質和游戲體驗。結合當今游戲行業(yè)的發(fā)展情況,在這種情況下,3D游戲已經(jīng)成為當前游戲發(fā)展的熱點。并且Unity3D是一款跨平臺性突出,兼容性強的游戲引擎,現(xiàn)如今已經(jīng)成為許多游戲開發(fā)工程師首選的游戲引擎,并且本文的系統(tǒng)設計采用Unity3D游戲引擎,由于引擎提供了高質量的3D游戲的核心技術和高品質的畫面,為開發(fā)游戲人員提供了充足的資源,方便開發(fā)者進行開發(fā)。本篇文章針對三維人物設計進行研究,詳細闡述了其中運用到的關鍵技術,這對未來三維角色開發(fā)和設計有著十分重要的意義。
(2)主要內容。本文在已有理論知識的基礎上,利用多種技術實現(xiàn)了三維人物的基礎動畫動作和人物移動,本文采用多軌混合、線性插值混合、貼圖技術、有限狀態(tài)機技術、碰撞檢測技術、3D建模技術、狀態(tài)機技術等核心技術[1]。
游戲美術是在游戲開發(fā)和設計過程中不可缺少的部分。本次設計采用了3D建模技術和法線和紋理貼圖技術,模型為Mixamo下載的人物模型,之后采用法線貼圖和綁定骨骼等對人物模型進行上色和骨骼綁定,讓模型可以更好地進行移動、攻擊和防御,在場景方面采取天空盒技術渲染天空,這樣可以使人物和場景更加生動。在環(huán)境總背景上,采用了天空盒技術,所謂的天空盒其實就是將一個立方體展開,然后在六個面上貼上相應的貼圖,并在實際的渲染中,將這個立方體始終罩在攝像機的周圍,讓攝像機始終處于這個立方體的中心位置,然后根據(jù)視線與立方體的交點的坐標,來確定究竟要在哪一個面上進行紋理采樣。具體的映射方法為:設視線與立方體的交點為(x,y,z),在x、y、z中取絕對值最大的那個分量,根據(jù)其符號來判定在立方體的六個面上進行采樣。
法線貼圖是一種實現(xiàn)三維模型細節(jié)的重要手段,它分解計算了由光照和陰影所產(chǎn)生的細節(jié),這是一種二維效果,但不會改變模型原有的形狀,它計算了模型輪廓中極大的額外細節(jié)開銷,在當今處理能力有限的情況下,可以極大地減少運行消耗,且對視覺影像較少。高光貼圖原理是在某種特定的角度下對光進行反射,反射方向取決于發(fā)現(xiàn)方向、攝像機方向、光源平均方向,這樣可以使原有材質經(jīng)過反射達到不一樣的效果,可以呈現(xiàn)金屬光澤或者磨砂材質等,用著兩種貼圖技術,可以使角色的外觀到達比較好的視覺效果[2]。
在移動方面,根據(jù)用戶按鍵輸入監(jiān)聽,完成角色水平豎直方向按當前世界坐標的單位向量進行移動,為了優(yōu)化人物移動速率,對數(shù)值進行了平滑處理。但這樣導致了向單位向量(1,1)移動的速度超出向(1,0)方向移動的速度,為了解決這個問題,我們對原先移動方面的輸入進行處理,采用的是橢圓映射法如圖1所示公式如下所示。實現(xiàn)此功能關鍵代碼如下:

圖1 橢圓映射法
實現(xiàn)此功能關鍵代碼如下:
output.x = input.x * Mathf.Sqrt(1 - (input.y * input.y) / 2.0f);
output.y = input.y * Mathf.Sqrt(1 - (input.x * input.x) / 2.0f);
在動畫控制方面,采用了有限狀態(tài)機技術,所謂有限狀態(tài)機,就是人物任意時刻都處在有限狀態(tài)機集合狀態(tài)中的某一特定狀態(tài),當對其進行輸入時,可以從當前狀態(tài)經(jīng)過一定時間轉換為另一特定狀態(tài),或者經(jīng)過一段時間退回到之前所處的狀態(tài),但是這些狀態(tài)都為原來對狀態(tài)機狀態(tài)集合的某一狀態(tài)。任何一個FSM都可以用狀態(tài)轉換圖來描述,圖中的節(jié)點表示FSM中的一個狀態(tài),有向加權邊表示輸入字符時狀態(tài)的變化。下圖為人物攻擊動作的部分FSM狀態(tài)機,如圖2所示[3]。

圖2 FSM狀態(tài)機
隨著計算機硬件的提升和游戲行業(yè)的發(fā)展,用戶開始對電腦游戲畫面產(chǎn)生了苛刻的要求,本文介紹了游戲引擎三維人物開發(fā)所使用的部分核心技術,并針對三維人物設計進行了研究,這對未來三維角色開發(fā)和設計有著十分重要的意義。