寫在前面#
本專欄內容均為學堂在線慕課《3D 遊戲引擎架構設計基礎》中的內容。個人將其轉化成文字和圖片的版本(個人更加喜歡文字版本的教程,閱讀速度更快很多),方便查閱。
原課程鏈接:3D 遊戲引擎架構設計基礎。
角色動畫#
角色動畫概述和表示方法#
角色是指推動遊戲劇情的載體,包括玩家、非玩家、怪獸和敵人等。
角色的表示#
-
賽璐璐動畫
-
剛性層階式動畫
-
每頂點動畫
-
變形目標動畫
-
骨骼蒙皮動畫
其中骨骼蒙皮動畫是使用得最多的表現技術。
遊戲中的角色動畫建模過程:
-
蒙皮:建立角色的網格模型
-
骨骼:建立關節和關節層次樹,並將關節與對應的網格頂點綁定
-
皮膚或衣服:定義網格的材質和紋理貼圖
-
角色動畫:描述角色的動作,定義角色骨骼的位置移動
表現示例:
骨骼蒙皮動畫中重要的概念#
-
自由度和關節類型:
-
關節的空間變換
-
網格頂點和關節綁定
-
運動合成和運動控制
運動合成中的重要概念:
動畫片段:是指組成遊戲角色的動作的局部姿勢,如舉手、跳躍、一個走路或跑步的步幅等。
關鍵幀或關鍵姿勢:是指在動畫片段指定的時間點上設定的重要姿勢,通過關鍵幀,可以用線性插值或曲線插值算法自動生成中間的姿勢,即中間幀。關鍵幀可以被看成角色姿勢的一個靜態圖。而動畫片段是由若干個關鍵幀和中間幀組成,且所有幀按照設點的時間點顯示。動畫片段是角色動畫的一個局部姿勢,是動態的。
示例:
動畫片段的合成是指對應關節位置的計算,角色動作自動合成的方法包括:
- 線性混合
- 骨骼分部混合
- 加法混合。
角色動畫實現實例#
OGEE 角色動畫#
OGRE 角色動畫渲染流程:
OGRE 節點類型與骨骼樹結構:
關節節點與場景圖的關係:
OGRE 角色動畫主要類:
下面是 OGRE 角色動畫的幾種核心類描述:
角色動畫的骨骼蒙皮動畫的示例:
OGRE 角色動畫總結:
Panda3D 角色動畫#
Panda3D 中角色動畫的概念:
Panda3D 中角色表示的類圖如下:
角色局部運動類:
最後是 Panda3D 動畫類: