Unreal Engine のモーション マッチング はクエリベースのアニメーション ポーズ選択システムです。Pose Search プラグイン内に含まれ、モーション マッチングの Animation Blueprint ノードを ステート マシン または ブレンドスペース の代替として動的に使用できます。従来のアニメーション システムと異なり、モーション マッチングは、アニメーション データのセットから情報に基づいてアニメーション ポーズを選択でき、反応および応答性の優れたアニメーション システムを作成します。アニメーション シーケンス の間でトランジションやブレンド ロジックをセットアップする必要がありません。

Motion Matching ノードは、移動モデル、チューザー システム、または 変数の状態 などの動的キャラクター システムをクエリし、データベース アセットに格納されたアニメーション データ セットから、情報に基づいてアニメーション ポーズをクエリに一致するように選択します。モーション マッチング キャラクター アニメーションの結果は、ゲームプレイ システムに対して従来のステート マシンまたはブレンド ロジックよりもよく反応し、応答性に優れています。
モーション マッチングでは、データベース アセットにアニメーション データをさらに追加するだけで、キャラクターのアニメーションの忠実度を高められます。アニメーション データを増やすと、Motion Matching ノードにより、選択元の多くのデータにアクセスできます。追加のトランジション ロジックの実装や変更は必要ありません。
Unreal Engine のモーション マッチング システムには、プロジェクトの目標に合わせてアニメーション システムを調整するために使用できる、設定およびデバッグ ツールのスイートも含まれます。これらのツールでは、選択内容を確認し、クエリ処理を編集して、選択基準のウェイトを設定できます。
このドキュメントでは、Unreal Engine のモーション マッチングの概要と、モーション マッチングを使用するキャラクターの移動アニメーション システムの設定方法のサンプル ワークフローについて説明します。
必須条件
- Pose Search プラグイン を有効にします。メニュー バー で [Edit (編集)] > [Plugins (プラグイン)] の順に移動して [Animation (アニメーション)] セクションにある Animation Locomon Library を見つけるか、検索バー を使って検索します。これらのプラグインを有効にして、エディタを再起動します。

- Motion Trajectory プラグイン を有効にします。メニュー バー で [Edit (編集)] > [Plugins (プラグイン)] の順に移動して [Animation (アニメーション)] セクションにある Animation Locomon Library を見つけるか、検索バー を使って検索します。これらのプラグインを有効にして、エディタを再起動します。

Motion Trajectory プラグインには、モーション マッチングと連携して使用するように設計された 移動コンポーネント の変更バージョンが含まれます。このコンポーネントはすべてのモーション マッチングの実装で必要になる訳ではありませんが、クエリするキャラクターのシステムとして機能します。
- プロジェクトには、移動 (歩行、走行、方向転換) アニメーションのセットを備えたキャラクターが含まれます。これらがない場合は、以下のように実行します。
モーション マッチングのセットアップ
プロジェクトに移動ベースのモーション マッチング システムをセットアップする方法を示すサンプル ワークフローを次のとおり実行できます。
モーション軌道コンポーネントを作成する
移動モーション マッチングの実装では、キャラクター軌道を、選択したポーズに一致させるために、クエリする必要があります。キャラクターに モーション軌道コンポーネント を追加することは、モーション マッチング システムをセットアップするときの、オプション ステップです。モーション軌道コンポーネントは、選択したポーズに一致させるために、クエリする Motion Matching ノードに対するシステムとして機能します。
代替のモーション マッチングの実装 (よじ登り、会話などのシステム) では、モーション軌道コンポーネントをセットアップするのではなく、クエリするキャラクター システムを追加または定義する必要があります。
使用するキャラクター ブループリントで、キャラクター軌道 ブループリント コンポーネントを追加します。[Components (コンポーネント)] パネルの [+Add (+追加)]** で、[Character Trajectory]** を選択します。

Motion Matching ノードを駆動するために必要なアニメーション ブループリントやキャラクター ブループリントで、キャラクター軌道コンポーネントに対して参照変数を作成できます。

