メインコンテンツまでスキップ

アニメーションを付けよう

3Dモデルを作ったら、次は動かしてみよう。このチュートリアルでは、Blenderで歩行・待機アニメーションを作り、UnityのAnimator ControllerとBlend Treeで滑らかに切り替える方法を学ぶ。すべてAIとの会話で進めていくよ。

前提条件

  • Blender と Unity が起動していて、OpenForge MCP と接続済みであること
  • Unity上にアニメーションを付けたいキャラクターモデルがあること(Blenderで作ったものでも、インポートしたものでもOK)
  • キャラクターにアーマチュア(ボーン)が設定済みであること
アーマチュアがない場合

ボーンが入っていないモデルにはアニメーションを付けられない。まずBlenderでアーマチュアを追加する必要がある。

あなた:

Blenderで開いているキャラクターモデルにヒューマノイドのアーマチュアを追加して。身長に合わせてスケールを調整して

これでボーンが入った状態になるよ。

ステップ1: 待機アニメーションを作る(Blender)

まずは一番基本の「何もしていない状態」のアニメーションから作ろう。

あなた:

Blenderでキャラクターの待機(Idle)アニメーションを作って。自然に呼吸しているような動きで、上下にゆっくり揺れる感じにして。フレーム数は60フレームでループするようにして

AIの動き: Blenderのアクションエディタに「Idle」という新しいアクションが作られて、胸のボーンと肩のボーンに上下の微妙な動きのキーフレームが打たれる。60フレーム目が1フレーム目と同じポーズになるので、ループ再生したときに自然につながるよ。

あなた:

アニメーションをプレビューして見せて

AIの動き: Blenderでアニメーションが再生されて、スクリーンショットまたはプレビューが返ってくる。

ループの確認

ループアニメーションは、最初と最後のポーズが一致していることが大事。つなぎ目でカクッとなる場合は、こう頼もう。

あなた:

Idleアニメーションの最初と最後のフレームが滑らかにつながるように調整して

ステップ2: 歩行アニメーションを作る(Blender)

次に歩行アニメーション。

あなた:

同じキャラクターに歩行(Walk)アニメーションを作って。普通の歩き速度で、腕も自然に振るようにして。30フレームで1歩のサイクルにして、ループ可能にして

AIの動き: 「Walk」という新しいアクションが作られる。脚のボーンが前後に動き、腕が逆方向に振られるキーフレームが打たれる。

あなた:

歩行中に少し体が左右に揺れるようにして。リアルな歩き方になるように

AIの動き: 腰のボーンに左右の微妙な回転が追加されて、より自然な歩行になる。

ステップ3: 走行アニメーションを作る(Blender)

歩行ができたら走行も作っておこう。後でBlend Treeで使う。

あなた:

走行(Run)アニメーションも作って。Walkより速いテンポで、20フレームで1サイクル。腕の振りを大きくして、体の前傾を少し強めにして

AIの動き: 「Run」アクションが追加される。Walkと比べてストライドが大きく、テンポが速い動きになる。

ステップ4: アニメーションをエクスポートする

3つのアニメーションが揃ったら、Unityに持っていこう。

あなた:

Blenderで作ったIdle、Walk、Runの3つのアニメーションをFBXでエクスポートして。Unityのプロジェクトフォルダに保存して

AIの動き: FBXファイルがエクスポートされて、Unityのプロジェクトに配置される。アニメーションクリップとして3つのアクションが含まれた状態になるよ。

FBXのエクスポート設定

AIが自動で適切な設定を選んでくれるけど、もし問題がある場合は次のように指定できる。

あなた:

FBXエクスポートの設定で、スケールを1.0にして、アニメーションのベイクをオンにして

ステップ5: Animator Controllerを作る(Unity)

ここからはUnity側の作業。Animator Controllerでアニメーションの状態遷移を管理しよう。

あなた:

キャラクターにAnimator Controllerを作って設定して。名前は「CharacterAnimator」にして

AIの動き: Animator Controllerが作成されて、キャラクターのAnimatorコンポーネントに設定される。

状態(State)を追加する

あなた:

CharacterAnimatorに「Idle」「Walk」「Run」の3つの状態を追加して。それぞれ対応するアニメーションクリップを割り当てて。デフォルト状態はIdleにして

AIの動き: Animator Controller内に3つのStateが作成されて、それぞれにアニメーションクリップが紐づけられる。Idleがオレンジ色のデフォルト状態になる。

パラメータを追加する

あなた:

Animatorに「Speed」というFloat型のパラメータを追加して。デフォルト値は0にして

AIの動き: AnimatorのParametersタブにSpeedパラメータが追加される。

ステップ6: 遷移(Transition)を設定する

状態間の切り替え条件を作ろう。

あなた:

IdleからWalkへの遷移を作って。条件はSpeedが0.1より大きいとき。遷移時間は0.2秒にして

AIの動き: Idle状態からWalk状態への矢印(Transition)が追加されて、条件が設定される。

あなた:

