Motion Warping (モーション ワープ) は、キャラクターのルート モーションをターゲットに合わせてダイナミックに調整できる機能です。このドキュメントで示すのはモーション ワープ ロジックをキャラクター ブループリントに作成する方法、アニメーション モンタージュ内でモーション ワープ ウィンドウを割り当てる方法、および指定の位置にウィンドウをリンクする方法です。
前提条件
- Motion Warping プラグインを有効にする。プラグインおよびプラグインのインストール方法の詳細については、「プラグインを操作する」を参照してください。

-
Motion Warping では ブループリント と アニメーション モンタージュ ワークフローを活用する。そのため、これらの機能について理解する必要があります。
-
ゲームプレイのサンプルを作成するプロジェクトに、 キャラクター ブループリント 、 入力コントロール 、 アニメーション がある。
モーション ワープの概要
モーション ワープの機能全体は主に次の 2 つのエリアに分けられます。
- アニメーション モンタージュ。モーション ワープ ウィンドウをアニメーション通知状態とともに作成できます。

- ブループリント ロジック。ワープ ターゲットを割り当て、モンタージュを再生するロジックを設定します。

アニメーション モンタージュ
アニメーション モンタージュでは、モーション ワープ エリアを指定して、モーション ワープ エリアの動作をカスタマイズし、名前を指定します。
作成する
新しいモーション ワープ領域を作成するには、[Notifies (通知)] トラックの 1 つを右クリックして、[Add Notify State...(通知状態を追加...)]> [Motion Warping] を選択します。

これらは、ワープが最適に適用されるアニメーションの領域に合わせて開始時間と終了時間を設定できるカスタマイズ可能なエリアです。
たとえば、このマントル モンタージュでは、キャラクターが手を障害物に置いたとき、開始ワープ領域がそのエリアをカバーすることを確認する必要があります。

詳細パネル
アニメーション通知 の [Details (詳細)] パネルには、モーション ワープが機能するために必要な各プロパティと設定があります。モーション ワープ セクションを選択すると、これらの詳細を表示できます。

詳細名 | 説明 |
---|---|
Root Motion Modifier | 指定するモーション ワープ タイプ。 Scale:アニメーションのスケールを均一に変化させるモーション ワープ。 Skew Warp:ゲーム オブジェクトのルート モーションをワープすることで、ワープ ウィンドウの終了時にレベル内のアニメーションの位置と回転に一致させます。 |
Warp Target Name | 当該ワープ ターゲットを見つけるために使用する名前。Add or Update Sync Point ブループリント ノードに関連付けられています。 |
Warp Point Anim Provider | ワープ ポイント で希望するプロバイダを選択します。 None:ワープ ポイント プロバイダが宣言されません。 Static:ユーザー定義パラメータ トランスフォームによって定義されたワープ ポイント。これは、ワープ通知自体を使用して宣言することができます。 Bone:ワープ ポイントがボーンで定義されます。 |
Warp Point Anim Transform | アニメーション ワープ ポイントをトランスフォームします。[Warp Point Anim Provider (ワープ ポイント アニメーション プロバイダ)] が [Static (スタティック)] に設定されている場合にのみ該当します。 |
Warp Point Anim Bone Name | ワープ ポイントとしてターゲットとなるボーン名を宣言します。[Warp Point Anim Provider] が [Bone (ボーン)] に設定されている場合にのみ該当します。 |
Warp Translation | ルート モーションの平行移動コンポーネントをワープするかどうかを指定します。 |
Ignore ZAxis | 平行移動の Z コンポーネントをワープするかどうかを指定します。 |
Warp Rotation | ルート モーションの回転コンポーネントをワープするかどうかを指定します。 |
Rotation Type | ワープ ターゲットの回転に一致するか、またはワープ ターゲットの方に向くように、回転をワープする必要があるかどうかを指定します。 Default:キャラクターがワープ ターゲットの回転に一致するように回転します。 Facing:キャラクターがワープ ターゲットの方に向くように回転します。 |
Warp Rotation Time Multiplier | 回転をワープする速度を変更します。たとえば、モーション ワープ ウィンドウが 2 秒間継続し、このプロパティが 0.5 である場合、最終の回転状態に 1 秒後に到達します。 |
Notify Color | Motion Warping Notify キーフレームのカラーを設定します。 |
ブループリント
ブループリントは、Motion Warping コンポーネントを追加したり、ワープの発生をトリガーしたり、ワープ ターゲットを指定したりするために使用します。
Motion Warping コンポーネント
Motion Warping コンポーネントをブループリントに追加して、モーション ワープの動作を有効にする必要があります。これを実行するには、[Components (コンポーネント)] パネルで [(+) Add] をクリックして、[Movement] カテゴリにある [Motion Warping] を見つけます。クリックして追加します。

[Components] パネルから イベント グラフ にドラッグアンドドロップすることで、このコンポーネントをブループリント グラフで参照できるようになります。

ノード
Motion Warping 参照のリンクをドラッグすると、その参照に関連する関数やイベントを参照することができます。これらは、[Motion Warping] カテゴリにあります。

次の Motion Warping ノードをブループリントで使用することができます。
ノード名 | ノードの画像 | 説明 |
---|---|---|
Add or Update WarpTarget | ![]() |
このノードは、モンタージュ アセットで定義された Warp Target Name にリンクします。Warp Target ピンは個別の Translation ピンと Rotation ピンに分割できます。 これには右クリックして、[Split Struct Pin (構造体ピンを分割)] を選択します。 |
Add Root Motion Modifier Skew Warp | ![]() |
モンタージュ アセットに Skew Warp Anim Notifies を追加する代わりに、このノードで、新しいモーション ワープ ウィンドウをブループリントで生成します。 このモーション ワープ ウィンドウの設定はここでも割り当てできます。Start Time、End Time、および Warp Target Name などがあります。 また、Add Root Motion Modifier for Scale ノードと、すべての Root Motion Modifier を無効にするノードも使用できます。 |
モーション ワープのサンプル
このセクションでは、キャラクターがターゲットにワープしてパンチするシンプルなモーション ワープの例を設定する方法について説明します。
ワープの無効化