モーション軌道設定
モーション軌道コンポーネントのプロパティの一覧を以下に示します。
Property | 設定 |
---|---|
履歴の長さ (秒) | 何秒前までの選択評価を格納するのかを設定します。 |
1秒ごとの履歴サンプル | 履歴時間に格納された 1 秒ごとの履歴サンプル でのサンプル数または時間単位のポイント数を設定します。たとえば、履歴の長さ が デフォルト値は、99% のユースケースで機能すると考えられます。 |
移動速度に向かって回転 | 有効にすると、このプロパティにより、キャラクターの加速方向に軌道を回転させる速さを制御します。このプロパティは機銃掃射セットアップなしの移動セットアップで使用されます。 |
Maximum Controller Rotation Rate | モーションの軌道が追跡されるときにコントローラーが入力できる最大回転レートを設定します。値が大きいほど、許容される回転が速くなります。負の値ではこの機能は無効です。 |
ポーズ検索スキーマ アセットを作成する
ポーズ検索スキーマ アセットではモーション マッチング構成とクエリ設定を格納します。このアセットは、アニメーション データベースとクエリ システムを Motion Matching ノードにリンクさせるために使用され、アニメーションを選択する目的でクエリするために使用するデータを定義します。

ポーズ検索スキーマ アセットを作成するには、コンテンツ ブラウザ で 右クリック して [+Add (+追加)]** をクリックし、[Animation (アニメーション)] > [Motion Matching (モーション マッチング)] > [Pose Search Schema (ポーズ検索スキーマ)]** を選択します。

新しいポーズ検索スキーマ アセットを作成した後、モーション マッチング システムを構築する対象キャラクターのスケルトンを選択するように求められます。

新しいポーズ検索スキーマ アセットには、事前構成された 2 つのチャンネル、軌道チャンネル と ポーズ検索チャンネル があります。軌道チャンネルでは、ポーズを選択するためにサンプリングする、モーション軌道コンポーネントのポイントを設定できます。デフォルト設定はこのサンプル ワークフローで動作しますが、サンプルを [Samples (サンプル)] プロパティの [+Add (+追加)]** で追加すると、モーション マッチング システムで選択対象となる使用可能データを増やすことができます。
できるだけ少ないサンプルを使用することをお勧めします。サンプルが多いと、より正確なデータを Motion Matching ノードに提供できますが、システムの結果が歪むことがあります。

軌道チャンネル
軌道チャンネル内の各インデックスに、フラグを割り当て、モーション軌道チャンネルをクエリするときに、サンプル ポイントが検索するデータの型を決定できます。このワークフロー サンプルは、デフォルト値で動作します。軌道チャンネルの設定およびフラグの詳細については、「軌道チャンネル リファレンス」セクションを参照してください。

ポーズ チャンネル
ポーズ チャンネル では、クエリ システムにポーズを一致させるために、モーション マッチング システムのボーン定義を設定できます。デフォルト アセットには、マネキン スケルトンの足ボーン foot_l
および foot_r
に対するボーン定義の事前構成が含まれます。異なるスケルトンを使用している場合、これらのボーン定義をそのスケルトン アセットの左足ボーンと右足ボーンで置き換えます。

