張華振
(大連東軟信息學院,遼寧 大連 116023)
中國游戲產業飛速發展,電腦游戲與手機游戲的種類越來越豐富。大量調查數據顯示,大多數游戲玩家都是通過移動設備進入到游戲領域,對游戲虛擬人物動作控制的要求較高。在眾多電子游戲中,塔防游戲作為其中較為經典的休閑游戲類別,深受廣大游戲玩家的喜愛。塔防游戲通常由地圖、炮臺、敵人與游戲金幣四個部分組成。其中,地圖是塔防游戲中重要組成部分,通常情況下是敵人從出生點開始生成,根據游戲規定的路線,向終點不斷前進,在中途布設多處轉角,為游戲玩家提供建造炮臺的地方,多方位延長塔防游戲敵人抵達終點的時間,為游戲玩家提供充足的思考時間。在塔防游戲的設計中,虛擬人物的動作控制方法至關重要,能夠為玩家帶來良好的游戲體驗感。傳統的虛擬人物動作控制方法較為單一,在操作方面具有較大的局限性,無法準確進行人物動作控制。
Unity3D 技術在可視化編輯與動態預覽方面顯現出一定優勢,配備有種類豐富的綜合型開發工具,在塔防游戲虛擬人物動作控制中具有專業性。
為了進一步提高人物動作控制的準確度,本文提出了基于Unity3D 技術的塔防游戲虛擬人物動作控制方法。根據游戲虛擬人物的行走節奏及對應幀數,設計虛擬人物行走速度;采用Kinect 體感攝像頭,獲取人物的運動信息,識別人體動作特征;基于Unity3D 技術提取人物運動數據,并進行背景分離;采用Dead Reckoning 算法計算虛擬人物骨骼運動軌跡,預測人物下一步做出的動作,并進行相應控制。
虛擬人物的行走是指通過克服重力與摩擦力向前行進,在前進中首先要保證虛擬人物的身體平衡,避免人物出現絆倒的情況。設計虛擬人物行走之前,先要獲取塔防游戲虛擬人物的角色個性。
本文將人物角色的個性進行了分類,主要分類4 類。第一類為人物手臂與相反的腿同時進行擺動,通過相反的擺動獲取行走的平衡以及行走的推動力;第二類為人物行走時身體向下,手臂呈最大幅度進行擺動,以此加快行走速度;第三類為人物身體上抬,行走的速度減慢;第四類為人物跨步過程中,腳尖與地面的距離小于1.25 cm,行走速度受抬腿幅度的影響。根據塔防游戲人物角色行走的特點,判斷人物行走的節奏,設置虛擬人物行走的步伐與步數。虛擬人物行走節奏對應的具體幀數,見表1。

表1 虛擬人物行走節奏與幀數Tab.1 Walking rhythm and frames of virtual characters
本文將塔防游戲虛擬人物的行走節奏設置為10 幀,行走速度約為2 步/s,處于較為輕快的行走狀態,此行走節奏便于控制調節。
采用Unity3D 技術提取人物角色的運動數據。提取塔防游戲虛擬人物運動數據主要包括4 個部分:識別人體的動作特征、對虛擬人物的人體部位進行多方位的分類、識別不同虛擬人物的關節以及控制人物骨骼關節點運動的平滑程度。本文主要從識別虛擬人物人體的動作特征方面進行數據提取,采用Kinect 體感攝像頭,獲取人物的運動信息與深度信息。由于虛擬人物人體的動作特征與用戶的數據分割具有一定的關聯性,本文從塔防游戲的深度圖像著手,對信息進行背景分離,用于構建塔防游戲三維模型。
首先,規范化處理深度圖像的混合權重,設置虛擬人物行走循環與奔跑循環的權重分別為100%與95%,當采用Unity3D 技術進行規格化權重計算時,行走占據50%權重,奔跑占據45%權重。
其次,定義short 類型存儲塔防游戲深度圖像,建立緩沖區,獲取彩色圖像幀,記錄圖像幀的讀取速度,當讀取速度過快時,開啟圖像數據流,請求數據并設置等待時間。深度圖像中的其他數據采用Windows Kinect SDK 數據讀取方式,更新調用數據節點,保證所有節點均有新數據到達。
最后,采用USB 接口與計算機之間建立連接,控制數據傳輸的速度。
基于虛擬人物運動數據,采用Dead Reckoning算法計算人物動作時人體骨骼的運動軌跡。首先,設置虛擬人物周圍物體的最大吸引力為,將周圍物體作為影響虛擬人物動作控制的外力,結合Unity3D 技術構建塔防游戲虛擬人物動作控制數學模型。設定在時刻,虛擬人物運動范圍內包括物體、、、、、,以上物體對虛擬人物角色的吸引力,即為虛擬人物動作控制在時刻時的影響力。
通過塔防游戲物體對虛擬人物的吸引力,結合人物運動的骨骼動作、行走節奏與幀數,計算人物骨骼運動軌跡。量化處理吸引力大小,控制吸引力方向與虛擬人物角色之間的夾角度數,保持在90°以內,此時,物體對人物動作控制的吸引力標記為A(,),獲取塔防游戲虛擬人物運動的速度與加速度,可通過如下公式計算得出:

