教學教學閱讀約 8 分鐘

在 Unreal Engine 5 中自動綁定角色骨架: 從靜態網格到有動畫的骨架網格

對網格按右鍵,選擇 Rig with AFK AI,一分鐘後同一個資料夾中就會出現帶有骨架、物理資產和動畫的骨架網格。

Content Browser › Hero

Hero · Static Mesh

AFK AI

Rig with AFK AI

Edit… · Duplicate · Rename …

Content Browser › /Game/Characters
  • HeroStatic Mesh
  • Hero_riggedSkeletal Mesh
  • Hero_rigged_SkeletonSkeleton
  • Hero_rigged_PhysicsAssetPhysics Asset
  • …_Idle_AAnimation Sequence
  • …_WalkAnimation Sequence
  • …_JogAnimation Sequence
  • …
依外掛程式繪製的示意圖,不是截圖:網格右鍵選單中的 Rig with AFK AI,以及它在原始檔案旁新增的 Skeletal Mesh、Skeleton、Physics Asset 和動畫。

Unreal Engine 能把角色動畫呈現得非常漂亮,卻不會幫你綁定骨架。從雕刻軟體或市集素材包拿到的靜態網格沒有骨架,也沒有蒙皮權重,所以一般得繞一大圈:匯出模型、在 Blender 或 Mixamo 中綁定骨架、以骨架網格重新匯入,再去找合用的動畫。

AFK AI 外掛程式讓你省下這一圈。在 Content Browser 中對網格按右鍵,選擇 Rig with AFK AI。大約一分鐘後,同一個資料夾中就會出現名為 Hero_rigged 的骨架網格,帶有骨架、物理資產和動畫,可以直接用在 Animation Blueprint 中。不需要編譯任何 C++,所以只用 Blueprint 的專案也能使用。

準備事項

Unreal Engine
5.1 以上版本,支援 Windows、Mac 或 Linux。只用 Blueprint 的專案也沒問題。
你的網格
從 .fbx、.glb 或 .gltf 檔案匯入的靜態網格或骨架網格,最大 50 MB。AFK AI 會取得那個原始檔案。
afk.ai 帳號
免費,以 Google 登入。每次綁定都會用掉帳號當月的一次綁定次數,和在 afk.ai/rig 上一樣。
網路
骨架綁定在 afk.ai 的伺服器上進行。

安裝外掛程式

  1. 從 Unreal Engine 外掛程式頁面下載外掛程式並解壓縮。你會得到一個名為 AFKAI 的資料夾。
  2. 把它放進專案的 Plugins 資料夾,也就是 .uproject 檔案旁邊:MyGame/Plugins/AFKAI/AFKAI.uplugin。如果沒有 Plugins 資料夾,就自己建立一個。
  3. 開啟專案,或重新啟動專案。外掛程式會開啟 Unreal 內建的兩個外掛程式:Python Editor Script Plugin 和 Editor Scripting Utilities。如果 Unreal 要求重新啟動,選擇同意。

編輯器的選單列中會出現 AFK AI 選單。如果想讓每個專案都能使用,可以改把資料夾放進 Unreal 安裝位置中的 Engine/Plugins/Marketplace/AFKAI,然後在每個專案的 Edit > Plugins 中開啟它。

登入並綁定骨架

  1. 選擇 AFK AI > Sign in...。瀏覽器會開啟 afk.ai,用 Google 帳號登入後回到 Unreal。AFK AI 選單現在會顯示你的電子郵件,以及本月剩餘的綁定次數。
  2. 在 Content Browser 中對網格按右鍵,選擇 Rig with AFK AI。(或是選取網格後,選擇 AFK AI > Rig the selected mesh...。)
  3. 一個小視窗會詢問 Body type(Human,或對應的動物或生物)、Animations(All animations,或只要骨架的 Rig only)和 Facing(保持 Auto)。視窗標題會註明這會用掉一次綁定次數。按下 OK。
  4. 繼續工作即可。AFK AI 選單會顯示進度,Output Log 中以「AFK AI」開頭的訊息也會顯示。

