モーション ワープ

Unreal Engine におけるアニメーションのモーション ワープの詳細について説明します。

Choose your operating system:

Windows

macOS

Linux

Motion Warping (モーション ワープ) は、キャラクターのルート モーションをターゲットに合わせてダイナミックに調整できる機能です。このドキュメントで示すのはモーション ワープ ロジックをキャラクター ブループリントに作成する方法、アニメーション モンタージュ内でモーション ワープ ウィンドウを割り当てる方法、および指定の位置にウィンドウをリンクする方法です。

前提条件

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

motion warping plugin

モーション ワープの概要

モーション ワープの機能全体は主に次の 2 つのエリアに分けられます。

  1. アニメーション モンタージュ。モーション ワープ ウィンドウをアニメーション通知状態とともに作成できます。

animation montage overview

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

blueprint overview

アニメーション モンタージュ

アニメーション モンタージュでは、モーション ワープ エリアを指定して、モーション ワープ エリアの動作をカスタマイズし、名前を指定します。

作成する

新しいモーション ワープ領域を作成するには、[Notifies (通知)] トラックの 1 つを右クリックして、[Add Notify State...(通知状態を追加...)]> [Motion Warping] を選択します。

create motion warp notify state

これらは、ワープが最適に適用されるアニメーションの領域に合わせて開始時間と終了時間を設定できるカスタマイズ可能なエリアです。

たとえば、このマントル モンタージュでは、キャラクターが手を障害物に置いたとき、開始ワープ領域がそのエリアをカバーすることを確認する必要があります。

motion warp sequence

詳細パネル

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

motion warp details panel

詳細名

説明

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] を見つけます。クリックして追加します。

motion warping component

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

motion warping blueprint instance

ノード

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

new node from motion warp

次の Motion Warping ノードをブループリントで使用することができます。

ノード名

ノードの画像

説明

Add or Update WarpTarget

add or update warp target node

このノードは、モンタージュ アセットで定義された Warp Target Name にリンクします。Warp Target ピンは個別の Translation ピンと Rotation ピンに分割できます。

これには右クリックして、[Split Struct Pin (構造体ピンを分割)] を選択します。

Add Root Motion Modifier Skew Warp

add root motion modifier skep warp

モンタージュ アセットに Skew Warp Anim Notifies を追加する代わりに、このノードで、新しいモーション ワープ ウィンドウをブループリントで生成します。

このモーション ワープ ウィンドウの設定はここでも割り当てできます。Start TimeEnd Time、および Warp Target Name などがあります。

また、Add Root Motion Modifier for Scale ノードと、すべての Root Motion Modifier を無効にするノードも使用できます。

モーション ワープのサンプル

このセクションでは、キャラクターがターゲットにワープしてパンチするシンプルなモーション ワープの例を設定する方法について説明します。

ワープの無効化

warp disabled

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

enable root motion window

ターゲット位置の設定

まず、ワープ ターゲットを作成して、配置します。この例では、Cylinder を使用します。

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

add motion warp target

アニメーション モンタージュの設定

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

create animation montage

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

motion warp notify state

これで、モーション ワープ ウィンドウとハンドルが作成されます。このハンドルを使用すると、範囲の開始と終了を設定できます。

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

motion warp notify

次に、Motion Warping キーフレームを選択して、[Details]パネルに移動します。ここで、このキーフレームの複数の意プロパティを設定します。

  • [Root Motion Modifier Config][Skew Warp**] に設定します。これにより、ワープのタイプを指定します。

  • Warp Target Name に名前を設定します。これにより、このワープを名前で識別します。

set details panel

ターゲット位置の取得

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

この例には、Input Action Event for Punch があります。

get input

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

get actor

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

get location

ワープ ターゲット

次に、Target Point の位置を取得するロジックを作成します。

まず、Motion Warping コンポーネントをキャラクター ブループリントに追加します。これを実行するには、[Components] パネルで 追加 (+) ボタンをクリックして、[Movement] カテゴリにある [Motion Warping] を見つけます。クリックして、コンポーネントを追加します。

add motion warping component

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

motion warping instance

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

sync point logic

また、Add or Update Warp Target from Transform ノードをターゲット位置に接続する必要があります。Warp Target ピンを右クリックして、[Split Struct Pin (構造体ピンを分割)] を選択し、Location/Rotation ピン構造に変換します。次に、Get Actor LocationReturn Value ピンを Get Actor Location の Return Value ピンにつなげます。

Get Actor Location ノードの Return Value (黄色いピンで示されたベクター値) と Add or Update Warp Target from Transform ノードの Target Transform ピン (オレンジ色のピンで示されたトランスフォーム値) を接続すると、変換ノードが作成されます。異なる値の型が存在するものの、変換によって互換性がある場合、Unreal Engine はピンを接続する際に自動的に変換ノードを作成します。

sync point location

モンタージュの再生

次に、イベント グラフで スケルタル メッシュ コンポーネントを参照し、そこでモンタージュをプレイする必要があります。スケルタル メッシュ コンポーネントをイベント グラフにドラッグアンドドロップします。

グラフで右クリックして、 [Animation] > [Montage] > [Play Montage] を選択して、Play Montage ノードを追加します。次に、モンタージュ アセットを Montage to Play ピンに割り当てます。

play montage

結果

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

motion warping enabled

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

blueprint overview