ポーズ ワープ

ポーズ ワープは、カプセルの動きに合わせて、キャラクターのアニメートされたポーズを動的にワープさせることができます。

ポーズ ワープを使用すると、カプセルの動きに合わせてキャラクターのアニメートされたポーズを動的に調整することができます。このドキュメントでは、ポーズ ワープ機能と、キャラクターのアニメーション ブループリントでポーズ ワープを実装する方法について説明します。

前提条件

  • Animation Warping プラグインを有効にする。プラグイン およびプラグインのインストール方法の詳細については、「プラグインを操作する」を参照してください。

animation warping plugin

ポーズ ワープの概要

アニメーション ブループリント ノードの一連のポーズ ワープ機能は、ワープによって アニメーション シーケンスのポーズ を動的に調整し、ゲーム ワールド内でより統一感のあるアニメーション インタラクションを作成します。

ポーズ ワープは、以下の 3 つの ノード に分類されます。これらのノードはそれぞれ、特定の用途のワープ実装を実行し、ルート モーションに一致するように独自の方法でアニメーションを調整します。

pose warping demog

  1. Orientation Warping

  2. Stride Warping

  3. Slope Warping

各ノードのプロパティで、これらのワープの生成を制御する [Manual Evaluation (手動評価)] モードを使用して、多くのパラメータを定義できます。また、[Graph Evaluation (グラフ評価)] モードでは、これらのパラメータを自動的に定義することができます。

一般的な詳細

以下に、Pose Warping ノードのプロパティとその機能について説明します。

animation warping node details

名称

説明

Mode

Pose Warping ノードがアニメーションのポーズをワープするための値を導出するモードを選択します。

Manual: アニメーション ワープ評価をユーザー定義のパラメータから導出します。更新変数を活用すると、遷移のスムーズさにかけるため、これはスタティック インスタンスまたはスクリプト インスタンスでの使用に適しています。 Graph: 動的に定義されたグラフ制御パラメータからアニメーション ワープ評価を導出します。一部のノード プロパティが変更され、ルート モーション対応アニメー ション シーケンスが必要になりました。

IK Foot Root Bone

スケルトンの IK Foot Root Bone を定義します。

ポーズ ワープ ノード

以下に、各ポーズ ワープ ノードの固有プロパティ、および機能について説明します。

Orientation Warping

Orientation Warping ノードは、動作中のアニメーションに指向性のある補正ワープを適用します。このノードでは、アニメーション ポーズの脚の IK ボーンを分離してワープし、ルート モーションの動的に更新されるロコモーション方向と一致させることができます。また、このポーズは、指定された軸に沿って脊椎ボーンにねじることで、向きの角度を維持します。

この機能を使用すると、アニメーション シーケンスで対処できない範囲を補うことができ、インタースティシャル アニメーションを手動で作成したり、追加のブレンド スペースの遷移を作成したりする必要性が軽減されます。

orientation warping node

以下に、Orientation Warping のプロパティとその機能について説明します。

プロパティ

説明

Orientation Angle

Evaluation Mode プロパティが Manual に設定されている場合に限り、使用できます。ロコモーション コンポーネントのポーズをワープさせたい向きの度合いを定義します。これは、Rotation Axis プロパティで指定されている軸を基準にした値です。

Locomotion Angle

Evaluation ModeGraph に設定されている場合に限り、使用できます。ロコモーション コンポーネントのポーズをワープさせたい向きの度合いを定義します。グラフ制御の値を使用するように作成されているため、Locomotion Angle は動的に変化する値に適しています。

次の式でこれを使用して、オリエンテーション角度を計算します。[Orientation = RotationBetween(RootMotionDirection, LocomotionDirection)]

Location Angle Delta Threshold

キャラクターの誤った過回転を防止するための角度のしきい値を指定します。デフォルトでは、このプロパティは「90」度に設定されています。また、値を「0」に設定すると、無効にすることができます。

Spine Bones

よりシームレスな外観の回転を実現するために、全体的にワープをテーパーさせる脊椎ボーンを定義します。

定義を追加するには、追加 (+)ボタンを使用します。インデックス 0 は、最上位階層に位置し、最も回転の少ないボーンです。インデックスが追加されるごとに、次にネストされる脊椎ボーンとなり、徐々に回転の影響を大きく受けるようになります。