モーション マッチング システムが選択の際に調べるデータ タイプを決定できるよう、サンプルされた各ボーンにフラグも設定できます。ポーズ チャンネルの設定および異なるフラグの詳細については、「ポーズ チャンネル」セクションを参照してください。
ポーズ チャンネルは、参照ポイントとしてどのボーンも使用できます。移動モーション マッチング アニメーション システムでは、キャラクターの両足など、モーションに関連したモーション データを追跡するために便利な一対のボーンを選択します。よじ登りシステムのような別のシステムであれば、キャラクターの手のボーンなど、よじ登りに則したデータ入っているボーンを選択します。
チャンネルをモーション データベース構成アセットに追加できますが、チャンネルおよびチャンネル内のサンプルが増えると、実行に必要なパフォーマンス コストが高くなります。
このワークフロー サンプルでは、デフォルト値で適切な移動の結果が得られます。
ポーズ検索スキーマ アセット リファレンス
ポーズ検索アセットのプロパティおよび設定の一覧を以下に示します。
プロパティ | 説明 |
---|---|
スケルトン | Motion Matching ノードを使用する、自分のキャラクターにスケルトン アセットをここで定義できます。 |
ミラー データ テーブル | アニメーションを選択するときに、Motion Matching ノードで使用する、ミラーリング アニメーション シーケンスを提供するために、ミラー データ テーブル アセットをここで設定できます。 |
Data Preprocessor | フルポーズ機能データセットに対して行う演算の型を設定します。次のオプションから選択できます。
|
サンプル レート | データベースで アニメーション データのサンプリングに使用される更新レートを設定します。サンプル レートが大きいと、アニメーション ポーズ検索をさらに精密にできますが、システムのメモリ コストが高まります。 |
チャンネル | ランタイム時に、アニメーション ポーズをクエリ、検索、マッチングするときに使用するモーション マッチング システムにチャンネルをここで追加し設定できます。チャンネルにより、サンプル ボーンの位置や速度、リムのフェーズなど、比較的単純なパーツ内のモーション データベース構成アセットのコスト内訳が列挙されます。インデックス済みデータベース ポーズに対するクエリの合計コストは、結合されたチャンネル コストの合計です。[+Add (+追加)] でチャンネルを追加し、ドロップダウン メニューからチャンネルを選択できます。追加チャンネルを加えるとモーション マッチング システムの機能は多様になりますが、さらにメモリとパフォーマンス コストが必要になります。 自分のアニメーション システムの目標を達成するために必要な最小限のチャンネルを使用することをお勧めします。 個別のチャンネルおよびその固有のプロパティの詳細については、「チャンネル」」セクションを参照してください。 |
継続ポーズ コスト バイアス | 現在の選択ポーズにバイアスを加える値をここで設定できます。これにより、次のポーズを選択するときに、値を評価する方法に影響を及ぼす、正または負のコスト バイアスをポーズに適用できます。これが便利なのは、この値をどのように設定するのかに応じて、1 つのアニメーション セグメントに留まる時間を長くまたは短くできることです。負の値では、アニメーションが連続的に選択され、長い持続時間でプレイされるようになります。一方、正の値では再び選択される可能性は低くなり、結果としてアニメーションが短い持続時間でプレイされます。 |
ループ コスト バイアス | データベースですべてのループ アニメーション アセットに追加される値をここで設定できます。これにより、システムでループ アニメーションを選択する可能性を制御できます。負の値では、システムでループ アニメーションを選択し、ループ アニメーションに留まる可能性が高まり、一方、正の値では、ループ アニメーションが選択される、つまり連続でプレイされる可能性が低くなります。 |
Number of Permutations | 選択中に、関連データベースのアニメーション アセットにインデックスを設定する回数を設定します。 |
順列時間オフセット | 最初の順列の サンプリング時間 からの 順列時間 の開始オフセットを表す値を設定します。以降の順列では、PermutationTime = SamplingTime + PermutationTimeOffset + PermutationIndex / PermutationSampleRate の式を用いて Permutation Time Offset を決定します。 |
データ パディングを追加 | 有効にした場合、パディング チャンネルは、データが 16 バイト アラインメントになるようにモーション データベース構成アセットに追加されます。結果としてメモリのコストがさらにかかりますがパフォーマンスの改善を促進します。 |
追加のデバッグ チャンネルをインジェクト | 有効であれば、チャンネルはこのスキーマに追加のチャンネルを挿入するように求められます。本来の意図は、UPoseSearchFeatureChannel_postions(s) を追加して、デバッグ描画の複雑さを軽減することです (データベースには、適切な位置とタイミングでラインを描画するために必要なすべての位置がある)。 |
チャンネル
モーション データベース構成アセットで利用できるチャンネルの一覧です。
クラッシュ レッグ
クラッシュ レッグ チャンネルは、移動中に、キャラクターの脚がオーバーラップしないようにするために使用します。設定距離でリムを離れたままにするポーズを選択します。これは LeftThigh
位置から RightThigh
位置への方向と LeftFoot
位置から RightFoot
位置への方向でつくる角度を使用して計算されます。これを PI で除算して、-1.0
から 1.0
の範囲に値を設定できます。
クラッシュ レッグ チャンネルの設定とその機能の説明を以下に示します。
プロパティ | 説明 |
---|---|
LeftThigh | キャラクターの左腿を表すボーンを設定します。 |
右腿 | キャラクターの右腿を表すボーンを設定します。 |
左足 | キャラクターの左足を表すボーンを設定します。 |
右足 | キャラクターの右足を表すボーンを設定します。 |
Weight | このチャンネルの結果の重みを、モーション データベース構成アセットの他のアクティブ チャンネルに対して相対的に設定します。 |
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
許可されている許容範囲 | このチャンネルを使って選択するときの許容差を設定します。 |
Group
グループ チャンネル を使うと、モーション データベース構成アセットのチャンネルをグループ化して一度に演算を実行できます。グループ チャンネルの作成後、[+Add (+追加)] を使って Sub-Channel プロパティにチャンネルを追加することができます。
見出し
進行方向チャンネルを使ってシステムの進行方向をクエリできます。ボーンの動きを水平または垂直に限定するなど、動きを特定の軸に限定するときに便利です。
次の表は、進行方向チャンネルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
デバッグ カラー | ビューポートに表示されるデバッグ描画カラーを設定できます。モーション マッチング システムのデバッグをするときに便利です。 |
Bone (ボーン) | キャラクターのスケルトンから、ポーズ選択のクエリに使用するボーンを割り当てます。ドロップダウン メニューを使うと、スケルトンのシーングラフからボーンを選択できます。 |
Weight | このチャンネルが出力ポーズに与える影響の重みを、モーション データベース構成アセットの他のチャンネルに対して相対的に設定します。 |
サンプル時間オフセット | サンプリング時間のオフセットとして使用する値を設定します。 |
Heading Axis | サンプリングした Bone プロパティのモーションのクエリに使用する軸 (X、Y、または Z) を設定します。 |
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
コンポーネント ストリッピング | クエリされたデータから切り分けるモーション軸を選択します。なし を選択するとコンポーネント ストリッピングは行われません。XY を切り分け を選択すると、水平面に沿って X 軸と Y 軸のモーションだけが認識されます。Z を切り分け を選択すると、クエリの高さ方向に沿って、Z 軸モーションだけが認識されます。 |
パディング
パディング チャンネルは、データを 16 バイトにそろえるために使用します。パディングすると結果的に必要なメモリ量が増えますが、パフォーマンスは改善します。Padding Size プロパティを使うと、チャンネルがデータを埋めるときの順列の数を設定できます。
順列時間
順列時間チャンネルを使って、他のチャンネルにも重み付けし、各チャンネルが最終的な出力ポーズに与える影響の量を設定できます。
Weight プロパティを使うと、このチャンネルの影響の重みを、他のチャンネルに対して相対的に設定できます。
フェーズ
次の表は、フェーズ チャンネルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
デバッグ カラー | ビューポートに表示されるデバッグ描画カラーを設定できます。モーション マッチング システムのデバッグをするときに便利です。 |
Bone (ボーン) | キャラクターのスケルトンから、ポーズ選択のクエリに使用するボーンを割り当てます。ドロップダウン メニューを使うと、スケルトンのシーングラフからボーンを選択できます。 |
Weight | このチャンネルが出力ポーズに与える影響の重みを、モーション データベース構成アセットの他のチャンネルに対して相対的に設定します。 |
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
ポーズ
ポーズ チャンネルを使って、グローバル空間ではなくキャラクター空間におけるキャラクターの位置を計算できます。クエリしたい動きがグローバルな動きではなく、キャラクター位置周辺に限定されているときに便利です。
次の表は、ポーズ チャンネルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
Weight | このチャンネルが出力ポーズに与える影響の重みを、モーション データベース構成アセットの他のチャンネルに対して相対的に設定します。 |
サンプル化したボーン | ポーズ チャンネルが関連フラグに基づいてサンプリングするボーンのリストを定義します。ポーズをクエリ システムと照合するために使用します。[+Add (+追加)] を使うと、サンプリングするボーンの定義を追加できます。インデックスを追加すると、次のプロパティを設定できます。
|
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
キャラクター空間速度を使用 | 有効にすると、キャラクター空間での位置から速度が計算されます。無効にするとグローバル空間での位置から計算されます。 |
Position
位置チャンネルを使って、キャラクターのスケルトンの別のボーンに対して相対的なボーン位置をクエリできます。ボーンのずれ、つまり他のボーンに対して相対的なボーン位置に基づいてポーズを選択するときに便利です。
次の表は、位置チャンネルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
デバッグ カラー | ビューポートに表示されるデバッグ描画カラーを設定できます。モーション マッチング システムのデバッグをするときに便利です。 |
Bone (ボーン) | キャラクターのスケルトンから、ポーズ選択のクエリに使用するボーンを割り当てます。ドロップダウン メニューを使うと、スケルトンのシーングラフからボーンを選択できます。 |
原点ボーン | キャラクターのスケルトンから、ボーン の位置変化の計算に使用する基準点のボーンを割り当てます。ドロップダウン メニューを使うと、スケルトンのシーングラフからボーンを選択できます。 |
Weight | このチャンネルが出力ポーズに与える影響の重みを、モーション データベース構成アセットの他のチャンネルに対して相対的に設定します。 |
サンプル時間オフセット | サンプリング時間のオフセットとして使用する値を設定します。 |
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
コンポーネント ストリッピング | クエリされたデータから切り分けるモーション軸を選択します。なし を選択するとコンポーネント ストリッピングは行われません。XY を切り分け を選択すると、水平面に沿って X 軸と Y 軸のモーションだけが認識されます。Z を切り分け を選択すると、クエリの高さ方向に沿って、Z 軸モーションだけが認識されます。 |
順列時間オフセット | 最初の順列の サンプリング時間 からの 順列時間 の開始オフセットを表す値を設定します。以降の順列では、PermutationTime = SamplingTime + PermutationTimeOffset + PermutationIndex / PermutationSampleRate の式を用いて Permutation Time Offset を決定します。 |
サンプリング時間
軌道
軌道チャンネルは、キャラクターの動きの軌道をサンプリングするためのもので、キャラクター軌道 ブループリント コンポーネントと併せて使用します。Weight プロパティを使うと、軌道チャンネルが最終的な出力ポーズに与える影響の量を設定できます。Samples プロパティで、キャラクター軌道コンポーネントの各時点のサンプリングを追加し、キャラクター動作モデルをサンプリングできます。
次の表は、サンプルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
デバッグ カラー | ビューポートに表示されるデバッグ描画カラーを設定できます。モーション マッチング システムのデバッグをするときに便利です。 |
Offset (オフセット) | キャラクターの動きのサンプルを、キャラクター軌道コンポーネントからいつ取得するか設定します。正の値は時間が進む方向、負の値は時間が戻る方向です。 |
フラグ | キャラクター軌道コンポーネントに沿って Offset プロパティで指定した位置で、キャラクターの動きのどの値を取得するかをトグルして選択します。ドロップダウン メニュー リストで数値をいくつでもトグルして選択できます。 |
Weight | サンプルが最終的な出力ポーズの選択に与える影響の量を設定します。この値は、他のチャンネルではなく、インデックスの他のサンプルに対して相対的に重み付けするために使用します。 |
速度
速度チャンネルを使って、キャラクター空間またはグローバル空間のいずれかでのキャラクター速度に基づきポーズをクエリできます。
次の表は、速度チャンネルの各プロパティとその機能を説明しています。
プロパティ | 説明 |
---|---|
デバッグ カラー | ビューポートに表示されるデバッグ描画カラーを設定できます。モーション マッチング システムのデバッグをするときに便利です。 |
Bone (ボーン) | キャラクターのスケルトンから、ポーズ選択のクエリに使用するボーンを割り当てます。ドロップダウン メニューを使うと、スケルトンのシーングラフからボーンを選択できます。 |
Weight | このチャンネルが出力ポーズに与える影響の重みを、モーション データベース構成アセットの他のチャンネルに対して相対的に設定します。 |
サンプル時間オフセット | サンプリング時間のオフセットとして使用する値を設定します。 |
入力クエリ ポーズ | クエリされたポーズの入力に使用する方法を設定します。方法には次のオプションがあります。
|
キャラクター空間速度を使用 | 有効にすると、指定した ボーン の速度が、グローバル空間ではなくキャラクター空間で計算されます。ワールド空間でのキャラクターの動きではなく、局所的な動きをクエリするときに便利です。 |
正規化 | 有効にすると、速度値が最大値 1 として正規化されます。動きの重大度ではなく、ボーンがいつ動いているかをクエリするときに便利です。 |
コンポーネント ストリッピング | クエリされたデータから切り分けるモーション軸を選択します。なし を選択するとコンポーネント ストリッピングは行われません。XY を切り分け を選択すると、水平面に沿って X 軸と Y 軸のモーションだけが認識されます。Z を切り分け を選択すると、クエリの高さ方向に沿って、Z 軸モーションだけが認識されます。 |
ポーズ検索データベース アセットを作成する
キャラクターのアニメーション データを、Motion Matching ノードが選択できるフォーマットで保存するには、ポーズ検索データベース アセットを作成する必要があります。モーション データベース アセットを作成するには、コンテンツ ブラウザ で検索して [+Add (+追加)]** を選択し、[Animation (アニメーション)] > [Motion Matching (モーション マッチング)] > [Pose Search Database (ポーズ検索データベース)]** を選択します。