始める前に、使用するアニメーションの [Root Motion (ルート モーション)] が有効になっていることを確認してください。このためには、アニメーション アセットを開いて、EnableRootMotion を有効にします。

ターゲット位置の設定
まず、ワープ ターゲットを作成して、配置します。この例では、Cylinder を使用します。
[Place Actor (アクタを配置)] パネルで、[All Classes (すべてのクラス)] をクリックして、[Target Point (ターゲット ポイント)] を特定します。レベルにドロップアンドドロップして、ターゲット ポイントを追加します。ターゲット ポイントが希望のワープ ポイント合わせて配置および回転されていることを確認します。

アニメーション モンタージュの設定
次に、アニメーション モンタージュ アセットを作成します。既存のアニメーションから導出されたアニメーション モンタージュ アセットを簡単に作成するには、アニメーション アセットを右クリックして、[Create (作成)] > [Create AnimMontage] を選択します。モンタージュを作成したら、アセットを開きます。

モンタージュが開いたら、シーケンスをスクラブすると、アニメーションをプレビューできます。次のステップは、Notifies トラックでモーション ワープ ウィンドウを追加します。これには、このトラック エリアで右クリックして、[Add Notify State...] > [Motion Warping] を選択します。

これで、モーション ワープ ウィンドウとハンドルが作成されます。このハンドルを使用すると、範囲の開始と終了を設定できます。
アニメーションの先頭近くで開始し、キャラクターがパンチした瞬間に終わるように、このモーション ワープ ウィンドウの範囲を設定します。Shift キーを押したまま、通知 キーフレームを移動して、その時点での現在のアニメーションをプレビューすることもできます。

次に、Motion Warping キーフレームを選択して、[Details]パネルに移動します。ここで、このキーフレームの複数の意プロパティを設定します。
-
[Root Motion Modifier Config] を [Skew Warp] に設定します。これにより、ワープのタイプを指定します。
-
Warp Target Name に名前を設定します。これにより、このワープを名前で識別します。

ターゲット位置の取得
次に Character Blueprint アセットを開きます。イベント グラフで、目的の入力アクションにマップされた Input Action ノードを作成します。これには、グラフを右クリックして、[Input (入力)] > [Action Events (アクション イベント)] で入力イベントを選択します。
この例には、Input Action Event for Punch があります。

次に、この例で先ほど配置したターゲット ポイントの位置を取得します。これを行う方法はいくつかありますが、この例では、Get All Actors Of Class ノードを作成します。Actor Class を Target Point に設定します。最後に、Input Action ノードの Pressed 出力ピンを、Get All Actors of Class 関数の入力実行ピンに接続します。

最後に、Get (コピー) ノードを追加して、Out Actors 配列のデータ ピンに接続します。また、Get Actor Location 関数を追加して、その入力 Target データ ピンを Get ノードの出力データ ピンと接続します。

ワープ ターゲット
次に、Target Point の位置を取得するロジックを作成します。
まず、Motion Warping コンポーネントをキャラクター ブループリントに追加します。これを実行するには、[Components] パネルで 追加 (+) ボタンをクリックして、[Movement] カテゴリにある [Motion Warping] を見つけます。クリックして、コンポーネントを追加します。

次に、[Components] パネルから Motion Warping コンポーネントをイベント グラフにドラッグアンドドロップします。

Motion Warping のリファレンス ピンからドラッグして、Add or Update Warp Target from Transform ノードを追加します。ノードが作成されたら、入力イベント ピンから Get All Actors Of Class ノードに接続します。また、Name ピンに Warp Target Name を必ず割り当てます。この名前は、モンタージュで先程定義した Warp Target Name に一致させる必要があります。

また、Add or Update Warp Target from Transform ノードをターゲット位置に接続する必要があります。Warp Target ピンを右クリックして、[Split Struct Pin (構造体ピンを分割)] を選択し、Location/Rotation ピン構造に変換します。次に、Get Actor Location の Return Value ピンを Get Actor Location の Return Value ピンにつなげます。
Get Actor Location ノードの Return Value (黄色いピンで示されたベクター値) と Add or Update Warp Target from Transform ノードの Target Transform ピン (オレンジ色のピンで示されたトランスフォーム値) を接続すると、変換ノードが作成されます。異なる値の型が存在するものの、変換によって互換性がある場合、Unreal Engine はピンを接続する際に自動的に変換ノードを作成します。

モンタージュの再生
次に、イベント グラフで スケルタル メッシュ コンポーネントを参照し、そこでモンタージュをプレイする必要があります。スケルタル メッシュ コンポーネントをイベント グラフにドラッグアンドドロップします。
グラフで右クリックして、 [Animation] > [Montage] > [Play Montage] を選択して、Play Montage ノードを追加します。次に、モンタージュ アセットを Montage to Play ピンに割り当てます。

結果
これでレベルをプレイすると、キャラクターがパンチ アニメーションを再生しながら適切なポイントにワープするのを確認できます。

以下では、このページでシンプルなワープ ターゲット位置へのモーション ワープの実装に使用したキャラクター ブループリント ロジックの全体を確認できます。