IK Foot Bones

スケルトンに含まれる IK Foot Bones のインデックス インスタンスを追加して定義します。

Rotation Axis

オリエンテーション ワープ実行する際に使用する軸を定義します。ほとんどの場合、オリエンテーション ワープは、Z 軸上で行われるため、ボディにねじれが生じます。

Distributed Bone Orientation Alpha

脊椎ボーンを通じてキャラクター ボディ全体に分散される回転の量を指定します。この値は上半身で優先され、値「1」は全回転がインデックス「0」の脊椎ボーンで発生することを示し、値 0 は回転が最も高いインデックス付きのスパイン ボーンで発生することを示します。

Rotation Interp Speed

最終的なワープ後の回転角度に到達するための補間またはブレンド速度 (1 秒あたりのアルファ値) を指定します。低い値では、補間速度が低いことを示し、その結果、ロコモーションの変更とアニメーションのワープ間の遷移が遅くなります。この値を大きくすると、スムージングを抑えて、すばやく遷移が行われます。値を「0」を指定すると、瞬時に回転します。

Stride Warping

Stride Warping は Pose Warping ノードで、カプセルの移動速度に合わせてキャラクターのアニメートされたストライド (歩幅) を動的に調整します。動作速度と関連するボーンを定義することで、Stride Warping ノードでは、足の位置の間隔を変更し、動作速度に合わせて歩幅を動的に調整することができます。これにより、アニメーションの再生に合わせて動作速度を手動で調整する必要性が低下し、異なる動作速度のアニメーション シーケンス間で移行するためのブレンド スペースへの依存も低下します。

stride warping node

以下に、Stride Warping のプロパティとその用途について説明します。

プロパティ

説明

Stride Direction

Evaluation ModeManual に設定されている場合に限り、使用できます。ストライドの動作方向を定義します。

Stride Scale

Evaluation ModeManual に設定されている場合、ストライド調整を細かく調整するために、足の定義に適用されるワープの量をスケーリングします。この値に「1」を指定するとデフォルトのワープ スケールになり、「0.5」を指定すると有効な脚のストライドが半分になり、「2」を指定すると有効な脚のストライドが 2 倍になります。

次の式を使用して、ストライド スケールを計算します。[StrideScale = (LocomotionSpeed / RootMotionSpeed)]

Locomotion Speed

Evaluation ModeGraph に設定されている場合は、キャラクターに適用される現在の動作速度を指定します。このパラメータは、Graph Driven Evaluation モードを活用し、ルート モーションやカプセル速度など、動的に更新されるデータと連係して動作するよう設計されています。最良の結果を得るには、宣言された速度はアニメーション グラフのデルタ時間を基準とする必要があります。

Min Locomotion Speed Threshold

ストライド ワープ機能の効果を適用するために必要な、最小ロコモーション速度値の定義済みのしきい値です。

Pelvis Bone

スケルトンの Pelvis Bone を定義します。

Foot Definitions

このパラメータ内で、インデックスを作成して使用することで、ワープの実行に必要な IK および FK の足と大腿部のボーンを定義できます。スケルトンに含まれるロコモーション脚ごとに 1 つのインデックスとその定義が必要です。

Stride Scale Modifier

このパラメータを使用すると、クランプや補間のガイドラインを追加して、ストライド スケールの最終結果を変更することができます。これらの制限は、Clamp Result または Interp Result サブプロパティを切り替えることで有効にできます。

クランプは、スケーリングを実行できる最小値と最大値を指定することで、変更できます。値を「1」に設定すると基本スケール、「0.5」ではハーフ スケール、「2」がダブル スケールになります。

補間速度を定義することで、補間が適用される動作速度の範囲を制御できます。Interp Speed Increasing では、動作速度の値を上げる際に、補間が適用されるしきい値を定義します。反対に、Interp Speed Decreasing は、動作速度が低下する際に、補間が適用されるしきい値を定義します。

以下に、ストライド ワープ アプリケーションの微調整に使用される Stride Warping ノードのパラメータにある Advanced プロパティについて説明します。