ポーズ検索データベース アセット オプションを選んだ後、ウィンドウからポーズ検索スキーマ アセットを選択し、ポーズ検索スキーマ アセットを定義する必要があります。コンテンツ ブラウザ内でダブルクリックすると、アセット エディタが開きます。

ポーズ検索データベースでは、Motion Matching ノードで選択して使えるようアニメーション アセットを追加したり編集したりできます。アセットを作成した後、コンテンツ ブラウザ 内でそのアセットを ダブルクリック すると、ポーズ検索データベース アセット エディタが開きます。

これでモーション データベース アセットにアニメーション アセットを追加できます。このワークフロー例では、ループやピボット、停止などのロコモーション アセットを使用しています。
ロコモーション用のモーション マッチング設定で使用するアニメーションにはルート モーションを含む必要があり、またアニメーション シーケンスの Root Motion プロパティを有効にする必要があります。
求める忠実度に合わせて必要な量のアニメーション アセットを使用できます。アニメーション アセットが増えると、Motion Matching ノードが選択できるデータが増えます。
アニメーション アセットを追加するには、[Asset List (アセット リスト)] パネルの [+Add (+追加)]** を使うか、[Content Browser (コンテンツ ブラウザ)] パネルまたは [Asset Browser (アセット ブラウザ)]** パネルでドラッグ アンド ドロップします。

