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