如果瀏覽器無法回到 Unreal(例如被防火牆擋住,或 Unreal 在另一台電腦上),afk.ai 頁面會顯示登入代碼。選擇 AFK AI > I have a sign-in code...,貼上代碼,然後按下 OK。

你會拿到什麼

  • Skeletal Mesh:Hero_rigged,和原始網格在同一個資料夾中,並已幫你選取。原始網格不會被改動。
  • Skeleton:依模型類型打造。人形角色有 66 根骨骼,每根手指都有三個關節,命名方式和 Unreal 自己的 Mannequin 骨骼相同:pelvis、spine_01、clavicle_l、upperarm_l、thigh_l 等等。
  • Physics Asset:匯入時產生,用於布偶物理(ragdoll)和碰撞。
  • 動畫:每個動畫一個 Animation Sequence。人形角色最多有 593 種:待機、走路、慢跑、衝刺、跳躍、閃避、劍、盾、弓和手槍的動作、舞蹈、受擊和死亡。免費帳號可以使用免費動畫,付費方案則能解鎖其餘全部。
  • FBX:Hero_rigged.fbx,儲存在原始來源檔案旁邊;如果那裡無法寫入,則存在專案的 Saved/AFK AI 資料夾。再綁定一次會得到 Hero_rigged_2:不會覆蓋任何東西。

和任何匯入一樣,新資源要等你儲存後才會寫入磁碟:File > Save All。

擺出 T-pose 的動漫角色,afk.ai 放置的關節以圓點顯示,細到手指
anime-girl.glb · skeleton
root  └ pelvis    └ spine_01      └ spine_02        └ spine_03          └ neck_01            └ head          └ clavicle_l            └ upperarm_l              └ lowerarm_l                └ hand_l                  └ thumb_01_l  thumb_02_l  thumb_03_l                  └ index_01_l  index_02_l  index_03_l                  └ middle_01_l  middle_02_l  middle_03_l                  └ ring_01_l  ring_02_l  ring_03_l                  └ pinky_01_l  pinky_02_l  pinky_03_l          └ clavicle_r ... (右側相同)    └ thigh_l      └ calf_l        └ foot_l          └ ball_l    └ thigh_r ... (右側相同)
每次 afk.ai 綁骨都會得到的人形骨架:66 根骨骼,每根手指和拇指都有三個關節,命名方式和 Unreal Engine 的 Mannequin 一致。

不寫程式也能看它動起來

把 Hero_rigged 拖進關卡。在它的 Details 面板中,於 Animation 底下把 Animation Mode 設為 Use Animation Asset,在 Anim to Play 中選一個動畫(例如 Walk),並保持 Looping 開啟。按下 Play,或直接在視埠中觀看。

想快速檢查每個動畫,就按兩下任何一個 Animation Sequence:動畫編輯器會開啟,並在角色身上播放。

玩家角色的 Animation Blueprint

經典設定:靜止時待機,角色加速時依序切換成走路和慢跑。

  1. 對 Hero_rigged 按右鍵,選擇 Create > Anim Blueprint。命名為 ABP_Hero。
  2. 在它的 Event Graph 中加入一個名為 Speed 的 float 變數。從 Event Blueprint Update Animation 呼叫 Try Get Pawn Owner,用 Is Valid 檢查,接著是 Get Velocity,再接 Vector Length XY,最後把 Speed 設為這個值。
  3. 在 AnimGraph 中按右鍵,選擇 Add New State Machine,命名為 Locomotion,並連接到 Output Pose。
  4. 在裡面建立三個狀態:Idle、Walk 和 Jog,再從 Asset Browser 把 Idle_A、Walk 和 Jog 動畫分別拖進去,連接到各自的 Output Animation Pose。
  5. 在狀態之間畫出雙向的轉換,規則依據 Speed(單位為公分/秒):Speed > 10 時從 Idle 轉到 Walk,Speed > 300 時從 Walk 轉到 Jog,速度降到門檻以下時再反向轉回。
  6. 在你的 Character Blueprint 中選取 Mesh 元件,把 Skeletal Mesh Asset 設為 Hero_rigged,Anim Class 設為 ABP_Hero。把它往下移到膠囊體底部,並轉向面對藍色箭頭,就像範本中的 Mannequin 那樣。

