教學教學閱讀約 8 分鐘

在 Unity 中幫任何 3D 模型自動綁定骨架: 直接設為 Humanoid,附帶動畫片段

在 Project 視窗中選取模型並按下 Rig。一分鐘後,旁邊就會出現一個已綁定骨架的 FBX,設為 Humanoid,每個動畫都是一個片段。

Window › AFK AI

AFK AI

Signed in as you@example.comSign out

Model

Hero.fbx

Body typehuman

All animationsRig only

FacingAuto

Adding the animations...

Stop waiting
Project › Assets/Characters
  • Hero.fbx
  • Hero_rigged.fbxHumanoid
  • └Idle_ALoop Time ✓
  • └WalkLoop Time ✓
  • └Jump_Startonce
  • └Sword_Attackonce
  • └…
  • └Hero_riggedAvatarAvatar
依外掛程式繪製的示意圖,不是截圖:AFK AI 視窗正在幫 Hero.fbx 綁定骨架,以及完成後的 Project 視窗,其中 Hero_rigged.fbx 已設為 Humanoid,循環片段也已標示出來。

在 Unity 中讓角色動起來,一般都得經過 Mixamo。你要匯出 FBX、上傳、在下巴、手腕、手肘和膝蓋上放標記,一個一個下載動畫,再把每個檔案設為 Humanoid,替每個片段勾選 Loop Time。而且這套流程只適用於人形角色。

AFK AI 套件讓你在 Unity 編輯器內的一個視窗就能完成這些事。在 Project 視窗中選取模型,按下 Rig。大約一分鐘後,Hero_rigged.fbx 就會出現在 Hero.fbx 旁邊,已經設為 Humanoid,每個動畫都是一個片段,走路和待機動畫也已設為循環播放。

在 Unity 中用 Mixamo 還是 AFK AI

Mixamo 免費,而且有大量人形角色動畫。AFK AI 則省去來回上傳下載的麻煩,也能綁定動物和道具,人形角色更能在一個檔案中拿到最多 593 種動畫。免費帳號可以使用免費動畫,付費方案則能解鎖其餘全部。

MixamoUnity 中的 AFK AI
在哪裡使用網站:上傳、綁定、下載Unity 編輯器中的一個視窗
你要做的事在下巴、手腕、手肘、膝蓋和胯部放標記選擇模型類型,按下 Rig
支援的身體只支援人形人形和其他 14 種模型類型
動畫一次下載一個該模型類型的全部動畫,放在一個 FBX 中
Unity 設定手動:設為 Humanoid,再替每個片段開啟 Loop Time已完成:Humanoid、每個動畫一個片段、循環已開啟
登入Adobe 帳號afk.ai 帳號,以 Google 登入

安裝套件

  1. 從 Unity 外掛程式頁面下載套件:一個 .tgz 檔案。把它放在專案以外、可以長期存放的地方,因為 Unity 會從這個檔案讀取套件。
  2. 在 Unity 中開啟 Window > Package Manager,按下左上角的 +,選擇 Add package from tarball...。
  3. 選取你下載的 .tgz 檔案。不要解壓縮。
  4. 開啟 Window > AFK AI。把視窗停駐在你喜歡的位置。

適用 Unity 2021.3 以上版本,包含 Unity 6,Built-in、URP 和 HDRP 管線都能用:外掛程式只處理模型匯入。它的程式碼全部只在編輯器中執行,所以不會有任何部分進入你的遊戲。

登入

  1. 在 AFK AI 視窗中按下 Sign in。瀏覽器會開啟 afk.ai 的登入頁面,用 Google 帳號登入。
  2. 瀏覽器顯示「You're signed in」後,關閉分頁並回到 Unity:視窗會顯示你的電子郵件,以及本月剩餘的綁定次數。

如果瀏覽器無法回到 Unity(有些資安軟體會阻擋),afk.ai 會改為顯示登入代碼。在 AFK AI 視窗中開啟 I have a sign-in code,貼上代碼,然後按下 Use code。

你的登入資訊存放在 Unity 為這台電腦上你的使用者帳戶保存的設定中,絕不會存進專案,所以分享或提交(commit)專案時,不會連帶分享你的帳號。

綁定模型骨架

  1. 在 Project 視窗中選取模型:最大 50 MB 的 .fbx、.glb 或 .gltf 檔案。已經放進場景中的模型也可以:外掛程式會傳送它的來源檔案。Unity 只有在安裝了 glTF 匯入工具時,才會把 .glb 檔案顯示為模型,但外掛程式無論如何都能傳送。
  2. 在 AFK AI 視窗中設定 Body type:人物和任何用兩隻腳走路的角色選 Human,否則選對應的動物或生物。
  3. 保持 All animations 開啟,或選 Rig only 只要骨架。Facing 保持 Auto。
  4. 按下 Rig。視窗會顯示進度:上傳、等待、綁定骨架、加入動畫、下載。這段期間你可以繼續工作,關閉視窗也不會中斷。

