プロキシ 、プロキシ テーブル およびチューザーテーブル のアセットを組み合わせて、動的アセットの選択ロジックを作成し、プロジェクトの変数に基づいてアニメーションを制御できます。 たとえば、プロキシ アセットとプロキシ テーブル アセットを使用すると、さまざまな武器セットなど、キャラクターのためにロードおよび使用されるアニメーション セットの種類を選択できます。 または、チューザー テーブルを使用して、キャラクターが攻撃された場所に基づいたさまざまなヒット リアクションなど、個別のアニメーション アセットをプロジェクトのコンテキスト変数によって動的に選択できます。
以下のドキュメントで、Unreal Engine の動的アニメーションの選択システムの詳細についてご確認ください。
このドキュメントは、アニメーション シーケンス、モンタージュまたは AnimInstance クラスなどのアニメーションに関連したアセットの選択にチューザー テーブルとプロキシ テーブルを使用することに重点を置いていますが、システム自体は汎用的で、アセット、オブジェクトまたはクラスのタイプの選択に使用できます。
前提条件
Chooser プラグインを有効にします。 メニュー バー から [Edit (編集)] >[Plugins (プラグイン)] の順に選択し、[Animation (アニメーション)] セクションで [Chooser (チューザー)] を見つけるか、検索バー を使用して検索します。 このプラグインを有効にして、エディタを再起動します。
プロジェクトには、ランタイム時の状況に応じて動的に選択するアニメーション セットが含まれています。 これは、一意の装飾的なアニメーション セット、コンテキスト アニメーション シナリオなどの関連ゲームプレイ アニメーション、または武器などの装備可能なアイテムに関連するアニメーション セットです。
プロジェクトには、使用可能なアニメーション ブループリントが含まれていて、動的なアニメーション選択ロジックを作成できます。
アニメーション選択システムを設定する
ここでは、プロジェクトにアニメーション チューザー システムを設定し、ランタイム時のプロジェクトのコンテキストに基づいてヒット リアクションのアニメーション再生を動的に選択する方法を確認できます。
プロキシ アセットを作成する
プロキシ アセット は、どのプロキシ テーブル アセットがアクティブであるかについてのコンテキスト情報や、その他の関連変数を格納するために使用されます。
プロキシ アセットを作成するには、コンテンツブラウザ の [+Add (+追加)] を使用して、 [Miscellaneous (その他)] > [Proxy Asset (プロキシ アセット)] に移動します。
動的にアニメーションを選択する各アニメーション セット用にプロキシ アセットを作成して、アイドル、歩く、走るなど、キャラクターを制御します。
プロキシ アセットを作成した後で、それぞれを開いて設定にアクセスします。
それぞれのプロキシ アセットで使用しているアニメーション アセット タイプに [Type (型)] プロパティを設定します。この場合は AnimSequenceBase です。
[Context Data (コンテキスト データ)] プロパティをアニメーション ブループリント オプションに設定します。これには、Context Object Type Class オプションを選択して、[+ Add (+追加)] で新しいインデックス 配列を追加します。
インデックス 配列の設定を展開して、アニメーション ブループリントを使用するように Class プロパティを設定します。この場合は ABP_Manny です。 次に、Direction プロパティが Read に設定されていることを確認します。
アニメーション ブループリントの設定
プロキシ アセットを設定した後、キャラクターのアニメーション ブループリントに変数を作成して、ランタイム時にアクティブなプロキシ テーブルを格納する必要があります。 この変数を作成するには、キャラクターのアニメーション ブループリントを開き、[+ Add (+追加)] を使用して、[My Blueprint (マイ ブループリント)] パネルで新しい変数を作成します。 次に、変数の型を Proxy Table Object Reference に設定します。 変数を作成した後、アニメーション ブループリントを 保存 および コンパイル します。
プロキシ テーブル変数は Evaluate Proxy ノードによってアニメーション グラフで使用され、ランタイム時にアクティブなプロキシ テーブルを決定します。
プロキシ テーブル アセットを作成する
プロキシ テーブル アセットは、ランタイムに動的に選択できるアニメーション アセット セットの格納に使用されます。 たとえば、キャラクターのアイドル アニメーションを格納するプロキシ テーブルもあれば、歩くまたは走るアニメーション セットを格納するプロキシ テーブルもあります。
プロキシ テーブル アセットを作成するには、コンテンツ ブラウザ の [+Add (+追加)] を使用して、 [Miscellaneous (その他)] > [Proxy Table (プロキシテーブル)] に移動します。
非武装のキャラクターおよびピストルやライフルを持ったキャラクターのロコモーション アニメーションなど、さまざまなアニメーション セットが必要なすべての状況用に、プロキシ テーブル アセットを作成します。
プロキシ テーブル アセットを作成した後で、アセットを開いてプロキシ テーブルの値にアクセスします。
[ProxyTable (プロキシ テーブル)] で、[+Add Row (行を追加)] を使用してアセットを選択し、各プロキシ アセット にエントリを追加します。 [Value (値)] 列を使用して、設定から関連するアニメーション アセットを割り当てることができます。
以下のワークフロー例では、ProxyTable_Unarmed アセットは、Unarmed_Idle に割り当てられ、Unarmed_Walk アニメーションは、ProxyAsset_Idle と ProxyAsset_Walk の各行に割り当てられています。 次に、ProxyTable_Pistol アセットでは、同じプロキシ アセット行が Pistol_Idle と Pistol_Walk アニメーションに割り当てられています。
[Value (値)] 列には、より動的なアニメーション選択システムに対して、 クラス 参照、チューザー アセット 、または ルックアップ プロキシ が含まれている場合もあります。
プロキシ テーブルをランタイム時に使用する
Sequence Player ノードで アニメーション ノード関数 を使用して、プロキシ テーブル アセットをランタイムに使用できます。 新しい関数を作成してプロキシ テーブル アセットを選択するには、Sequence Player ノードを選択し、On Update バインディングで新しい関数を追加します。
On Update ノードから Evaluate Proxy ノードを追加します。
次に、ノードを選択し、ドロップダウンを使用して Proxy プロパティでプロキシ アセットを選択します。
次に結果を変数に昇格させ、出力を Sequence Player ノードにつなげます。
その後、チューザー テーブルなど、さまざまな方法を使用して Evaluate Proxy ノードでアクティブなプロキシ テーブル アセットを設定して、キャラクターを制御するアニメーション セットを動的に変更できます。
チューザー テーブル アセットを作成する
チューザー アセットは、コンテキストに基づいて選択および再生できる、さまざまなアニメーションのイテレーションから構成されるアニメーション データ セットの格納に使用されます。 たとえば、チューザー テーブルは一連のヒット リアクションのアニメーションが含まれる場合があり、各エントリは攻撃されているボディの各部分 (腕、脚、胸、頭) に基づいて反応するアニメーションです。これは、ヒットの位置など、コンテキスト変数に基づいて選択できます。
チューザー テーブル アセットを作成するには、コンテンツブラウザ の [+Add (+ 追加)] を使用して、[Miscellaneous (その他)] > [Chooses Table (チューザー テーブル)] に移動します。
チューザー テーブルを作成した後で、アセットを開いてそのプロパティにアクセスできます。
[+Add (+追加)] を使用し、Context Data プロパティで新しい配列要素を作成して、プロパティを Context Object Type Class オプションに設定します。 次に、インデックス配列を展開して、Class プロパティを自分のキャラクターのアニメーション ブループリントに設定し、Direction プロパティが Read に設定されていることを確認します。 使用しているアニメーション アセットに出力オブジェクト タイプを設定できます。 このワークフローの例は、アニメーション シーケンスを使用しているので、AnimSequenceBase クラス オプションが選択されています。
[Chooser Table (チューザー テーブル)] パネルで、選択プロセスに影響を与えるアニメーション ブループリントから変数を設定するために、[+Add Column (列を追加)] ボタンを使用して列の追加を開始します。 列を作成した後で、選択に影響できるアニメーション ブループリントの変数、および各行内でアニメーション シーケンス アセットを選択するためにアクセスする必要がある変数の値または状態を定義できます。
このワークフローの例では、ブール変数 IsCrouching は、値が false の場合は MM_HangingIdle アニメーションを選択し、値が true の場合は MM_Rifle_Walk_Left を選択します。 MoveemntAngle 変数は、値が -100 と 100 の間の場合に MM_HangingIdle を選択し、値が 0.0 の場合にのみ MM_Rilfe_Walk_Left アニメーションを選択します。
この選択プロセスを使用してキャラクター アニメーションを制御するには、プロキシ テーブル エントリを [Evaluate Chooser (チューザーを評価)] に設定し、チューザー テーブル アセットを割り当てる必要があります。
アクティブなプロキシ テーブル アセットとチューザー テーブルによる選択の両方に基づいて、選択したアニメーションが変更されるようになります。