ポーズ検索データベース アセットはさまざまなタイプのアニメーション アセットをサポートしています。アニメーション シーケンス アセットはデフォルト アセットとして使用できますが、アニメーション合成 や ブレンドスペース、アニメーション モンタージュ によるアセットもオプションで使用できます。


ポーズ検索データベースにアニメーションを追加したら、[Asset List] パネルでアニメーション シーケンス アセットを 1 つまたは複数選択して、ビューポート で再生したり、[Selection Details (選択の詳細)] パネルでプロパティを編集したりできます。

Motion Matching ノードを作成する
キャラクターのアニメーション ブループリントに Motion Matching ノードを作成します。グラフ内で右クリックし、[Pose Search (ポーズ検索)] の下の [Motion Matching (モーション マッチング)] を選択します。

グラフ内で Motion Matching ノードの [Searchable (検索可能)] ピン ドロップ ダウンメニューを使い、データベース アセットを選択します。

AnimGraph で Motion Matching ノードを選択し、[Details (詳細)] パネルでプロパティを開きます。Trajectory プロパティ のドロップダウン メニューから、[Character Trajectory (キャラクターの軌道)] > [Trajectory (軌道)] を選択して、キャラクターのモーション軌道コンポーネントを定義します。これは プロパティ アクセス で、アニメーション ブループリントの EventGraph ロジック内で設定した参照変数にアクセスすることで可能になります。また、グラフ内のピンや、アニメーション ノード関数 を使ってクエリ システムに参照を提供することもできます。

