Root Motion (ルート モーション) アニメーションを使用すると、アニメーション データを使ってキャラクターの動きを駆動できるようになり、レベル内でより地に足の着いた動きを実現できます。
このドキュメントでは、ルート モーションの概要と、対応するアニメーションでルート モーションを有効にする方法の概要について説明します。
前提条件
-
プロジェクトに、スケルトンのルート ボーンに割り当てられたモーション データを持つ アニメーション シーケンス または モンタージュ が含まれている。
概要
レベル内では、キャラクターは多くの コンポーネント によって構成されています。多くの場合、キャラクターの動きは、キャラクターの Movement コンポーネント と、動きのビジュアル フィードバックを伝えるためのレイヤー化されたアニメーション再生によって駆動されます。
次は、スケルタル メッシュ コンポーネント と Capsule コンポーネント を使って ブループリント ビューポート エディタ でレンダリングされたキャラクターの例です。
ルート ボーン
アニメーションは スケルタル メッシュ の スケルトン によって駆動されます。スケルトンは複数のボーンで構成されています。ルート ボーン とはスケルトンの基盤となるボーンです。ルート ボーンは他のボーンとは異なり、脚や腕などのスケルタル メッシュの要素を表現するのではなく、スケルタル構造全体の参照ポイントとなるものです。一部のアニメーションはルート ボーンのアニメーション データを一切含まず、スケルトンとアニメーションが一つの点に固定されたままの状態を維持しますが、ルート ボーンをアニメートして、3D 空間におけるアニメーションの変位を表現するアニメーションもあります。
次のスケルタル メッシュの例では、ルート ボーンがハイライト表示されています。
ルート モーション
キャラクターの動きがない場合は、固定されたルート ボーンを含むアニメーションが再生されます。この場合、動きや変化は一切ありません。
上記のように、固定されたルート ボーンを含むアニメーションがある一方で、ルート ボーンに動きが割り当てられているアニメーションもあります。
次は、ルート ボーンに動きのデータが備わっているアニメーションの例です。赤色の線 は、ルート ボーンの開始位置から現在位置までの変位を追跡したものです。
ただし、ルート ボーンにアニメーション データを含むアニメーションは、キャラクターの動きに影響を及ぼすようにはデフォルトで設定されていないため、最初に Root Motion (ルート モーション) プロパティを有効にする必要があります。
ルート モーションなし | ルート モーションを使用 |
ルート モーションを有効にしないと、アニメーションではルート ボーンから外れた状態で、キャラクターから離れて (ワイヤーフレーム カプセルで表示) スケルタル メッシュをアニメートします。スケルタル メッシュはキャラクターとの接続が外れた状態になり、アニメーション サイクルの最後に開始位置に戻ります。アニメーションのルート モーションを有効にすることで、ルート ボーンの動きのデータによってキャラクターの動きが駆動され、キャラクターがルート ボーンの動きに沿ってドラッグされるようになります。
ルート モーションでキャラクターの動きを駆動することで、アニメーションで再帰的なループが可能になり、キャラクターが前のアニメーション ループの最後の位置から繰り返されるようになります。次は、再帰的なアニメーション サイクルの例です。
ルート モーションを有効にする
ルート モーション機能を有効にして使用するには、ルート ボーンを備えたスケルトンと、アニメートされたルート ボーンを含むアニメーションが事前に必要になります。
アニメーション シーケンス
それぞれのアニメーション シーケンスまたはモンタージュのルート モーションを個別に 有効 にする必要があります。このプロパティは アニメーション シーケンス エディタ の [Asset Details (アセット詳細)] パネルに含まれており、ここで設定を変更できます。
次は、アニメーション シーケンス アセットの編集時に使用可能なルート モーション関連のプロパティとその説明です。
プロパティ | 説明 |
---|---|
Enable Root Motion | 有効にするとルート モーション データが抽出されます。ルート モーションの抽出方法は、アニメーション ブループリントの [Class Defaults (クラスのデフォルト)] プロパティの ルート モーション モード を使って定義されます。 |
Root Motion Root Lock | ルート モーションの抽出時に、ルート ボーンを定義された位置にロック (固定) します。 ルート ボーンをロックする位置のオプションについては次のとおりです: Ref Pose (参照ポーズ): ルート ボーンは、スケルタル メッシュの 参照ポーズ で指定された位置にロックされます。 Anim First Frame (アニメーションの先頭フレーム): ルート ボーンは、選択したアニメーションの 最初のフレーム におけるルート ボーンの位置にロックされます。 Zero (ゼロ): ルート ボーンは、メッシュと相対した 0,0,0 の座標点にロックされます。 |
Force Root Lock | 有効にすると、[Root Motion] が有効になっていない場合でも、ルート ボーンが強制的にロックされます。 |
Use Normalized Root motion Scale | 有効にすると、抽出されたルート モーションに、正規化されたスケールが適用されます。FVector(1.0, 1.0, 1.0) です。 |
アニメーション ブループリント
個々のアニメーション シーケンスのパラメータ内でルート モーションを有効にしたら、次は アニメーション ブループリント 内で、オブジェクトのアニメーションを駆動するそのシーケンスの処理方法を定義する必要があります。ルート モーションは、いくつかの方法でアニメーション ブループリント内で処理できます。これらのオプションにアクセスするには、アニメーション ブループリント エディタ の ツールバー から [Class Defaults] をクリックします。これにより、ドロップダウン メニューを備えた [Root Motion Mode (ルート モーション モード)] プロパティを含む [Details (詳細)] パネルが開きます。
次のオプションがあります。
名称 | 説明 |
---|---|
No Root Motion Extraction (ルート モーションの抽出なし) | ルート モーションは不変のまま維持されます。ルート ボーンに適用されます。 |
Ignore Root Motion (ルート モーションを無視) | ルート モーションは抽出されますが (ルート ボーンからも削除)、キャラクターには適用されません。 |
Root Motion from everything (すべてのルート モーション) | 最終的なキャラクターのポーズに寄与する (ルート モーションが有効な) 各アニメーション アセットのルート モーションが抽出されます。抽出されたルート モーションは、ポーズに寄与するソース アセットのウェイトに応じてブレンドされます。 |
Root Motion from Montages Only (モンタージュのルート モーションのみ) | ルート モーションは、ルート モーションが有効な アニメーション モンタージュ のみから抽出されます。 |
ルート モーションの有効化には追加のパフォーマンス コストが伴います。
[Root Motion from everything] または [Root Motion from Montages Only] のいずれかを有効にすると、アニメーション グラフはワーカー スレッド上ではなく、ゲーム スレッド上で更新されます。ゲーム スレッド 上での追加の処理により、パフォーマンスの問題が生じる可能性があります。
結果
ルート モーションをアニメーションで有効にして、アニメーション ブループリント内でルート モーションの抽出方法を定義すると、再生時にアニメーションによって Movement コンポーネントが駆動されるようになります。
ルート モーション中は、キャラクターの物理状態が考慮されます。例えば、キャラクターが X および Y 軸に沿って 歩いている または 落下している 場合、ルート モーションの Z 軸は無視されて、重力が適用されます。このキャラクターは落下するか傾斜を下るか、階段を上ります。キャラクターがバインドされていない状態で 飛行している 場合は、完全なルート モーションが適用されて、重力は無視されます。
これは、キャラクター ブループリント内で Movement Mode ノード を使って定義および調整できます。
ルート モーションをデバッグする
以下は、ルート モーション アニメーションを使った作業に関連する、デバッグのためのプロパティです。
アニメーション シーケンス エディタ
エディタのビューポートでアニメーション シーケンスの作業を行っている場合は、さまざまな支援機能をデバッグ目的で使用できます。
キャラクターのスケルトンをスケルタル メッシュに重ねてレンダリングするには、[Character (キャラクター)] タブから [Bones (ボーン)] メニューを開きます。[Bone Drawing (ボーンの描画)] ヘッダから [All Hierarchy (すべての階層)] を選択します。このオプションでは、赤色でレンダリングされるルート ボーンも含めてスケルトン全体がレンダリングされます。ルート ボーンは現在トランスフォーム中であるため、ルート ボーンの原点と現在位置との間が赤色の線でレンダリングされます。
次は、ボーンの描画モードを [All Hierarchy] に設定した場合の例です。
赤色の線 は、ルート モーションを有効にしたことによるルート ボーンの変位を表しています。ルート モーションが有効なアニメーション中には、変位の量を確認し、ルート ボーンの動きを追跡することができます。
ルート モーション アニメーションの再生設定を変更するには、[Character] タブから [Animation (アニメーション)] メニューを開きます。[Root Motion (ルート モージョン)] ヘッダで、プレビュー再生オプションを切り替えます。使用可能なオプションとその説明は次のとおりです。
オプション | 画像 | 説明 |
---|---|---|
Ignore (無視) | 現在のルート モーションを無視して、アニメーションを静的な設定で再生します。 | |
Loop (ループ) | ルート モーションの再生が有効になり、アニメーションが前のループの最後部から継続的にループされます。 | |
Loop and Reset (ループおよびリセット) | ルート モーションの再生が有効になり、アニメーションがループごとにルート ボーンの原点から継続的にループされます。 |
コンソール コマンド
コンソール コマンド を使って、ランタイム時にキャラクターの Capsule コンポーネントを表示できます。
Collision コンポーネントはキャラクター オブジェクトではありませんが、Collision コンポーネントを使って、メッシュとは別に、キャラクター オブジェクトを迅速かつ容易に視覚化することができます。
コンソール コマンドのウィンドウを表示するには、エディタでゲームを実行している際に バッククォート (`) キーを押します。
コンソール コマンド 「show collision
」を入力して Enter キーを押します。