其中, A(,)是函數B(,)經過量化處理演變而來的,是角色對角色吸引力的聚集;表示物體距離對吸引力影響的參數;表示聚集吸引力參數;表示人物運動加速度路徑參數;表示2 個物體之間的最優化路徑距離。
當虛擬人物動作控制吸收力逐步量化后,對吸引力的值A(,)進行優化處理,獲取塔防游戲虛擬人物運動骨骼預測公式見如下:


由于虛擬人物在每次動作捕捉過程中,做出的動作不一定都相同,在控制人物下一次動作類型時,依賴人物之前做出的動作進行預測,綜合考慮人物周圍物體對人物運動產生的吸引力影響,設塔防游戲虛擬人物做出的動作{(),∈}為隨機過程,表示動作控制其中的一個狀態過程,對于任意的≤≤≤t≤,任意的,,…,x,∈,則隨機變量()在已知的變量(),,(t)=x的條件分布函數中與(t)=x有關聯,與(),,(t)=x無關聯。
采用三維結構光技術構建人物動作控制視角的三維形象,結合Unity3D 技術模擬立體視覺功能,在虛擬人物小范圍運動內進行空間定位。添加動作控制腳本,輸入與動作的對應關系及動作事件,創建成功后,在虛擬人物編輯器中編寫空閑動作,設置動作片段與播放模式。設定虛擬人物肢體部位的Index對應值,根據控件傳遞的順序,旋轉虛擬人物肢體。分布函數滿足等式驗證塔防游戲虛擬人物下一步做出的動作,并進行相應的控制,全方位地提高了人物動作控制的精度。
對本文設計的基于Unity3D 技術的塔防游戲虛擬人物動作控制方法的應用效果做出客觀分析。本次實驗選用二維RGB 相機與能夠實現視覺動作捕捉的三維深度相機,在分辨率等參數方面具有一定的區別。由于本次實驗需要在3D 世界對塔防游戲虛擬人物進行動作控制,采用二維相機能夠準確獲取目標人物信息,為動作控制起到了一定的輔助作用。
實驗選用Windows 7 和Windows 10 的集成系統,配置為Inteli3-1250 處理器、16 G 內存、32 位操作系統、NVIDIA GTX1050 16 G 顯卡。采用微軟公司的Kinect 設備,通過紅外發射器,捕捉人物的動作與姿勢變化,將接收到的信息構建到相機視野內的深度圖中,進一步獲取塔防游戲畫面中人物的3D動作模型。
在研究中,首先將游戲中的人物與背景相分離,基于Unity3D 技術分析人物的運動趨勢與各個身體部位的姿態變化,實現初步的動作捕捉;其次,設置Kinect 設備的運行范圍與捕捉目標數量,保證設備能夠在捕捉視角內獲取到目標數量的動作姿態,調節目標人物身體關節點的數量;最后,將二維相機與三維深度相機的拍攝視角進行調整,保證2 個相機在捕捉人物動作變化中,水平視角能夠達到75°,垂直視角能夠達到60°。應用本文方法連續動作背景分離捕捉圖例如圖1 所示。證明本文方法能夠有效將人物從游戲背景中分離出來,捕捉到人物每個關節點和動作姿態,用不同顏色的框線標注人物不同關節。

圖1 人物連續動作捕捉圖Fig.1 Continuous actions capture diagram of the figure
假設本次實驗從第幀開始記錄,當虛擬人物進行動作捕捉時,獲取人物初始骨骼節點位置信息,通過動作控制預測算法,控制虛擬人物下一步動作時骨骼節點的大致位置信息。控制虛擬人物骨骼節點重合時,丟失重合的骨骼節點,并繼續運動。利用本文設計的塔防游戲虛擬人物動作控制方法,計算虛擬人物運動過程中,動作控制的誤差見表2。

表2 塔防游戲虛擬人物動作控制結果Tab.2 Action control results of tower defense game virtual characters %
根據表2 可知,本文設計的基于Unity3D 技術的塔防游戲虛擬人物動作控制方法,均取得了98%以上的控制準確率,人物動作的誤控率與漏控率較低,能夠有效地彌補虛擬人物自身骨骼節點在運動過程中的遮掩,實時掌握虛擬人物的運動情況。
本文在設計塔防游戲虛擬人物動作控制方法時,結合了Unity3D 技術,有效地改善了傳統動作控制方法的不足。針對虛擬人物動作的特點,設計了人物動作控制機理,全方位地提高了塔防游戲運行的流暢性,使游戲中的人物更加逼真,優化了游戲玩家的體驗感,具有重要的應用價值。然而,本文在塔防游戲的腳本建立方面研究尚淺,未來的研究應當不斷完善。