Settings プロパティを開いて Max Active Blends プロパティを 5
に設定し、 Pose Reselect History プロパティを 1
に設定します。

最後に、Motion Matching ノードの出力ポーズを Output Pose ノードにつなぎ、グラフの 保存 と コンパイル を行います。

これで、キャラクターは、Motion Matching を使って、ランタイム時にロコモーション アニメーションのポーズを選択できるようになりました。

モーション マッチング ノード
下記は、Motion Matching ノードの設定リストとその機能の説明です。

プロパティ | 説明 |
---|---|
データベース | ここで、選択に使用するデータベース アセットを設定することができます。 |
軌道 | ここで、モーション軌道コンポーネント などのクエリに使用するシステムを設定できます。 |
軌道速度倍率 | キャラクターの軌道速度に適用される乗数を設定できます。 |
ブレンド時間 | 新しいアニメーション シーケンス セグメントを選択する際に、ブレンドの長さを決定するために使用する値を設定します。Motion Matching にはブレンド ツリーが組み込まれており、ブレンドのタイプ、品質、プロファイルのオプションがさらに用意されています。たとえば、上半身を下半身よりも長めにブレンドすることも可能です。今後、さらにオプションを拡充する予定です。 |
Max Active Blends | ブレンド ツリーのキューに入れられるブレンドの数を設定します。このプロパティは、アクティブなブレンドが多すぎてポーズが不明瞭になるのを防ぐのに役立ちます。数値は 4 と 5 の間に設定することをお勧めします。 |
ブレンド プロファイル | Motion Matching で使用するキャラクターのブレンド プロファイルの 1 つを設定できます。 |
ブレンド オプション | Motion Matching でのブレンドの適用方法 (リニア、イーズ イン、アウト) などを設定できます。 |
ポーズのジャンプしきい値時間 | タイムフレームを秒単位で設定できます。現在のフレームからこの時間だけ離れていなければ、システムはこの範囲内にある同じアセット上のポーズにジャンプしません。システムが同じクリップ内のアニメーションのセクションを何度も選択するのを防ぎ、さまざまなアニメーションを再生したり、新しいものを選んだりするのに役立ちます。 |
ポーズ再選択履歴 | 以前選択されたポーズにジャンプしないようにする範囲を、秒単位で設定できます。 |
検索スロットル時間 | システムが新しいポーズを検索する頻度を設定します。 |
再生速度 | アニメーション選択の再生レートを設定します。 |
Reset On Becoming Relevant | このプロパティを有効にすると、前のフレームでティックされていなかったノードがグラフに関連付けられた場合にモーション マッチングのステートがリセットされます。 |
検索する | 有効にすると、Motion Matching ノードはクエリ システムと照合するために、接続されたデータベース アセットのアニメーションを検索します。 |
ポーズ検索スキーマ チャンネル ウェイト
ポーズ検索スキーマ アセットの各チャンネルのウェイト プロパティを使用して、各チャンネルの選択プロセスに対する影響の大きさを制御できます。

