アニメーションのミラーリングは、キャラクターの片側のアニメーションを反対側にコピーするもので、同じアニメーションを異なる状況で再利用できます。ミラー データ テーブル および他のミラーリング ワークフローを使用して、アニメーション シーケンスだけではなく、カーブ、同期マーカー、通知をミラーリングできます。さらに、Unreal Engine 内でミラーリングすると、もう一方のコピーを管理することなく、ミラーリングされたアニメーションを作成できます。
このドキュメントでは、ミラー データ テーブルとアニメーション ブループリントを使用して、アニメーションをミラーリングする方法の概要を説明します。
前提条件
- プロジェクトに、ミラーリングする スケルタル メッシュ および アニメーション が含まれること。
- アニメーション ブループリント を作成し使用する方法を理解していること。
ミラー データ テーブル
アニメーションのミラーリングを開始するには、まず ミラー データ テーブル アセットを作成する必要があります。ミラー データ テーブルには、ミラーリングするスケルトンの全要素に対する割り当てと命令を設定します。
作成するには、コンテンツブラウザにある [+Add (追加)] をクリックして、[Animation (アニメーション)] > [Mirror Data Table (ミラーデータテーブル)] を選択します。ダイアログ ウィンドウが表示され、ミラーリングするスケルトンを選択する必要があります。スケルトンを選択し、[Accept (同意)] をクリックします。

ミラー データ テーブルを開くと、次の主要領域があるエディタが表示されます。

- [Data Table (データテーブル)]、ミラーリングする要素のリストが含まれます。このリストには、ボーン、通知、他の要素名に応じて、自動で内容が入ります。
- これは [Data Table Details (データ テーブルの詳細)] で設定できます。
- [Row Editor (行エディタ)]、選択エントリの設定があり、要素名、ミラー名、要素タイプを編集できます。
エントリを追加および編集する
新しいテーブル エントリを追加するには、[+Add (追加)] ツールバー ボタンをクリックして、[Row Editor (行エディタ)] パネルの 4 つのプロパティに入力します。
- [Row Name (行名)]、エントリの名前。
- [Name (名前)]、ミラーリングする元のボーンの名前。
- [Mirrored Name (ミラー名)]、ミラーリングされるもう一方のボーンの名前。左または右のボーンは、これらのプロパティのどちらにも設定できますが、これらのプロパティには対称なボーンを設定する必要があります。
- [Mirror Entry Type (ミラーエントリタイプ)]、ミラーリングする要素タイプ。次のタイプを選択できます。
- Bone (ボーン)
- Animation Notify (アニメーション通知)
- Curve (カーブ)
- Sync Marker (同期マーカー)
- Custom (カスタム)、C++ で新タイプを追加することにより、ミラー データテーブルを拡張するためのコード ベースになります。

キャラクターを完全にミラーリングするには、中心にある骨 (pelvis、spine、neck、head など) を含む最上位のスキン ボーンをテーブルに含める必要があります。これにより、ミラーリング処理で、ミラー軸に沿って一連のボーンの回転が適切に折り返されるようになります。これらのエントリでは、[Name] と [Mirrored Name] が一致する必要があります。

データテーブルの詳細
[Data Table Details (データテーブルの詳細)] パネルには次のとおりミラーリング処理の構成およびその他の設定が含まれます。

名前 | 説明 |
---|---|
Mirror Find Replace Expressions (ミラーの表現の検索と置換) | 共通のミラー エントリをテーブルに自動で入力するために使用する表現の配列です。詳細については、「表現の検索と置換」セクションを参照してください。 |
Mirror Axis (ミラーの軸) | ミラーリングの軸で、キャラクターの正面を横切ります。多くの場合、X になります。 ![]() |
Skeleton (スケルトン) | ミラーリング処理に使用するスケルトン アセット。 |
Row Struct (行構造) | テーブルの各行に使用する構造。拡張する場合は FTableRowBase から継承する必要があります。 |
Strip from Client Builds (クライアント ビルドから除外) | 有効に設定すると、このデータ テーブルはクライアント ビルドにクックされません。サーバーのみが認識する必要がある機密性の高いテーブルを作成する場合に役立ちます。 |
表現の検索と置換
表現の検索 および 表現の置換 は、データテーブルの詳細に追加できる、配列エントリで、スケルトンの要素に対する特定の文字列テキストを自動で検索し置き換えます。これらの表現は、スケルトンを作成または再インポートするときに、どの要素が自動で入力されるのかを知らせるために使用されます。