WalkからIdleへの遷移も作って。条件はSpeedが0.1以下のとき。遷移時間は0.2秒にして

AIの動き: Walk状態からIdle状態への戻りの遷移が追加される。

あなた:

WalkからRunへの遷移を作って。条件はSpeedが0.6より大きいとき。遷移時間は0.15秒にして

AIの動き: 歩行から走行への遷移が追加される。

あなた:

RunからWalkへの遷移も作って。条件はSpeedが0.6以下のとき。遷移時間は0.15秒にして

AIの動き: 走行から歩行への戻りの遷移が追加される。

遷移時間の調整

遷移時間(Transition Duration)が短すぎるとアニメーションの切り替えがパキッとして不自然になる。長すぎるとモッサリする。0.1秒から0.3秒の間で試してみよう。

ステップ7: Blend Treeで滑らかに切り替える

遷移(Transition)だと「歩いている」「走っている」の2択になるけど、Blend Treeを使えばSpeedの値に応じて歩行と走行をスムーズにブレンドできる。

あなた:

Animator ControllerのWalkとRunの状態を削除して、代わりにBlend Treeを1つ作って。名前は「Locomotion」にして。パラメータはSpeedで、Idle(Speed=0)、Walk(Speed=0.5)、Run(Speed=1.0)の3つのモーションを設定して

AIの動き: WalkとRunの状態がBlend Tree「Locomotion」に置き換えられる。Speedの値が0のときはIdle、0.5のときはWalk、1.0のときはRunが再生されて、中間の値では自動的にブレンドされる。

あなた:

Speedを0から1までゆっくり変化させたときのプレビューを見せて

AIの動き: Speedを段階的に変化させた結果がプレビューされる。待機からゆっくり歩き出し、次第に走り出す動きが確認できるよ。

Blend Treeの種類

今回使ったのは1D Blend Tree(パラメータ1つで制御するタイプ)。2D Blend Treeを使えば、「前進速度」と「横移動速度」の2つのパラメータで8方向の移動アニメーションをブレンドすることもできる。

ステップ8: トリガーでアクションを再生する

歩行と走行以外にも、ジャンプのような単発のアクションをトリガーで再生する方法を覚えておこう。

あなた:

Blenderでキャラクターのジャンプアニメーションを作って。その場で垂直にジャンプする動きで、離陸から着地まで20フレームにして

AIの動き: BlenderでJumpアクションが作成される。

あなた:

ジャンプアニメーションをUnityにエクスポートして、Animator Controllerに「Jump」というTrigger型パラメータを追加して。Locomotion状態からJump状態への遷移をJumpトリガーで制御して。Jumpが終わったらLocomotionに戻るようにして

AIの動き: Trigger型パラメータとJump状態が追加される。Triggerは一度発火したら自動でリセットされるので、ボタンを押すたびに1回だけジャンプが再生される仕組みになる。

Trigger と Bool の違い
  • Trigger: 一度発火したら自動リセットされる。ジャンプや攻撃のような単発アクション向き。
  • Bool: 手動でオン・オフを切り替える。しゃがみ状態のような持続するアクション向き。

ステップ9: テストする

すべてが揃ったら、実際に動かして確認しよう。

あなた:

キャラクターにシンプルな移動スクリプトを付けて。WASDキーで移動できるようにして、移動速度に応じてAnimatorのSpeedパラメータを更新するようにして。スペースキーでJumpトリガーを発火させて

AIの動き: 移動スクリプトが生成されてキャラクターにアタッチされる。

あなた:

シーンを再生して、キャラクターを歩かせたところのスクリーンショットを撮って

AIの動き: プレイモードに入り、キャラクターが歩行アニメーションで移動している様子が確認できる。

よくある問題と対処

アニメーションでつまずきやすいポイントをまとめておくよ。

足が地面にめり込む

あなた:

歩行アニメーションで足が地面の下に沈んでいる。修正して

AIがルートモーションの設定やボーンの位置を調整してくれる。

アニメーションの速度が合わない

あなた:

移動速度に対してアニメーションが速すぎる。足が滑っているように見える。アニメーションの再生速度を調整して

AIがAnimator StateのSpeed Multiplierを調整してくれる。

Tポーズのまま動かない

Animatorの設定が正しくない可能性がある。

あなた:

キャラクターがTポーズのまま動かない。AnimatorのControllerが正しく設定されているか確認して

まとめ

このチュートリアルで学んだこと:

  1. Blenderでアニメーション作成 -- Idle、Walk、Run、Jumpの4種類を作った
  2. FBXエクスポート -- BlenderからUnityへの受け渡し
  3. Animator Controller -- 状態(State)と遷移(Transition)の設定
  4. Blend Tree -- Speed値に応じた滑らかなアニメーションブレンド
  5. Trigger -- 単発アクションの発火制御
  6. テスト -- 移動スクリプトと組み合わせて実際に動作確認

アニメーションはゲームのキャラクターに命を吹き込む大事な要素。AIとの会話で試行錯誤しながら、気持ちの良い動きを目指してみよう。