名称

説明

Floor Normal Direction

この値は、ワープを行う前に、対応するコンポーネント空間表現に内部で変換されます。

モード: 対応するベクター値の空間。 Component Space Vector Actor Space Vector World Space Vector IKFoot Root Local Space Vector

Value: モードで定義されたスぺースを基準にしたベクターを指定します。

Gravity Direction

この値は、ワープを行う前に、対応するコンポーネント空間表現に内部的に変換されます。

このプロパティが、重力による下向きの力のシミュレーションを適用する対応する Vector Value の変換先の空間を宣言します。宣言された空間の各種モードは以下のとおりです。 Component Space Vector Actor Space Vector World Space Vector IKFoot Root Local Space Vector

Pelvis IK Foot Solver

脚を伸ばす際の IK/FK 足の定義に対して骨盤をどれだけ「引き下げる」かを制御するためのソルバ。

Pelvis Adjustment Interp: Pelvis (骨盤) の調整中に適用されるスプリング補間パラメータを指定します。Stiffness Constraint プロパティと Dampening Ratio プロパティで定義されます。 Pelvis Adjustment Interp Alpha: オリジナルと調整後の骨盤の最終位置の間のアルファを指定します。これはオリジナルの骨盤の動きをある程度維持するために使用されます。 Pelvis Adjustment Max Distance: 元の位置に対して骨盤を調整できる最大ディスプレイスメントを指定します。 Pelvis Adjustment Error Tolerance: 骨盤調整距離が各イタレーションでこの値以下の値でインクリメントされている場合、ソルバが停止することを指定します。低い値ではパフォーマンスが低下しますがビジュアル品質が少し向上します。ただし、PelvisAdjustmentMaxIter により高い値を指定する必要がある可能性があります。 Pelvis Adjustment Max Iter: 骨盤調整ソルバに対して実行する最大イタレーション回数を指定します。イタレーション回数を増やすと PelvisAdjustmentErrorTolerance の収束に近づきますが、パフォーマンスが低下します。

Orient Stride Direction Using Floor Normal

指定 (Manual) または計算 (Graph) されたストライド方向をフロア法線で方向付けます。

Compensate IK Using FK Thigh Rotation

IK/FK 足の定義に沿った FK 大腿部ボーンへのワープ調整を含めます。これは、元の全体的な脚の形状を保持するために使用されます。

Clamp IK Using FK Limits

IK 足のワープをクランプして、FK 脚全体を基準として過度な伸張を防止します。

Slope Warping

Slope Warping は、フロア法線に合わせた足の位置のワープや、傾斜や階段でのロコモーション アニメーションをよりスムーズな遷移をサポートします。

slope warping node

このノードはまだ開発中であり、このノードの機能をプロジェクトで使用できる信頼性は確保されていないため、テスト環境で実装することをお勧めします。

以下は、Slope Warping ノードに関連するプロパティのリストです。

名称

説明

Pelvis Bone

スケルトンの Pelvis Bone を定義します。

Feet Definitions

このパラメータ内で、インデックスを作成して使用することで、必要な IK および FK 足のボーン、定義された足に関連する Number of Bones、および Foot Size 値 (Unreal 単位) を定義できます。これらの定義は、ノードがスロープ ワープを実行するために使用するボーンを定義します。スケルトンに含まれるロコモーション脚ごとに 1 つのインデックスとその定義が必要です。

Pelvis Offset Interpolator

骨盤の調整時に適用される骨盤ボーン オフセット補間パラメータを指定します。Stiffness Constraint プロパティと Dampening Ratio プロパティによって定義されます。

Gravity Dir

ワープの影響を受けるスケルタル要素での重力の 方向 を定義します。

Custom Floor Offset

スケルトンを基準としたカスタム フロア オフセットを実行するために使用する軸を定義します。

Floor Normal Interpolator

骨盤の調整時に適用されるフロア法線補間パラメータを指定します。Stiffness Constraint プロパティと Dampening Ratio プロパティによって定義されます。

Floor Offset Interpolator

骨盤の調整時に適用されるフロア オフセット補間パラメータを指定します。Stiffness Constraint プロパティと Dampening Ratio プロパティによって定義されます。