それぞれの配列に次の表現が必要です。
名前 | 説明 |
---|---|
Find Expression (表現の検索) | 検索するテキスト。多くの場合、要素名の対称を表わすモディファイア (_l 、left_ 、_left_ .など) になります。 |
Replace Expression (表現の置換) | 置換するテキスト。多くの場合、要素名の対称を表わすモディファイア (_r 、right_, 、_right_ .など) になります。 |
Find Replace Method (検索と置換の方式) | テキストを置換するときに使用する検索方式。次のオプションから選択できます。
|
方式として Regular Expression を使用すると、カスタマイズした 正規表現 を Find Expression と Replace Expression に設定できます。
たとえば、デフォルト配列の Index 12 には次の表現が含まれます。一般的な中心にある骨の名前を検索し Name および Mirrored Name プロパティに割り当てます。
- 検索表現:
((?:^[sS]pine|^[rR]oot|^[pP]elvis|^[nN]eck|^[hH]ead|^ik_hand_gun).*)
- 置換表現:
$1
finger_left_index1
など要素名の中間に対称を示すテキスト モディファイアがある場合、次の表現を記述し、適切に検索し置換できます。
- 検索表現:
(\S*)_left_(\S*)
- 置換表現:
$1_right_$2
配列には一般的表現が事前に設定されています。プレフィックスやサフィックスとして対称を表わすモディファイアの複数の順列を検索し置換できるようになっています。このデフォルト配列は [Project Settings (プロジェクト設定)] から変更できます。Unreal Engine のメインのメニュー バーで、[Edit (編集)] > [Project Settings (プロジェクト設定)] を選択してから、[Engine (エンジン)] > [Animation (アニメーション)] セクションに移動し、[Mirroring (ミラーリング)] プロパティ セクションを見つけます。

アニメーションのミラーリング
ミラー データ テーブルを作成し、値を入力したら、アニメーション ブループリント でアニメーションのミラーリングを実行できます。これは ミラー AnimGraph ノードを使用して実行されます。
作成するには、[AnimGraph] を右クリックして、[Mirroring (ミラーリング)] カテゴリから使用するテーブルを選択します。

入力ポーズと bool 変数 (ミラーリングの有効/無効) を指定することで、ミラーリング エフェクトをプレビューできます。

ミラー ノードには次のオプションが含まれています。

名前 | 説明 |
---|---|
Mirror | ミラー エフェクトを有効/無効にします。デフォルトではピンとして公開されます。 |
Mirror Data Table | ミラーリングに使用する ミラーデータテーブル。 |
Blend Time on Mirror State Change | ミラー が有効または無効になるとき、ミラー状態間でブレンドする時間の長さ。これを使用するには、ミラー ノードの後に Intertialization ノードを使用する必要があります。 ![]() |
Reset Child on Mirror State Change | 有効にすると、ミラー状態が変わったとき、ソースポーズが再初期化されます。 |
Bone | ミラーリングにボーン データを含めるかどうか。 |
Curve | ミラーリングにカーブ データを含めるかどうか。 |
Attributes | ミラーリングに通知と同期マーカー データを含めるかどうか。 |
ブループリント通知でミラー アニメーションを検出する
Custom Notify States を使用する場合、ミラー状態に基づいて異なる動作になるように変更することができます。Is Triggered By Mirrored Animation ノードを使用して、通知ブループリントでミラー状態を区別できます。
この例では、Received Notify 関数で使用し、ロジックを分岐します。ここでミラー アニメーションから受信した通知かどうかをチェックします。