ポーズ検索スキーマ アセットの各チャンネルの Weight プロパティは、モーション マッチング システムに、各チャンネルがデータベース内のアニメーション フレームの選択にどの程度影響するかを指示します。
上のワークフローの例では、ポーズ チャンネルのウェイトを 1.0
に設定し、軌道チャンネルのウェイトを 3.0
に設定しています。これは、システムが軌道の違いの影響を、ポーズの違いの 3 倍受けることを意味しています。
各チャンネルにあるそれぞれのプロパティは、アニメーションの選択に影響を与える要因をさらに調整するために、ウェイトを設定することもできます。たとえば、History プロパティや Prediction Horizon プロパティにウェイトを設定し、過去や未来に偏ったスコアリングを行うこともできます。これにより、ポーズ検索スキーマの他のチャンネル内に影響を与える要素を振り分けることができます。
各ウェイトはどのような値を与えても、システムによって自動的に正規化されます。ウェイトが正規化されないようにするには、 Data Processor プロパティを None に設定します。
ただし、ウェイトによって誤ったポーズ選択がなくなるとは限りません。たとえば、動作モデルが秒速 5 メートルで動いているのにデータが秒速約 4 メートルに平均化されている場合、モーション マッチング システムは一貫して最大値のアニメーション ポーズを選択します。最大値のアニメーション ポーズのウェイト値を調整して下げると、これが繰り返し選択されなくなるかもしれませんが、一部のチャンネル基準が完全に無視され、アニメーション システムに支障が生じる可能性があります。
チャンネルのウェイトを調整する場合、プロジェクトのシステムを考慮するのではなく、システムがアニメーションのポーズを選択する方法を調整します。アニメーション システム全体を保持するために、ポーズ検索データベース セットを使用するなどの他の方法を使用して、すべてのゲームプレイ シナリオを考慮することができます。
ポーズ検索正規化セット
ポーズ検索正規化セットは、一連のポーズ検索データベースのアセットを定義したものであり、各セットは特定のユースケースに適用可能なアニメーションのグループを格納しています。たとえば、あるデータベースにはキャラクターの歩行アニメーションが格納され、別のデータベースにはそのキャラクターの走行アニメーションが格納されます。複数のポーズ検索データベース アセットをポーズ検索正規化セットに設定することで、アニメーション セットを区分化し、特定の条件を満たしたときにモーション マッチング システムより優先されるように、それぞれにウェイトを設定できます。