想從 C++ 開始?同樣的概念,最精簡的版本:遊戲開始時播放一個循環動畫。

// HeroCharacter.h
UPROPERTY(EditAnywhere, Category = "Animation")
TObjectPtr<UAnimSequence> IdleAnimation;

// HeroCharacter.cpp
#include "Animation/AnimSequence.h"

void AHeroCharacter::BeginPlay()
{
    Super::BeginPlay();
    if (IdleAnimation)
    {
        GetMesh()->PlayAnimation(IdleAnimation, /*bLooping=*/ true);
    }
}
EntryIdle_A↓ Speed > 10↑ Speed < 10Walk↓ Speed > 300↑ Speed < 300Jog
示意圖:Locomotion 狀態機。每個狀態播放一段動畫,並依 Speed(每秒公分數)在狀態之間切換。

用一點 Python 處理 Root Motion

有些動畫會自己讓角色往前移動:它們的名稱以 _RM 結尾,例如 Roll_RM、Dodge_left_RM 或 Sword_Dash_RM。其餘則在原地播放。Unreal 需要逐一為每個動畫開啟 root motion,而外掛程式已經開啟了 Unreal 的 Python,所以幾行程式碼就能一次處理全部。把這段貼到 Output Log 的命令列中,並把它從 Cmd 切換為 Python:

import unreal

folder = "/Game/Characters"  # the folder Hero_rigged is in
for path in unreal.EditorAssetLibrary.list_assets(folder, recursive=False):
    anim = unreal.EditorAssetLibrary.load_asset(path)
    if isinstance(anim, unreal.AnimSequence) and anim.get_name().endswith("_RM"):
        anim.set_editor_property("enable_root_motion", True)
        unreal.EditorAssetLibrary.save_loaded_asset(anim)
        unreal.log("Root motion on: " + anim.get_name())

接著,如果你要在狀態機中播放這些動畫,就在 ABP_Hero 的 Class Defaults 中把 Root Motion Mode 設為 Root Motion from Everything;或是改用 montage 播放。

與 UE5 Mannequin 互相重定向

骨架的骨骼是依照 Mannequin 的骨骼命名的,所以 Unreal 的重定向工具幾乎不用調整就能對應。而且這是雙向的:可以把 Third Person 範本的動畫套到你的角色上,也可以把 afk.ai 的動畫套到 Manny 和 Quinn 身上。

在 Unreal 5.4 以上版本中:

  1. 對一個動畫(例如範本中的動畫)按右鍵,選擇 Retarget Animations(最新版本中是 Retarget Animation Assets)。
  2. 把 Target Preview Mesh 設為 Hero_rigged。來源是動畫原本搭配的網格。
  3. 保持 Auto Generate Retargeter 開啟:Unreal 會自己建立 IK Rig 和 IK Retargeter。
  4. 勾選你要的動畫,按下 Export Animations,選擇資料夾後按下 Export。

把來源和目標對調,就能把 Hero_rigged 的動畫套到 Mannequin 上。在 5.1~5.3 中,要為每個骨架各建立一個 IK Rig,並在兩者之間建立 IK Retargeter,然後使用重定向工具的 Export Selected Animations。無論哪種方式,正式使用前都先播放幾個結果檢查看看,尤其是手部。

生物和道具

同樣按右鍵,就能幫龍、馬、恐龍、蜘蛛或鯊魚綁定骨架:只要在選項視窗中選擇模型類型。每一種都有依身體打造的骨架,以及專為該骨架製作的動畫,例如拍翅、奔馳、咆哮或游泳,所以開放世界遊戲裡的野生動物不必再找人綁定骨架。道具則選 Object 類型:彈跳、旋轉、搖晃和擠壓,適合拾取物和門。動物教學列出了每種模型類型和它的動畫。

  • 龍
  • 四足動物
  • 有蹄動物
  • 恐龍
  • 蜘蛛
  • 魚