Max Step Height

スロープ ワープのステップ間で可能な高さ調整の最大値を Unreal 単位で定義します。

Keep Mesh Inside Of Capsule

有効にすると、ワープによって メッシュカプセル 外に押し出されるのを防ぎます。

Pull Pelvis Down

新しい足の配置に対応するために、骨盤を引き下げることができます。

Use Custom Floor Offset

カスタム フロア オフセットの使用を切り替えます。

ポーズ ワープのワークフロー

以下のワークフローでは、ロコモーション アニメーションにワープを追加する、キャラクターのアニメーション ブループリントでの Orientation Warp ノードの基本的な実装を示しています。

まず、キャラクターのアニメーション ブループリントの AnimGraph 内で、Root Motion Enabled アニメーション シーケンスへの参照を呼び出します。このデモでは、アニメーションは 1 方向の単一の移動のアニメーションなど非常にシンプルなアニメーションと、遷移を伴う複数の基軸方向のあらゆる動きなど非常に複雑なアニメーションを取り上げています。このデモで使用するロコモーション ステート マシンは、前進ジョグ アニメーションのみを含んでいます。

この単一のアニメーションと Orientation Warping ノードを使用すると、上半身の向きの角度を維持したまま、アナログ入力コントロールに適応した完全な 180 度の下半身のアニメーションが可能になります。

必要な AnimBPノード を追加する

このデモでは、ルート モーション対応のアイドル アニメーションと単一前進ジョグ アニメーションの間の遷移を伴うシンプルなステート マシンを使用します。

animation state machine

ステート マシン出力ピン からドラッグして、Local To Component 空間変換ノード を作成します。このノードは、アニメーション シーケンスを構成するアニメーション ポーズをコンポーネント空間に変換するために必要です。

add local to component transition node

この Local To Component 空間変換ノードから、出力ピン をドラッグして、Orientation Warping ノードを作成します。

add orientation warping node

Orientation Warping ノードの後に、スケルトンの IK ボーンに行われるワープを FK ボーンに伝達するために、ダウンストリームの Leg IK ノードが必要です。

add leg ik node

Leg IK ノードを Result ノードに接続し、Component To Local 空間変換ノードを作成すると、Local to Component の変換が自動的に終了します。

leg ik to final output pose

必要なノードをすべて配置すると、コンパイル時に Orientation Warping ノードに関連するエラーが返されます。コンパイラの結果パネルに表示される Orientation エラーによって、脊椎および IK ボーンの定義が要求されます。これらのボーンは、[Details (詳細)] パネルにある Orientation Wrapping プロパティで定義することができます。これらのプロパティについては、次のセクションで説明します。

orientation warping error

必要なパラメータを定義する

AnimGraph ビューポートで Orientation Warping ノードをクリックすると、[Detail] パネルが表示されます。[Settings (設定)] ヘッダで、IK 足ルートのインスタンスと個別の IK 足をスケルトンに割り当てることができます。また、キャラクターの向きの角度を保持するために、追加 (+) をクリックして、ツイストを変位させるノードに少なくとも 1 つの脊椎ボーンを指定する必要があります。1 つのボーンは、下半身全体のピボット ポイントのように動作します。脊椎変数を追加すると、脊椎ボーン全体でワープがテーパーされ、より自然に見えるようになります。

define orientation warping bones

モデルに含まれているスケルトンと同じ数の脊椎ボーンを指定することをお勧めします。

次に、オリエンテーション ワープの角度を定義する必要があります。この角度は、広範なパラメータ化によって手動で定義できます。または、ルート モーションの角度で制御される指向性変数などの動的な値によって、この角度を自動的に指定することもできます。

Orientation Warping ノードの [Details] パネルで、Evaluation ModeGraph に変更します。グラフ評価モードでは、手動の静的な値である Orientation Angle ピンを、グラフで制御する値で接続できる Locomotion Angle ピンに変更します。この例では、カプセルの移動方向によって制御される方向変数を使用します。

set evaluation mode to graph in orientation warping node

Direction 変数を呼び出し、変数ノードの Output PinLocomotion Angle Input Pin に接続します。

call direction variable and connect to orientation warping node