完成後,Hero_rigged.fbx 會儲存在 Hero.fbx 旁邊,並在 Project 視窗中選取並反白顯示。原始檔案不會被改動。

Unity 會拿到什麼

  • Humanoid:人物會以 Humanoid rig 匯入,並有自己的 Avatar(Hero_riggedAvatar),所以能和其他所有 Humanoid 角色雙向共用動畫。Unity 會自動把骨骼對應到 Humanoid 的各個槽位,連手指也一樣。
  • Generic:其他所有模型類型,從狐狸到龍,都以 Generic rig 匯入。
  • 片段:每個動畫都是獨立的片段,名稱和 afk.ai 上的一樣:Idle_A、Walk、Jog、Sprint、Jump_Start、Sword_Attack 等等。
  • 循環:名稱代表會重複的片段(idle、walk、run、fly、swim 之類)已開啟 Loop Time。像 Jump_Start、Sword_Attack 或 Death_A 這種一次性的動作只播放一次。
  • Root motion:名稱以 _RM 結尾的動畫(Roll_RM、Dodge_left_RM)會自己讓角色往前移動;其餘則在原地播放。

如果 Unity 無法把骨架對應到 Humanoid 骨骼,外掛程式會改把模型設為 Generic,並說明原因。動畫仍然可以播放,只是無法和其他 Humanoid 角色共用。

擺出 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 一致。

設定 Animator

做一個隨角色加速,從待機、走路、慢跑切換到衝刺的 blend tree,再加上按一個鍵就揮劍攻擊:

  1. 把 Hero_rigged.fbx 拖進場景。它已經有一個帶著 Avatar 的 Animator。幫它加上 Character Controller,並關閉 Animator 的 Apply Root Motion(改由腳本負責移動)。
  2. 在 Project 視窗中選擇 Create > Animator Controller(Unity 6 中是 Create > Animation > Animator Controller),命名為 Hero,再拖到 Animator 的 Controller 欄位上。
  3. 開啟它(Window > Animation > Animator)。在 Parameters 中加入一個名為 Speed 的 Float,以及一個名為 Attack 的 Trigger。
  4. 在圖上按右鍵,選擇 Create State > From New Blend Tree。按兩下開啟它,把參數設為 Speed,並加入四個 motion:Hero_rigged.fbx 中的 Idle_A、Walk、Jog 和 Sprint(在 Project 視窗中按一下它的箭頭就能看到片段)。關閉 Automate Thresholds,把門檻值設為角色移動的速度,例如 0、1.5、3.5 和 6。
  5. 回到 Base Layer,把 Sword_Attack 片段拖進來。從 blend tree 建立一個到它的轉換,條件設為 Attack 並關閉 Has Exit Time,讓它立刻開始;再建立一個回到 blend tree 的轉換,並開啟 Has Exit Time。
  6. 把這個腳本加到角色上:
using UnityEngine;

// Moves the character and tells its Animator how fast it's going.
[RequireComponent(typeof(Animator), typeof(CharacterController))]
public class HeroAnimation : MonoBehaviour
{
    static readonly int Speed = Animator.StringToHash("Speed");
    static readonly int Attack = Animator.StringToHash("Attack");

    [SerializeField] float runSpeed = 6f;
    Animator animator;
    CharacterController controller;

    void Awake()
    {
        animator = GetComponent<Animator>();
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // The Input Manager's axes. With only the Input System package, read your Move action here instead.
        var input = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
        var move = Vector3.ClampMagnitude(input, 1f) * runSpeed;
        controller.SimpleMove(move);
        if (move.sqrMagnitude > 0.01f) transform.rotation = Quaternion.LookRotation(move);

        animator.SetFloat(Speed, move.magnitude, 0.1f, Time.deltaTime); // eased, so the blend doesn't snap
        if (Input.GetButtonDown("Fire1")) animator.SetTrigger(Attack);
    }
}

按下 Play:用搖桿或方向鍵,角色就會待機、走路、慢跑和衝刺,按一下滑鼠就會揮劍。

EntryLocomotionBlend Tree · Idle_A, Walk, Jog, Sprint↓ Attack↑ Has Exit TimeSword_Attack
示意圖:Animator Controller。Locomotion 混合樹依 Speed 從 Idle_A 過渡到 Sprint;Attack 觸發器會播放 Sword_Attack,播放結束後再回到混合樹。

