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

Unreal Engine 5でキャラクターを自動リギング: スタティックメッシュからアニメーション付きスケルタルメッシュへ

メッシュを右クリックして「Rig with AFK AI」を選ぶと、約1分後にスケルトン、物理アセット、アニメーション付きのスケルタルメッシュが同じフォルダーに現れます。

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と、それによって元のメッシュの隣に追加されるスケルタルメッシュ、スケルトン、物理アセット、アニメーション。

Unreal Engineはキャラクターを見事にアニメーションさせられますが、リギングはしてくれません。スカルプトアプリやマーケットプレイスのパックから持ってきたスタティックメッシュには、スケルトンもウェイトもありません。そのため、遠回りするのが普通です。エクスポートしてBlenderやMixamoでリギングし、スケルタルメッシュとしてインポートし直してから、合うアニメーションを探します。

AFK AIプラグインなら、その遠回りが要りません。Content Browserでメッシュを右クリックし、Rig with AFK AIを選びます。約1分後、同じフォルダーにHero_riggedというスケルタルメッシュが、スケルトン、物理アセット、アニメーションとともに置かれ、すぐにAnimation Blueprintで使えます。C++のコンパイルが不要なので、Blueprintのみのプロジェクトでも動きます。

必要なもの

Unreal Engine
5.1以降(Windows、Mac、Linux)。Blueprintのみのプロジェクトでも問題ありません。
メッシュ
.fbx、.glb、.gltfファイルからインポートしたスタティックメッシュまたはスケルタルメッシュ(50MBまで)。AFK AIにはその元ファイルが送られます。
afk.aiアカウント
無料で、Googleでログインします。リギング1回ごとに、アカウントの月間リギング回数を1回分使います。afk.ai/rigと同じです。
インターネット接続
リギングはafk.aiのサーバーで行います。

プラグインのインストール

  1. Unreal Engineプラグインのページからプラグインをダウンロードして解凍します。AFKAIというフォルダーが入っています。
  2. それをプロジェクトのPluginsフォルダー(.uprojectファイルと同じ場所)に入れ、MyGame/Plugins/AFKAI/AFKAI.upluginとなるようにします。Pluginsフォルダーがなければ作成します。
  3. プロジェクトを開くか、再起動します。プラグインが、Unreal付属の2つのプラグイン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のまま)を指定します。ウィンドウのタイトルには、リギング回数を1回分使うことが表示されています。OKをクリックします。
  4. そのまま作業を続けられます。進行状況はAFK AIメニューと、Output Logの「AFK AI」で始まる行に表示されます。

ブラウザからUnrealに戻れない場合(ファイアウォールや、Unrealが別のパソコンで動いている場合など)は、afk.aiのページにログインコードが表示されます。AFK AI > I have a sign-in code...を選び、コードを貼り付けてOKをクリックします。

作成されるもの

  • スケルタルメッシュ:Hero_rigged。元のメッシュと同じフォルダーに、選択された状態で作られます。元のメッシュは変更されません。
  • スケルトン:ボディタイプに合わせて作られます。人型なら、各指に3つずつの関節を含む66本のボーンが入り、Unreal自身のマネキンと同じボーン名(pelvis、spine_01、clavicle_l、upperarm_l、thigh_lなど)が付きます。
  • 物理アセット:インポート時に作成され、ラグドールやコリジョンに使えます。
  • アニメーション:アニメーションごとに1つのアニメーションシーケンスが作られます。人型なら最大593種類で、待機、歩き、ジョギング、全力疾走、ジャンプ、回避、剣・盾・弓・ピストルの動き、ダンス、被弾、死亡などがあります。無料アカウントでは無料のアニメーションのみ、プランに加入するとすべてのアニメーションを利用できます。
  • FBX:Hero_rigged.fbx。元のソースファイルの隣に保存されます。そこに書き込めない場合は、プロジェクトのSaved/AFK AIフォルダーに保存されます。もう一度リギングするとHero_rigged_2になり、上書きされることはありません。

通常のインポートと同じく、新しいアセットは保存するまでディスクに書き込まれません。File > Save Allで保存します。

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のマネキンに合わせています。