最後に、実行されるワープをブレンドするために、IK リグのプロパティ内の FK ボーンに対応する IK ボーンの定義が必要です。

IK Rig の [Details] パネルで、追加 (+) ボタンを使用して、モデルに含まれる各脚の Leg Definition 配列を作成します。この配列で IKFoot ボーンと FKFoot ボーンを定義します。

define ik rig node bones

Leg Definition 配列にある Num Bones In Limb プロパティは、各足に関連付けられている脚構造にあるボーン数を表します。この値 (足ボーン自体を含まない) は、ワープさせる必要のあるその他の構造を構成するすべてのボーンを考慮する必要があります。この例では、足からふくらはぎおよび大腿部のボーンを経て、骨盤ボーンに到達します。骨盤は脚の構造には含まれないため、定義済みの足ボーンに関連付けるために、2 つのボーンを宣言します。これは一般的な構造であるものの、ユーザーのスケルタル メッシュとは異なる場合があります。

結果

レベルをコンパイルして保存し、再生すると、Orientation Warping ノードの効果が示されます。1 つだけのアニメーション シーケンス、前進ジョギング アニメーションで、180 度のロコモーションをフルにカバーできます。また、脊椎ボーンを定義することで、キャラクターの向きの角度を保持し、進行方向を向いた状態を保ちます。

ポーズ ワープ前

ポーズ ワープ後

orientation warping off

orientation warping on

上記のデモでは、キャラクターに適用される入力は、カプセルを介して、メッシュに位置と方向の移動を実現しています。現在のアニメーションの適用範囲には制限があるため、入力はアニメーションの再生に影響しません。このアニメーションは、単に単一方向にループします。

上記のワークフローが完了すると、キャラクターの入力によって制御されるワープがリアルタイムに実行されます。脊椎で生じしているねじれに注目してください。このねじれは、入力によって制御されるロコモーション方向 (赤い矢印) に追従するように脚のアニメーションの方向に焦点を置くと同時に、ルート モーションが制御する向きの方向 (青い矢印) を保持するために加えられています。

以下は、このページで Orientation Warping ノードの実装に使用した Animation Blueprint ロジックの全体画像です。

blueprint final

デバッグ

以下に、Orientation Warping ノードまたは Stride Warping ノードを実装する際に発生した問題を修正するうえで役立つデバッグ プロパティについて説明します。

Orientation Warping

Orientation Warping ノードのデバッグ プロパティとその機能について説明します。

名称

説明

Debug Draw Scale

視覚的に描画されるデバッグ ガイドを均一にスケールします。

Enable Debug Draw

有効にすると、実行時にビューポート内のキャラクターを起点として、対象のベクターを表す一連の色付きの矢印が描画されます。 赤色の矢印: 入力方向。 青色の矢印: ルート モーション。 緑色の矢印: シミュレートされた方向、ブレンドされたベクター。入力と表示されたアクションによって決まります。このブレンドの速度は、[Details] パネルの Rotation Interp Speed プロパティで調整できます。

Stride Warping

以下は、Stride Warping ノードの適切な実装をサポートする Debugging プロパティのリストです。

名称

説明

Debug Draw Scale

視覚的に描画されるデバッグ ガイドを均一にスケールします。

Enable Debug Draw

キャラクターのカプセルの中心を起点とする移動速度ベクターを表す赤い矢印を、実行時にビューポートに表示します。入力フォースが大きいほど長い矢印が描画され、小さいほど矢印が短くなります。

Debug Draw IKFoot Origin

有効にすると、定義された IK 足が赤い球体で表示されます。

Debug Draw IKFoot Adjustment

有効にすると、IK 足の中心を起点とする青いベクター矢印が描画され、調整内容が表示されます。

Debug Draw Pelvis Adjustment

有効にすると、ビューポートにベクターが描画され、骨盤ボーンの調整が行われたことが示されます。

Debug Draw Thigh Adjustment

描画されるベクターを切り替えることで、定義された大腿部のボーンに加えられた調整を視覚的に確認できます。

Debug Draw IKFoot Final

このプロパティでは、フル ワープの実行後に、IK 足ボーンの最終的な位置の視覚的な表現を描画することができます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル