ガイド使い方読了時間:8分

Unityで3Dモデルを自動リギング: Humanoid対応、アニメーションクリップ付き

Projectウィンドウでモデルを選んで「Rig」を押すと、約1分後にリギング済み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
スクリーンショットではなく、プラグインをもとに描いた図です。Hero.fbxをリギング中のAFK AIウィンドウと、完了後のProjectウィンドウ。Hero_rigged.fbxはHumanoidに設定され、ループするクリップには印が付いています。

Unityでキャラクターを動かす定番の方法は、Mixamoを経由することです。FBXをエクスポートしてアップロードし、あご、手首、ひじ、ひざにマーカーを置き、アニメーションを1つずつダウンロードしてから、すべてのファイルをHumanoidに設定し、クリップごとにLoop Timeにチェックを入れます。しかも、使えるのは人型だけです。

AFK AIパッケージなら、これをUnityエディター内のウィンドウから行えます。Projectウィンドウでモデルを選び、Rigを押すだけ。約1分後にはHero.fbxの隣にHero_rigged.fbxが置かれています。Humanoidとしてセットアップ済みで、各アニメーションはクリップになり、歩きや待機のクリップはループ設定済みです。

MixamoとUnity版AFK AIの比較

Mixamoは無料で、人型向けのアニメーションライブラリも充実しています。AFK AIなら行ったり来たりの手間が省け、動物や小物もリギングでき、人型なら最大593種類のアニメーションが1つのファイルにまとまって届きます。無料アカウントでは無料のアニメーションのみ、プランに加入するとすべてのアニメーションを利用できます。

MixamoUnity版AFK AI
使う場所Webサイト:アップロード、リギング、ダウンロードUnityエディター内のウィンドウ
作業内容あご、手首、ひじ、ひざ、股にマーカーを置くボディタイプを選んで「Rig」をクリック
対応する体人型のみ人型と、ほかの14種類のボディタイプ
アニメーション1つずつダウンロードボディタイプのすべてのアニメーションを1つのFBXに
Unityでの設定手作業:Humanoidに設定し、クリップごとにLoop Timeをオン設定済み:Humanoid、アニメーションごとに1クリップ、ループもオン
ログインAdobeアカウントafk.aiアカウント(Googleでログイン)

パッケージのインストール

  1. Unityプラグインのページからパッケージをダウンロードします。.tgzファイル1つです。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自体の設定に保存され、プロジェクトには保存されません。プロジェクトを共有したりコミットしたりしても、ログイン情報が共有されることはありません。

モデルをリギングする

  1. Projectウィンドウでモデルを選択します。50MBまでの.fbx、.glb、.gltfファイルです。シーンに配置したモデルでもかまいません。その場合、プラグインは元のファイルを送信します。UnityはglTFインポーターが入っていないと.glbファイルをモデルとして表示しませんが、プラグインはどちらの場合でも送信できます。
  2. AFK AIウィンドウでBody typeを設定します。人や二足歩行のものならHuman、それ以外は該当する動物やクリーチャーを選びます。
  3. All animationsはオンのままにします。スケルトンだけが必要ならRig onlyを選びます。FacingはAutoのままにします。
  4. Rigをクリックします。ウィンドウに進行状況が表示されます。アップロード、待機、リギング、アニメーションの追加、ダウンロードの順です。その間も作業を続けられ、ウィンドウを閉じても処理は止まりません。

完了すると、Hero.fbxの隣にHero_rigged.fbxが保存され、Projectウィンドウで選択・ハイライトされます。元のファイルは変更されません。

Unityに追加されるもの

  • Humanoid:人は専用のAvatar(Hero_riggedAvatar)付きのHumanoidリグとして読み込まれるので、ほかのHumanoidキャラクターと双方向にアニメーションを共有できます。指も含め、UnityがボーンをHumanoidのスロットに自動で割り当てます。
  • Generic:キツネからドラゴンまで、それ以外のボディタイプはすべてGenericリグとして読み込まれます。
  • クリップ:アニメーションごとに1つのクリップになり、afk.aiと同じ名前が付きます。Idle_A、Walk、Jog、Sprint、Jump_Start、Sword_Attackなどです。
  • ループ:繰り返すことが名前からわかるクリップ(idle、walk、run、fly、swimなど)はLoop Timeがオンになっています。Jump_Start、Sword_Attack、Death_Aのような一度きりのクリップは1回だけ再生されます。
  • ルートモーション:名前が_RMで終わるもの(Roll_RM、Dodge_left_RMなど)は、アニメーション自体でキャラクターが前に進みます。それ以外はその場で再生されます。

UnityがスケルトンをHumanoidのボーンに対応付けられない場合、プラグインはモデルを代わりにGenericとして設定し、その理由を表示します。アニメーションはそのまま再生できますが、ほかのHumanoidキャラクターとは共有できません。

Tポーズのアニメ風キャラクターに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で人型モデルに配置するスケルトンは共通です。親指を含むすべての指に関節が3つずつあり、計66本のボーンで構成されています。ボーン名はUnreal Engineのマネキンに合わせています。

Animatorのセットアップ