コードなしで動かしてみる

Hero_riggedをレベルにドラッグします。DetailsパネルのAnimationで、Animation ModeをUse Animation Assetに設定し、Anim to Playでアニメーション(たとえばWalk)を選び、Loopingはオンのままにします。Playを押すか、そのままビューポートで動きを確認します。

すべてのアニメーションをすばやく確認するには、いずれかのアニメーションシーケンスをダブルクリックします。アニメーションエディターが開き、キャラクターで再生されます。

プレイヤーキャラクター用の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の3つのステートを作り、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に設定します。テンプレートのマネキンと同じように、カプセルの底まで下げ、青い矢印の方を向くように回転させます。

C++から始めたい場合は、同じ考え方を最小限にしたものがこちらです。ゲーム開始時に、ループするアニメーションを1つ再生します。

// 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ステートマシンの図。各ステートで1つのアニメーションを再生し、Speed(単位はcm/秒)に応じてステート間を移動します。

Pythonで少しだけ:ルートモーション

一部のアニメーションは、アニメーション自体でキャラクターが前に進みます。Roll_RM、Dodge_left_RM、Sword_Dash_RMのように、名前が_RMで終わるものです。それ以外はその場で再生されます。Unrealではアニメーションごとにルートモーションを有効にする必要がありますが、プラグインがすでに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に設定します。または、モンタージュとして再生します。

UE5マネキンとの相互リターゲット

スケルトンのボーン名はマネキンに合わせてあるので、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はオンのままにします。IK RigとIK RetargeterはUnrealが自動で作成します。
  4. 使いたいアニメーションにチェックを入れてExport Animationsをクリックし、フォルダーを選んでExportをクリックします。

Hero_riggedのアニメーションをマネキンで使うには、ソースとターゲットを入れ替えます。5.1〜5.3では、スケルトンごとにIK Rigを作り、その間にIK Retargeterを作ってから、リターゲッターのExport Selected Animationsを使います。どちらの方法でも、本番で使う前にいくつか再生して確認しておきます。特に手の動きに注意します。

クリーチャーと小物

同じ右クリックで、ドラゴン、馬、恐竜、クモ、サメもリギングできます。オプションのウィンドウでボディタイプを選ぶだけです。それぞれに体に合わせたスケルトンと、羽ばたき、ギャロップ、咆哮、泳ぎなど、そのスケルトン用のアニメーションが付くので、オープンワールドゲームの野生動物にリギング担当者は要りません。小物にはObjectタイプを使います。弾む、回る、揺れる、つぶれるといった動きで、アイテムやドアに使えます。すべてのボディタイプとそのアニメーションは動物のリギングガイドで紹介しています。

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

リギング回数のカウント

AFK AIに届いたリギングは、1回ごとに今月のリギング回数を1回分使います。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で使えますか?

Windows、Mac、LinuxのUnreal Engine 5.1以降です。

.objからインポートしたモデルをリギングできますか?

直接はできません。プラグインはメッシュの元のソースファイルを送信し、対応形式は.fbx、.glb、.gltfです。3Dアプリでモデルをいずれかの形式にエクスポートしてインポートし、それをリギングします。

UE5マネキンのアニメーションは使えますか?

はい。ボーン名がマネキンに合わせてあるので、リターゲッターがほとんど設定なしで、双方向に対応付けます。詳しくは上の「UE5マネキンとの相互リターゲット」を参照してください。

リギングしたキャラクターを販売するゲームで使えますか?

はい。スケルトンとアニメーションはCC0で、モデルの権利はそのままご自身に残ります。

別のアプリで使いたい場合、リギング済みファイルはどこにありますか?

Hero_rigged.fbxが、元のソースファイルの隣か、プロジェクトのSaved/AFK AIフォルダーに保存されています。Blender、Maya、そのほかFBXを読み込めるアプリなら、アニメーションも含めて開けます。

UnityやBlender用のプラグインもありますか?

はい。UnityとBlenderのガイドを、9つのアプリすべてについてはAFK AIプラグインの概要を参照してください。

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

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

モデルをリギング

ほかのガイド