特定のゲームプレイ イベントがトリガーされると、ポーズ検索正規化セットを動的に入れ替えることができます。そのため、Motion Matching ノードが選択するアニメーション データのプールが制限され、アニメーション システムのアニメーション ポーズ出力がコントロールしやすくなります。これは、ポーズ検索正規化データベース アセットでポーズ検索データベース アセットのシリーズを定義し、実行時にアクティブなデータベースを動的に設定するチューザー システムを使用することで可能です。
モーション マッチング通知
モーション マッチング通知セットを使用して設定内で活用することもできます。下記は、利用可能な [Motion Matching notifies (モーション マッチング通知)] のリストとその機能の説明です。

通知 | ディスクリプション |
---|---|
姿勢マッチング:トランジションをブロック | システムがタグ付けされたエリアにはジャンプできないが、タグ付けされていない前のセクションから再生できるエリアをアニメーション内に設定できます。アニメーションの途中でジャンプしたくない部分があるときに有用です。たとえば、キャラクターが頭を掻いているアニメーションのアイドリング中にジャンプするのは絶対に避けたいと思います。その部分にタグを付けておくと、タグ付けされていない任意の場所にジャンプできます。 |
ポーズ マッチング:データベースから除外 | アニメーション データのセクションをアニメーション シーケンスから完全に除外することができます。この通知で設定したセクションは、構築と検索の対象外になります。 |
姿勢マッチング:ベース コスト バイアスをオーバーライド | アニメーション シーケンスのセクションに対して、このセクションを選択する際のボーナスやペナルティを与えることができます。負の値はボーナス、正の値はペナルティになります。システムが開始アニメーションを希望より早く停止するような状況で役立ちます。希望どおりの停止まで続行させたいセクションにこの通知を置き、そのエリアに長く保留するために小さいボーナスを与えます。 |
アニメーションのゆがみ
Animation Warping ノード を Motion Matching と組み合わせて実装することで、さらにアニメーション範囲を広げることができます。
アニメーションのゆがみの詳細については、次のドキュメントを参照してください。
モーション マッチングのデバッグ機能
モーション マッチング アニメーションシステムを Rewind Debugger でデバッグする方法の詳細については、次のドキュメントを参照してください。
詳細情報
Unreal Engine のモーション マッチングの詳細については、「モーション マッチング | GDC 2024」のプレゼンテーションを参照してください。