ガイド使い方読了時間:6分
Godot 4で3Dキャラクターをリギングして動かす: AFK AIアドオン、AnimationPlayer、AnimationTree
FileSystemドックでモデルを選んで「Rig」を押すと、約1分後にアニメーション付きのリギング済みGLBが隣に現れます。歩きや待機はループ設定済みです。
Signed in as you@example.comSign out
3 of 3 rigs left this month.
Model: hero.glb
Body typeHuman
AnimationsAll animations
FacingAuto
RigRigging...Cancel
- hero_riggedNode3D
- └Skeleton3DSkeleton3D
- └HeroMeshInstance3D
- └AnimationPlayerAnimationPlayer
- └Idle_Aloop ⟳
- └Walkloop ⟳
- └Jogloop ⟳
- └Sprintloop ⟳
- └…
Godotはアニメーションの再生は得意ですが、リグを作る機能はありません。そのため、キャラクターを用意するには外部ツールとの往復が必要です。エクスポートしてBlender(人型だけならMixamoも可)でリギングし、アニメーションを探し、GLBをエクスポートして、インポート後にループするアニメーションをまた一つずつループに設定し直します。
AFK AIアドオンなら、その往復をGodotエディターのドックから行えます。FileSystemドックでモデルをクリックし、Rigを押します。約1分後、hero.glbの隣にhero_rigged.glbが保存されます。体に合わせて作られたスケルトン、ウェイト、そしてAnimationPlayerに入ったアニメーション付きです。待機、歩き、走りはループ設定済みです。
必要なもの
- Godot
- 4.2以降。標準版でも.NET版でもかまいません。
- モデル
- プロジェクト内の
.glb、.gltf、.fbx(50MBまで)。.gltfはすべてのデータが1つのファイルに入っている必要があります。隣に.binがある場合は、代わりに.glbをエクスポートします。 - afk.aiアカウント
- 無料で、Googleでログインします。リギング1回ごとに、アカウントの月間リギング回数を1回分使います。afk.ai/rigと同じです。
- インターネット接続
- リギングはafk.aiのサーバーで行います。送信されるのは選んだモデルファイルだけです。
アドオンのインストール
- Godotプラグインのページからアドオンをダウンロードします。
- 中の
addons/afk_aiフォルダーを、プロジェクトのaddonsフォルダーにコピーします。addonsフォルダーがなければ作成します。 - Project > Project Settings > Pluginsを開き、AFK AIの横のEnableにチェックを入れます。
右側のInspectorの隣にAFK AIドックが現れます。
モデルをリギングする
- ログイン。 AFK AIドックでSign inをクリックします。ブラウザでafk.aiが開くので、Googleでログインします。ドックにメールアドレスと今月の残りリギング回数が表示されます。ブラウザからGodotに戻れない場合は、代わりにログインコードが表示されます。I have a sign-in codeの下に貼り付けて、Useをクリックします。
- モデルを選択。 FileSystemドックで、モデルのファイルをクリックします。
- オプションを選択。 Body typeは、人や二足歩行のものならHuman、それ以外は該当する動物やクリーチャーを選びます。AnimationsはAll animations、スケルトンだけならRig onlyです。FacingはAutoのままにします。
- Rigをクリック。 ドックに処理の状況が表示されます。アップロード、待機、リギング、ダウンロードの順です。その間も作業を続けられます。
完了すると、hero.glbの隣にhero_rigged.glbが保存され、インポートされて選択された状態になります。元のファイルは変更されません。同じモデルをもう一度リギングするとhero_rigged_2.glbになるので、上書きされることはありません。
リギング済みGLBの中身
使うときはhero_rigged.glbをシーンにドラッグします。すべてを子に持つ1つのノードとして追加されます。
- Skeleton3D
- ボディタイプに合わせて作られたスケルトンで、メッシュがスキニングされています。人型なら、すべての指を含む66本のボーンが入り、pelvis、spine_01、hand_r、foot_lなどの名前が付きます。
- AnimationPlayer
- すべてのアニメーションが、それぞれの名前で入っています。人型なら最大593種類で、Idle_A、Walk、Jog、Sprint、Jump_Start、Sword_Attack、Dance_Grooveをはじめ、数百種類あります。無料アカウントでは無料のアニメーションのみ、プランに加入するとすべてのアニメーションを利用できます。
- ループ
- 待機、歩き、走り、飛行、泳ぎはループ設定済みです。Godotがインポートする前に、アドオンがファイルのインポート設定に書き込んでいます。
- 向き
- GlTFモデルの標準どおり、キャラクターは+Z方向を向いています。
AnimationPlayerでアニメーションを再生
最もシンプルなプレイヤーキャラクターは、CharacterBody3DにCollisionShape3D(カプセル)を付け、その下にリギング済みモデルをドラッグしてHeroという名前に変えたものです。CharacterBody3Dに次のスクリプトをアタッチします。
extends CharacterBody3D
const SPEED := 4.0
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
@onready var hero: Node3D = $Hero
@onready var anim: AnimationPlayer = $Hero/AnimationPlayer
func _physics_process(delta: float) -> void:
var input := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
var direction := Vector3(input.x, 0.0, input.y)
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
if not is_on_floor():
velocity.y -= gravity * delta
move_and_slide()
if direction.length() > 0.1:
# the model faces +Z: turn that toward where it's going
hero.rotation.y = lerp_angle(hero.rotation.y, atan2(direction.x, direction.z), 10.0 * delta)
anim.play("Jog", 0.2) # 0.2 s blend from whatever was playing
else:
anim.play("Idle_A", 0.2)実行すると、矢印キーでキャラクターがジョギングし、キーを離すと滑らかに待機に戻ります。すでに再生中のアニメーションでplayを呼ぶとそのまま再生が続くので、毎フレーム呼んでも問題ありません。
AnimationTreeでブレンドする
AnimationTreeを使うと、速度に応じてアニメーションをブレンドしたり、攻撃のような一度きりの動きを扱ったりできます。エディターで一度だけセットアップします。
- キャラクターにAnimationTreeノードを追加します。InspectorでAnim Playerを
Hero/AnimationPlayerに、Tree Rootを新しいAnimationNodeStateMachineに設定します。 - 下部のAnimationTreeパネルで右クリックし、BlendSpace1Dを追加します。
Locomotionという名前を付けて開き、Idle_Aを0、Walkを1.5、Jogを4の位置に置いて、3つのポイントを追加します(Max Spaceは4に設定)。 - もう一度右クリックしてSword_Attackアニメーションを追加します。StartからLocomotion、LocomotionからSword_Attackへ接続し、Sword_AttackからLocomotionに戻る接続は、Switch ModeをAt End、Advance ModeをAutoに設定します。
- Project > Project Settings > Input Mapで
attackというアクションを追加し、キーを割り当てます。
次に、同じスクリプトからanim.playの2行を削除し、代わりにツリーを動かします。
@onready var tree: AnimationTree = $AnimationTree
@onready var playback: AnimationNodeStateMachinePlayback = tree.get("parameters/playback")
func _process(_delta: float) -> void:
tree.set("parameters/Locomotion/blend_position", Vector2(velocity.x, velocity.z).length())
if Input.is_action_just_pressed("attack"):
playback.travel("Sword_Attack")
AnimationTreeが有効な間は、アニメーションを再生するのはAnimationTreeです。AnimationPlayerのplayを併用しないようにします。
剣を持たせる、ループを変更する
キャラクターの手に何かを持たせるには、Skeleton3Dを選択してその下にBoneAttachment3Dを追加し、Bone Nameをhand_rに設定して、剣をアタッチメントの下に置きます。剣はどのアニメーションでも手に追従します。
ループするアニメーションを変更するには、FileSystemドックでhero_rigged.glbをダブルクリックしてAdvanced Import Settingsを開きます。左側のAnimationPlayerの下にあるアニメーションを選び、Loop Modeを変更してReimportをクリックします。
動物、クリーチャー、小物
「Rig」を押す前に、ドックでボディタイプを選びます。犬、猫、オオカミならFox、ひづめのある動物ならHorse、ほかにBird、Dragon、恐竜ならKaiju、Spider、Insect、Snake、Fish、Kangaroo、Frog、Turtle、Ghost、小物ならObjectです。それぞれに体に合わせたスケルトンと、ギャロップ、羽ばたき、咆哮、泳ぎ、這う動きなど、専用のアニメーションが付きます。再生方法は同じで、AnimationPlayerとAnimationTreeをそのまま使えます。同じボディタイプでリギングしたモデルはボーン名もアニメーション名も共通なので、1匹のオオカミ用のAnimationTreeがすべてのオオカミで使えます。各ボディタイプのアニメーションは動物のリギングガイドで紹介しています。
- ドラゴン
- 四足歩行
- ひづめのある動物
- 恐竜
- クモ
- 魚
リギング回数のカウント
AFK AIに届いたリギングは、1回ごとに今月のリギング回数を1回分使います。afk.ai/rigやほかのAFK AIプラグインと同じです。Cancelは待機を止めるだけで、リギングは止まらず、回数にもカウントされます。失敗したリギングはカウントされません。回数を使い切ると、ドックにその旨とSee plansが表示され、afk.aiのプランを開けます。
よくある質問
Godotに自動リギング機能は組み込まれていますか?
いいえ。Godotは既存のスケルトンとアニメーションをインポートでき、リターゲット機能で人型スケルトン同士を対応付けることもできますが、メッシュをリギングする機能はありません。その部分をAFK AIアドオンが担い、通常のGLBとしてGodotに渡します。
Godot 3で使えますか?
いいえ。Godot 4.2以降が必要です。Godot 3では、afk.ai/rigでモデルをリギングし、ダウンロードしたGLBをインポートします。
C#プロジェクトで使えますか?
はい。アドオンはGDScriptで書かれていて、Godotの.NET版でも動きます。リギング済みGLBもどちらでも同じです。C#ではGetNode<AnimationPlayer>("Hero/AnimationPlayer").Play("Jog", 0.2);でアニメーションを再生できます。
なぜFBXではなくGLBなのですか?
GLBはGodotが最もきれいにインポートできる形式です。スケルトン、ウェイト、すべてのアニメーションが、Godot 4のどのバージョンでもそのまま読み込まれます。元のモデルはFBXでもかまいませんが、戻ってくるのはGLBです。
アドオンはエクスポートしたゲームに含まれますか?
ゲームで使うのはリギング済みGLBです。アドオン自体はエディター内でしか動作しません。アドオンのファイルをエクスポートから外すには、エクスポートプリセットのResourcesタブでaddons/afk_ai/*を除外します。
複数のモデルを一度にリギングできますか?
一度に1つずつで、それぞれ約1分かかります。フォルダー内のモデルをスクリプトでまとめてリギングするなら、リギングAPIを使います。同じGLBが書き出されます。
リギングしたキャラクターを商用ゲームで使えますか?
はい。スケルトンとアニメーションはCC0で、モデルの権利はそのままご自身に残ります。
Blender、Unity、Unreal用のAFK AIプラグインもありますか?
はい。Blender、Unity、Unreal Engineのガイドを、9つのアプリすべてについてはAFK AIプラグインの概要を参照してください。
モデルをリギングして動かす
ブラウザ上でモデルをアップロードすると、AIがリギングし、数百種類のアニメーションをその場で再生できます。どのエンジンでも使えるGLBファイルにまとめてダウンロードできます。
ほかのガイド
使い方
Blenderでキャラクターを自動リギング:無料のAFK AIアドオン
モデルを選んで「Rig」を押すと、約1分後にアニメーション付きのリギング済みコピーが隣に現れます。Blender 4.2以降に対応。
使い方
Unreal Engine 5でキャラクターを自動リギング:スタティックメッシュからアニメーション付きスケルタルメッシュへ
メッシュを右クリックして「Rig with AFK AI」を選ぶと、約1分後にスケルトン、物理アセット、アニメーション付きのスケルタルメッシュが同じフォルダーに現れます。
使い方
Unityで3Dモデルを自動リギング:Humanoid対応、アニメーションクリップ付き
Projectウィンドウでモデルを選んで「Rig」を押すと、約1分後にリギング済みFBXが隣に現れます。Humanoid設定済みで、すべてのアニメーションがクリップになっています。