和其他角色共用動畫

因為綁定好的人物是 Humanoid,Unity 會幫你處理重定向。把任何 Humanoid 片段(來自 Asset Store 或你自己的動畫庫)套到它身上,就能直接播放。反過來,它的片段也能在你現有的任何 Humanoid 角色上播放:把 Hero_rigged.fbx 的 Sprint 片段拖進另一個角色的 Animator Controller,那個角色就會跑起來。

動物和生物是 Generic,所以它們的片段只能在自己的骨架上播放。不過,AFK AI 綁定為同一種模型類型的模型,都有相同的骨骼和動畫名稱,所以一隻狐狸的 Animator Controller 能驅動你綁定的任何其他狐狸。

動物、生物和道具

按下 Rig 之前,先在視窗中選擇模型類型:狗、貓和狼選 Fox,有蹄類動物選 Horse,還有 Bird、Dragon、恐龍用的 Kaiju、Spider、Insect、Snake、Fish、Kangaroo、Frog、Turtle、Ghost,會彈跳、旋轉和搖晃的道具則選 Object。每一種都有依身體打造的骨架和專為該骨架製作的動畫,並以 Generic rig 匯入,片段和循環也同樣設定好了。動物教學列出了每種類型附帶的內容。

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

怎樣算一次綁定

每次 AFK AI 接受的 Rig 點擊,都會用掉本月的一次綁定次數,和在 afk.ai/rig 或其他任何 AFK AI 外掛程式中綁定一樣。失敗的綁定不計次。Stop waiting 會讓 Unity 停止等待,但綁定仍會繼續進行,也照樣計次。如果連線中斷,Try again 會接續同一次綁定,絕不會重複計次。次數用完時,視窗會顯示 See plans,點下去會開啟 afk.ai 的方案。

出問題時

登入後瀏覽器無法連回頁面
使用 I have a sign-in code。
無法連線到 AFK AI
檢查網路連線,然後按下 Try again。它會接續同一次綁定。
模型太大
AFK AI 接受最大 50 MB 的模型。匯出一個較輕量的版本,減少多邊形或縮小貼圖。
「keeps its data in separate files」
表示 .gltf 旁邊還有 .bin 檔。改為匯出 .glb。
片段不該循環卻循環了
選取 Hero_rigged.fbx,在 Inspector 中開啟 Animation 分頁,選擇該片段,修改 Loop Time,然後按下 Apply。
按下 Rig 沒有反應
先在 Project 視窗中選取一個 .fbx、.glb 或 .gltf。視窗會說明缺少什麼。

常見問題

還需要 Mixamo 嗎?

不需要。外掛程式一步就能綁定骨架並加入動畫,而且已設為 Humanoid。你仍然可以在它身上使用 Mixamo 的動畫:為任何 Humanoid 角色下載動畫,設為 Humanoid,就能在你的角色上播放。

AFK AI 套件會進入我的遊戲建置版本嗎?

不會。它的程式碼全部放在只供編輯器使用的組件(assembly)中。留在專案裡的是綁定好的 FBX,也就是一般的模型資源。

支援 Unity 6 嗎?

支援。適用 Unity 2021.3 及之後的所有版本,包含 Unity 6。

可以在 Unity 中綁定 .glb 或 .gltf 模型嗎?

可以。即使 Unity 沒有能把它顯示為模型的 glTF 匯入工具,外掛程式也會照原樣傳送檔案。傳回來的是 FBX,Unity 不需要額外安裝任何東西就能匯入。.gltf 必須內嵌所有資料,否則請改為匯出 .glb。

綁好的骨架能用在 VRChat Avatar 上嗎?

可以。綁定好的人物是 Humanoid,而且每根手指都有骨骼,這正是 VRChat 需要的。其餘設定請參閱 VRChat 教學。

角色面向錯誤的方向怎麼辦?

把 Facing 設為它轉動的角度(90°、180° 或 270°),重新綁定。大部分模型用 Auto 就能正確判斷。

可以用腳本綁定整個資料夾的模型嗎?

外掛程式一次只能綁定一個模型。如果要批次處理或整合到建置流程,請使用骨架綁定 API,從命令列或你自己的程式碼呼叫。

Unreal、Godot 或 Blender 也有外掛程式嗎?

有:Unreal Engine、Godot 和 Blender 都有各自的教學,AFK AI 外掛程式總覽則涵蓋全部九款軟體。

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

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

幫模型綁骨

更多教學