另外六種體型,在 afk.ai/rig 上綁骨後播放各自的動畫。

怎樣算一次綁定

每次送達 AFK AI 的綁定都會用掉本月的一次綁定次數,和在 afk.ai/rig 及其他 AFK AI 外掛程式中一樣。Stop waiting 只會讓 Unreal 停止等待:綁定仍會繼續進行,也照樣計次。失敗的綁定不計次,訊息也會說明原因。AFK AI 選單會顯示剩餘的綁定次數;次數用完時,See plans 會開啟 afk.ai 的方案。

出問題時

沒有 AFK AI 選單
在 Edit > Plugins 中確認 AFK AI 和 Python Editor Script Plugin 都已開啟,然後重新啟動。如果是其他問題,Output Log 會顯示「AFK AI couldn't start」和原因。
「has no source file recorded」
或 「was imported from a .obj file」:AFK AI 需要原始的 .fbx、.glb 或 .gltf。把模型匯出成其中一種格式,匯入後再綁定。
「Couldn't find Hero's source file」
檔案在匯入後被移動了。對網格按右鍵,選擇 Reimport With New File,選取檔案現在的位置,然後重新綁定。
「Unreal didn't import it as a skeletal mesh」
綁定其實成功了,FBX 也已儲存在訊息所說的位置。把它拖進 Content Browser,以 Skeletal Mesh 連同動畫一起匯入。Unreal 5.5 以後的新版匯入工具可能會發生這種情況。
「Couldn't make a secure connection to AFK AI」
有代理伺服器、防毒軟體或公司防火牆擋住了連線。換個網路試試。
綁定失敗
閱讀訊息。通常換一個模型類型,或讓模型直立並面向前方,就能解決。

常見問題

Unreal Engine 5 能自己幫角色自動綁定骨架嗎?

靜態網格不行。Unreal 可以在既有的骨架之間重定向動畫,也有手動建立和編輯骨架的工具,但沒有能自動幫網格綁定骨架的功能。AFK AI 外掛程式負責這一段:把靜態網格變成帶有蒙皮權重和動畫的骨架網格,接下來就交給 Unreal。

需要 C++ 或 Visual Studio 嗎?

不需要。外掛程式是 Unreal 自己執行的 Python,沒有任何東西需要編譯,所以只用 Blueprint 的專案也能使用。上面的 C++ 只是給已經在用 C++ 的專案參考。

支援哪些 Unreal Engine 版本?

Unreal Engine 5.1 以上版本,支援 Windows、Mac 和 Linux。

可以綁定從 .obj 匯入的模型嗎?

不能直接綁定:外掛程式會傳送網格的原始來源檔案,而它只接受 .fbx、.glb 或 .gltf。從你的 3D 軟體把模型匯出成其中一種格式,匯入後再綁定。

能搭配 UE5 Mannequin 的動畫使用嗎?

可以。骨骼是依照 Mannequin 的骨骼命名的,所以重定向工具幾乎不需要設定就能雙向對應。請參閱上方的「與 UE5 Mannequin 互相重定向」。

綁定好的角色可以用在要販售的遊戲中嗎?

可以。骨架和動畫都是 CC0,你的模型仍然屬於你。

如果想在其他軟體中使用,綁定好的檔案在哪裡?

Hero_rigged.fbx 會儲存在原始來源檔案旁邊,或專案的 Saved/AFK AI 資料夾中。它可以在 Blender、Maya 和任何能讀取 FBX 的軟體中開啟,動畫也一併包含在內。

Unity 或 Blender 也有外掛程式嗎?

有。請參閱 Unity 和 Blender 的教學,以及涵蓋全部九款軟體的 AFK AI 外掛程式總覽。

幫你的模型綁骨、製作動畫

AI 在你的瀏覽器中為它綁骨,然後數百個動畫就能在它身上播放。下載一個 GLB,任何引擎都能用。

幫模型綁骨

更多教學