Language:
Page Info
Skill Level:
Engine Version:

ブレンドスペースの概要

ブレンドスペース の目的は、特定のプロパティや条件に基づいたブレンディングを行うアセットを代わりに使うことで、 個別にハードコード化したノードを作成する必要性を減らすことです。アニメーターやプログラマーが入力、アニメーション、およびアニメーション間でブレンドするための入力値の使用を指定できるようにすることで、 事実上、どのようなタイプのブレンドも 汎用ブレンドスペースを使用して実行することができます。

UE3 で AnimTree を使って同じタスクを処理していた方法とは正反対です。 複雑なブレンドを処理するには、それを行う新規ノードを作成する必要があります。 ブレンドスペースは完全に汎用的です。各ブレンドスペースで指定するブレンドを決める係数を有効にします。 各ブレンドスペースには値を取る入力があります。 これらの値は Animation ブループリント (EventGraph 経由) の更新サイクル中に計算され、 ゲームプレイ コードやその他の方法で操作されます (以下の図参照)。これは柔軟性が高く、AnimGraph の作成者は アニメーショがを適切に見えるようにブレンドすることができます。

Input Flow

上の図では、イベントグラフ、ゲームプレイ コード、その他のファクタがそれぞれの変数を操作して、最終ポーズとしてブレンドスペースのどのポーズを使用するかを決めます。

ブレンドスペース

ブレンドスペースは 2D グラフのようなものと捉えることができます。 ひとつの軸に沿った各入力値とグラフの様々な点に描画されているアニメーションがあります。ブレンドされたアニメーションは、現在の入力値で指定される位置に基づき グラフ上のアニメーション間をブレンドすることで計算されます。 例として、プレイヤーの動きの方向と速さに基づいた「方向性のある走りアニメーション」と「待機アニメーション」 を考えます。

アンリアル エンジン 3 では、SpeedBlending ノードと一緒に DirectionalBlending ノードを使用することによってこのブレンドを実行していました。こうした各ノードは、この特定のブレンドを行うためだけにハード コーディングされていました。ブレンドを行うために使われた値は、 コードでは隠されています。そのため、プログラマ以外はブレンドを微調整する修正を加えることはできません。 コード内の値を修正したら、それを使用するすべての AnimTree でノードのあらゆるインスタンスに 影響を与えます。これは理想とは程遠い方法です。

ブレンドスペースを使用すれば、単一のブレンドスペースで同様のブレンドを実行することができます。 プレイヤーの方向 (以下の横方向の黄色いボックス) と速度 (以下の縦方向の黄色いボックス) は、ブレンドスペースに入力として渡される値です。 アニメーション (以下の白のダイヤ) は、こうした入力値に基づき適切にブレンドするようにセットアップされます。その結果、インゲームで見る (以下の緑のダイヤ) 最終ポーズになります。

BlendSpaceDirection.png

以下では、AnimGraph がブレンドを操作するために入力 (この場合、Speed) を調整できるブレンドスペースを実装しています。

AnimGraphBlendSpace.png

プレビューアと同様に、入力値を調整するに従い、ブレンドスペースでのブレンディングが変更、操作されます。

Blend Space 1D

ブレンドスペースは、Blend Space 1D という 1D 形式でも作成できます。ブレンドスペースでは、ポーズやアニメーションをいくつでもブレンドできますが、単一の入力値に基づき、ブレンドしてください。 Blend Space 1D の使用例としては、移動方向を自動的に向くキャラクターが考えられます。 キャラクターが道から外れたり、複数方向に移動できない場合、単一の Speed 値に基づき (以下の例のように)、Blend Space 1D を使って Idle から Walk に、最終的に Run させるようにブレンドすることができます。

2 軸ではなく 1 軸だけを持つ以外は、Blend Space 1D は標準の2 軸のブレンドスペースと全く同じです。