キャラクターの速度に応じて待機、歩き、ジョギング、全力疾走と切り替わるブレンドツリーと、ボタンで出す剣の攻撃を作ります。

  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に設定し、Hero_rigged.fbxのIdle_A、Walk、Jog、Sprintの4つをモーションとして追加します(Projectウィンドウでファイルの矢印をクリックするとクリップが表示されます)。Automate Thresholdsをオフにし、しきい値をキャラクターの移動速度に合わせて設定します。たとえば0、1.5、3.5、6です。
  5. Base Layerに戻り、Sword_Attackクリップをドラッグします。ブレンドツリーからこのクリップへのトランジションを作り、条件をAttackにして、すぐに始まるようHas Exit Timeをオフにします。ブレンドツリーに戻るトランジションは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が行います。Asset Storeや手持ちのライブラリにあるHumanoidクリップなら、どれでもそのまま再生できます。逆に、このキャラクターのクリップも、手持ちのどのHumanoidキャラクターでも再生できます。Hero_rigged.fbxのSprintクリップを別のキャラクターのAnimator Controllerにドラッグすれば、そのキャラクターが走り出します。

動物やクリーチャーはGenericなので、クリップはそれぞれのスケルトンでのみ再生できます。ただし、AFK AIで同じボディタイプとしてリギングしたモデルはボーン名もアニメーション名も共通なので、1匹のキツネ用のAnimator Controllerで、ほかにリギングしたキツネもすべて動かせます。

動物、クリーチャー、小物

「Rig」を押す前に、ウィンドウでボディタイプを選びます。犬、猫、オオカミならFox、ひづめのある動物ならHorse、ほかにBird、Dragon、恐竜ならKaiju、Spider、Insect、Snake、Fish、Kangaroo、Frog、Turtle、Ghost、弾む・回る・揺れる小物ならObjectです。それぞれに体に合わせたスケルトンと、そのスケルトン用のアニメーションが付き、Genericリグとして、クリップとループの設定も同じように済んだ状態で読み込まれます。各ボディタイプに付くアニメーションは動物のリギングガイドで紹介しています。

  • ドラゴン
  • 四足歩行
  • ひづめのある動物
  • 恐竜
  • クモ
  • 魚
人型以外の6つのボディタイプをafk.ai/rigでリギングした例です。それぞれに対応したアニメーションを再生しています。

リギング回数のカウント

AFK AIが受け付けたRigのクリックは、1回ごとに今月のリギング回数を1回分使います。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が受け付けるのは50MBまでのモデルです。ポリゴン数を減らしたり、テクスチャを小さくしたりして、軽いモデルをエクスポートします。
「keeps its data in separate files」と表示される
.binが隣にある.gltfです。代わりに.glbをエクスポートします。
ループすべきでないクリップがループする
Hero_rigged.fbxを選択し、InspectorのAnimationタブを開いてクリップを選び、Loop Timeを変更してApplyをクリックします。
Rigを押しても何も起こらない
先にProjectウィンドウで.fbx、.glb、.gltfのいずれかを選択します。足りないものはウィンドウに表示されます。

よくある質問

Mixamoはまだ必要ですか?

いいえ。プラグインがモデルのリギングとアニメーションの追加を一度に行い、Humanoidとしてセットアップします。Mixamoのアニメーションを使うこともできます。任意のHumanoidキャラクター用にダウンロードしてHumanoidに設定すれば、このキャラクターでも再生できます。

AFK AIパッケージはゲームのビルドに含まれますか?

いいえ。コードはすべてエディター専用のアセンブリに入っています。プロジェクトに残るのは、通常のモデルアセットであるリギング済みFBXです。

Unity 6で使えますか?

はい。Unity 2021.3以降のすべてのバージョンで使えます。Unity 6も含まれます。

Unityで.glbや.gltfのモデルをリギングできますか?

はい。UnityにglTFインポーターがなく、モデルとして表示されない場合でも、プラグインはファイルをそのまま送信します。戻ってくるのはFBXなので、Unityでは追加のパッケージなしでインポートできます。.gltfはすべてのデータを埋め込んだものに限ります。そうでない場合は.glbをエクスポートします。

VRChatのアバターにも使えますか?

はい。リギングされた人はすべての指を含むHumanoidで、VRChatに必要な条件を満たしています。残りのセットアップはVRChatガイドで解説しています。

キャラクターが違う方向を向いている場合は?

Facingをモデルが回転している角度(90°、180°、270°)に設定して、もう一度リギングします。ほとんどのモデルはAutoで正しく判定されます。

フォルダー内のモデルをスクリプトでまとめてリギングできますか?

プラグインでリギングできるのは一度に1つのモデルです。まとめて処理したい場合やビルドパイプラインに組み込む場合は、コマンドラインや自作のコードからリギングAPIを使います。

Unreal、Godot、Blender用のプラグインもありますか?

はい。Unreal Engine、Godot、Blenderにはそれぞれ専用のガイドがあり、AFK AIプラグインの概要では9つのアプリすべてを紹介しています。

モデルをリギングして動かす

ブラウザ上でモデルをアップロードすると、AIがリギングし、数百種類のアニメーションをその場で再生できます。どのエンジンでも使えるGLBファイルにまとめてダウンロードできます。

モデルをリギング

ほかのガイド