張華振
(大連東軟信息學(xué)院,遼寧 大連 116023)
中國游戲產(chǎn)業(yè)飛速發(fā)展,電腦游戲與手機(jī)游戲的種類越來越豐富。大量調(diào)查數(shù)據(jù)顯示,大多數(shù)游戲玩家都是通過移動(dòng)設(shè)備進(jìn)入到游戲領(lǐng)域,對(duì)游戲虛擬人物動(dòng)作控制的要求較高。在眾多電子游戲中,塔防游戲作為其中較為經(jīng)典的休閑游戲類別,深受廣大游戲玩家的喜愛。塔防游戲通常由地圖、炮臺(tái)、敵人與游戲金幣四個(gè)部分組成。其中,地圖是塔防游戲中重要組成部分,通常情況下是敵人從出生點(diǎn)開始生成,根據(jù)游戲規(guī)定的路線,向終點(diǎn)不斷前進(jìn),在中途布設(shè)多處轉(zhuǎn)角,為游戲玩家提供建造炮臺(tái)的地方,多方位延長塔防游戲敵人抵達(dá)終點(diǎn)的時(shí)間,為游戲玩家提供充足的思考時(shí)間。在塔防游戲的設(shè)計(jì)中,虛擬人物的動(dòng)作控制方法至關(guān)重要,能夠?yàn)橥婕規(guī)砹己玫挠螒蝮w驗(yàn)感。傳統(tǒng)的虛擬人物動(dòng)作控制方法較為單一,在操作方面具有較大的局限性,無法準(zhǔn)確進(jìn)行人物動(dòng)作控制。
Unity3D 技術(shù)在可視化編輯與動(dòng)態(tài)預(yù)覽方面顯現(xiàn)出一定優(yōu)勢,配備有種類豐富的綜合型開發(fā)工具,在塔防游戲虛擬人物動(dòng)作控制中具有專業(yè)性。
為了進(jìn)一步提高人物動(dòng)作控制的準(zhǔn)確度,本文提出了基于Unity3D 技術(shù)的塔防游戲虛擬人物動(dòng)作控制方法。根據(jù)游戲虛擬人物的行走節(jié)奏及對(duì)應(yīng)幀數(shù),設(shè)計(jì)虛擬人物行走速度;采用Kinect 體感攝像頭,獲取人物的運(yùn)動(dòng)信息,識(shí)別人體動(dòng)作特征;基于Unity3D 技術(shù)提取人物運(yùn)動(dòng)數(shù)據(jù),并進(jìn)行背景分離;采用Dead Reckoning 算法計(jì)算虛擬人物骨骼運(yùn)動(dòng)軌跡,預(yù)測人物下一步做出的動(dòng)作,并進(jìn)行相應(yīng)控制。
虛擬人物的行走是指通過克服重力與摩擦力向前行進(jìn),在前進(jìn)中首先要保證虛擬人物的身體平衡,避免人物出現(xiàn)絆倒的情況。設(shè)計(jì)虛擬人物行走之前,先要獲取塔防游戲虛擬人物的角色個(gè)性。
本文將人物角色的個(gè)性進(jìn)行了分類,主要分類4 類。第一類為人物手臂與相反的腿同時(shí)進(jìn)行擺動(dòng),通過相反的擺動(dòng)獲取行走的平衡以及行走的推動(dòng)力;第二類為人物行走時(shí)身體向下,手臂呈最大幅度進(jìn)行擺動(dòng),以此加快行走速度;第三類為人物身體上抬,行走的速度減慢;第四類為人物跨步過程中,腳尖與地面的距離小于1.25 cm,行走速度受抬腿幅度的影響。根據(jù)塔防游戲人物角色行走的特點(diǎn),判斷人物行走的節(jié)奏,設(shè)置虛擬人物行走的步伐與步數(shù)。虛擬人物行走節(jié)奏對(duì)應(yīng)的具體幀數(shù),見表1。
表1 虛擬人物行走節(jié)奏與幀數(shù)Tab.1 Walking rhythm and frames of virtual characters
本文將塔防游戲虛擬人物的行走節(jié)奏設(shè)置為10 幀,行走速度約為2 步/s,處于較為輕快的行走狀態(tài),此行走節(jié)奏便于控制調(diào)節(jié)。
采用Unity3D 技術(shù)提取人物角色的運(yùn)動(dòng)數(shù)據(jù)。提取塔防游戲虛擬人物運(yùn)動(dòng)數(shù)據(jù)主要包括4 個(gè)部分:識(shí)別人體的動(dòng)作特征、對(duì)虛擬人物的人體部位進(jìn)行多方位的分類、識(shí)別不同虛擬人物的關(guān)節(jié)以及控制人物骨骼關(guān)節(jié)點(diǎn)運(yùn)動(dòng)的平滑程度。本文主要從識(shí)別虛擬人物人體的動(dòng)作特征方面進(jìn)行數(shù)據(jù)提取,采用Kinect 體感攝像頭,獲取人物的運(yùn)動(dòng)信息與深度信息。由于虛擬人物人體的動(dòng)作特征與用戶的數(shù)據(jù)分割具有一定的關(guān)聯(lián)性,本文從塔防游戲的深度圖像著手,對(duì)信息進(jìn)行背景分離,用于構(gòu)建塔防游戲三維模型。
首先,規(guī)范化處理深度圖像的混合權(quán)重,設(shè)置虛擬人物行走循環(huán)與奔跑循環(huán)的權(quán)重分別為100%與95%,當(dāng)采用Unity3D 技術(shù)進(jìn)行規(guī)格化權(quán)重計(jì)算時(shí),行走占據(jù)50%權(quán)重,奔跑占據(jù)45%權(quán)重。
其次,定義short 類型存儲(chǔ)塔防游戲深度圖像,建立緩沖區(qū),獲取彩色圖像幀,記錄圖像幀的讀取速度,當(dāng)讀取速度過快時(shí),開啟圖像數(shù)據(jù)流,請(qǐng)求數(shù)據(jù)并設(shè)置等待時(shí)間。深度圖像中的其他數(shù)據(jù)采用Windows Kinect SDK 數(shù)據(jù)讀取方式,更新調(diào)用數(shù)據(jù)節(jié)點(diǎn),保證所有節(jié)點(diǎn)均有新數(shù)據(jù)到達(dá)。
最后,采用USB 接口與計(jì)算機(jī)之間建立連接,控制數(shù)據(jù)傳輸?shù)乃俣取?/p>
基于虛擬人物運(yùn)動(dòng)數(shù)據(jù),采用Dead Reckoning算法計(jì)算人物動(dòng)作時(shí)人體骨骼的運(yùn)動(dòng)軌跡。首先,設(shè)置虛擬人物周圍物體的最大吸引力為,將周圍物體作為影響虛擬人物動(dòng)作控制的外力,結(jié)合Unity3D 技術(shù)構(gòu)建塔防游戲虛擬人物動(dòng)作控制數(shù)學(xué)模型。設(shè)定在時(shí)刻,虛擬人物運(yùn)動(dòng)范圍內(nèi)包括物體、、、、、,以上物體對(duì)虛擬人物角色的吸引力,即為虛擬人物動(dòng)作控制在時(shí)刻時(shí)的影響力。
通過塔防游戲物體對(duì)虛擬人物的吸引力,結(jié)合人物運(yùn)動(dòng)的骨骼動(dòng)作、行走節(jié)奏與幀數(shù),計(jì)算人物骨骼運(yùn)動(dòng)軌跡。量化處理吸引力大小,控制吸引力方向與虛擬人物角色之間的夾角度數(shù),保持在90°以內(nèi),此時(shí),物體對(duì)人物動(dòng)作控制的吸引力標(biāo)記為A(,),獲取塔防游戲虛擬人物運(yùn)動(dòng)的速度與加速度,可通過如下公式計(jì)算得出:
其中, A(,)是函數(shù)B(,)經(jīng)過量化處理演變而來的,是角色對(duì)角色吸引力的聚集;表示物體距離對(duì)吸引力影響的參數(shù);表示聚集吸引力參數(shù);表示人物運(yùn)動(dòng)加速度路徑參數(shù);表示2 個(gè)物體之間的最優(yōu)化路徑距離。
當(dāng)虛擬人物動(dòng)作控制吸收力逐步量化后,對(duì)吸引力的值A(,)進(jìn)行優(yōu)化處理,獲取塔防游戲虛擬人物運(yùn)動(dòng)骨骼預(yù)測公式見如下:
由于虛擬人物在每次動(dòng)作捕捉過程中,做出的動(dòng)作不一定都相同,在控制人物下一次動(dòng)作類型時(shí),依賴人物之前做出的動(dòng)作進(jìn)行預(yù)測,綜合考慮人物周圍物體對(duì)人物運(yùn)動(dòng)產(chǎn)生的吸引力影響,設(shè)塔防游戲虛擬人物做出的動(dòng)作{(),∈}為隨機(jī)過程,表示動(dòng)作控制其中的一個(gè)狀態(tài)過程,對(duì)于任意的≤≤≤t≤,任意的,,…,x,∈,則隨機(jī)變量()在已知的變量(),,(t)=x的條件分布函數(shù)中與(t)=x有關(guān)聯(lián),與(),,(t)=x無關(guān)聯(lián)。
采用三維結(jié)構(gòu)光技術(shù)構(gòu)建人物動(dòng)作控制視角的三維形象,結(jié)合Unity3D 技術(shù)模擬立體視覺功能,在虛擬人物小范圍運(yùn)動(dòng)內(nèi)進(jìn)行空間定位。添加動(dòng)作控制腳本,輸入與動(dòng)作的對(duì)應(yīng)關(guān)系及動(dòng)作事件,創(chuàng)建成功后,在虛擬人物編輯器中編寫空閑動(dòng)作,設(shè)置動(dòng)作片段與播放模式。設(shè)定虛擬人物肢體部位的Index對(duì)應(yīng)值,根據(jù)控件傳遞的順序,旋轉(zhuǎn)虛擬人物肢體。分布函數(shù)滿足等式驗(yàn)證塔防游戲虛擬人物下一步做出的動(dòng)作,并進(jìn)行相應(yīng)的控制,全方位地提高了人物動(dòng)作控制的精度。
對(duì)本文設(shè)計(jì)的基于Unity3D 技術(shù)的塔防游戲虛擬人物動(dòng)作控制方法的應(yīng)用效果做出客觀分析。本次實(shí)驗(yàn)選用二維RGB 相機(jī)與能夠?qū)崿F(xiàn)視覺動(dòng)作捕捉的三維深度相機(jī),在分辨率等參數(shù)方面具有一定的區(qū)別。由于本次實(shí)驗(yàn)需要在3D 世界對(duì)塔防游戲虛擬人物進(jìn)行動(dòng)作控制,采用二維相機(jī)能夠準(zhǔn)確獲取目標(biāo)人物信息,為動(dòng)作控制起到了一定的輔助作用。
實(shí)驗(yàn)選用Windows 7 和Windows 10 的集成系統(tǒng),配置為Inteli3-1250 處理器、16 G 內(nèi)存、32 位操作系統(tǒng)、NVIDIA GTX1050 16 G 顯卡。采用微軟公司的Kinect 設(shè)備,通過紅外發(fā)射器,捕捉人物的動(dòng)作與姿勢變化,將接收到的信息構(gòu)建到相機(jī)視野內(nèi)的深度圖中,進(jìn)一步獲取塔防游戲畫面中人物的3D動(dòng)作模型。
在研究中,首先將游戲中的人物與背景相分離,基于Unity3D 技術(shù)分析人物的運(yùn)動(dòng)趨勢與各個(gè)身體部位的姿態(tài)變化,實(shí)現(xiàn)初步的動(dòng)作捕捉;其次,設(shè)置Kinect 設(shè)備的運(yùn)行范圍與捕捉目標(biāo)數(shù)量,保證設(shè)備能夠在捕捉視角內(nèi)獲取到目標(biāo)數(shù)量的動(dòng)作姿態(tài),調(diào)節(jié)目標(biāo)人物身體關(guān)節(jié)點(diǎn)的數(shù)量;最后,將二維相機(jī)與三維深度相機(jī)的拍攝視角進(jìn)行調(diào)整,保證2 個(gè)相機(jī)在捕捉人物動(dòng)作變化中,水平視角能夠達(dá)到75°,垂直視角能夠達(dá)到60°。應(yīng)用本文方法連續(xù)動(dòng)作背景分離捕捉圖例如圖1 所示。證明本文方法能夠有效將人物從游戲背景中分離出來,捕捉到人物每個(gè)關(guān)節(jié)點(diǎn)和動(dòng)作姿態(tài),用不同顏色的框線標(biāo)注人物不同關(guān)節(jié)。
圖1 人物連續(xù)動(dòng)作捕捉圖Fig.1 Continuous actions capture diagram of the figure
假設(shè)本次實(shí)驗(yàn)從第幀開始記錄,當(dāng)虛擬人物進(jìn)行動(dòng)作捕捉時(shí),獲取人物初始骨骼節(jié)點(diǎn)位置信息,通過動(dòng)作控制預(yù)測算法,控制虛擬人物下一步動(dòng)作時(shí)骨骼節(jié)點(diǎn)的大致位置信息??刂铺摂M人物骨骼節(jié)點(diǎn)重合時(shí),丟失重合的骨骼節(jié)點(diǎn),并繼續(xù)運(yùn)動(dòng)。利用本文設(shè)計(jì)的塔防游戲虛擬人物動(dòng)作控制方法,計(jì)算虛擬人物運(yùn)動(dòng)過程中,動(dòng)作控制的誤差見表2。
表2 塔防游戲虛擬人物動(dòng)作控制結(jié)果Tab.2 Action control results of tower defense game virtual characters %
根據(jù)表2 可知,本文設(shè)計(jì)的基于Unity3D 技術(shù)的塔防游戲虛擬人物動(dòng)作控制方法,均取得了98%以上的控制準(zhǔn)確率,人物動(dòng)作的誤控率與漏控率較低,能夠有效地彌補(bǔ)虛擬人物自身骨骼節(jié)點(diǎn)在運(yùn)動(dòng)過程中的遮掩,實(shí)時(shí)掌握虛擬人物的運(yùn)動(dòng)情況。
本文在設(shè)計(jì)塔防游戲虛擬人物動(dòng)作控制方法時(shí),結(jié)合了Unity3D 技術(shù),有效地改善了傳統(tǒng)動(dòng)作控制方法的不足。針對(duì)虛擬人物動(dòng)作的特點(diǎn),設(shè)計(jì)了人物動(dòng)作控制機(jī)理,全方位地提高了塔防游戲運(yùn)行的流暢性,使游戲中的人物更加逼真,優(yōu)化了游戲玩家的體驗(yàn)感,具有重要的應(yīng)用價(jià)值。然而,本文在塔防游戲的腳本建立方面研究尚淺,未來的研究應(yīng)當(dāng)不斷完善。