Blend ノード

一連の条件に基づいて複数のアニメーションをブレンドするアニメーション ノードです。

キャラクターの アニメーション ブループリントAnimGraph では、Blend ノード を使用して複数のソース アニメーション ポーズをブレンドし、新しいアニメーション ポーズを作成することができます。

animation pose blending example

各 Blend ノードでは、ノードの ポーズ入力ピン を使用して複数のアニメーション ポーズを入力し、ノードの 出力ポーズピン からアクセス可能なブレンドされたポーズを生成することができます。

input and output pin nodes

一部の Blend ノードは、3 つ以上のアニメーション ポーズを受け入れてブレンドすることができます。こういったノードでは、AnimGraph でノードを 右クリック して、[Add Blend Pin (ブレンド ピンを追加)] を選択すると、ポーズ入力ピンをもう 1 つ追加することができます。

add blend pin to blend nodes

また、削除する特定の入力ピンを 右クリック し、コンテキスト メニューから [Remove Blend Pin (ブレンド ピンを削除)] を選択すると、追加のポーズ入力ピンを削除することもできます。

Blend ノードを使用している場合、ブレンドの度合を アルファ値 でコントロールすることができます。Blend ノードのアルファ値を手動で割り当てるには、変数入力ノードを選択するか、ノードの [Details (詳細)] パネルで Alpha プロパティを選択して値を入力します。また、AnimGraph でアルファ変数ノードをアルファ入力ピンに接続することで、Blend ノードの Alpha を割り当てることもできます。アルファ値が 0 の場合は、通常、プライマリ ポーズが優先され、1 の場合はセカンダリ ポーズが優先されます。

alpha pin on blend nodes

追加のアニメーション データを取り込むことができるより高度な Blend ノードを使用すると、プロジェクトで独自のアニメーション ブレンドを活用した成果物を作成することができます。このドキュメントでは、Unreal Engine でアニメーション ポーズのブレンドに使用できる Blend ノードのリファレンスを提供します。

Blend ノード

タイトル カラーがグレーに分類されている標準の Blend ノードは、ノード固有のパラメータに基づいて、アニメーション ポーズのシンプルなブレンドを実行します。以下は、AnimGraph でアニメーション ポーズをブレンドするためにプロジェクトで使用できる標準の Blend ノードの参照リストです。

Apply Additive

Apply Additive ノードおよび Apply Mesh Space Additive ノードはいずれも、アルファ値に基づいてベースの通常アニメーション ポーズに加算ポーズを追加します。

apply addivite animation blend node apply mesh space additive animation blend mode

ノードの入力ピンを使用して、ベース ポーズと適用する 加算 ポーズを接続することができます。

Apply Additive ノードは、LOD しきい値システムの影響も受けます。Apply AdditiveApply Mesh Space Additive[Details] パネルで、ブレンドが行われる LOD レベルのしきい値を調整することができます。

また、Make Dynamic Additive ノードを使用すると、加算アニメーション ポーズを減算的にブレンドすることができます。このノードを使用すると、ベース ポーズから加算ポーズを減算して出力ポーズを作成することができます。

make dynamic additive animation blend node

Make Dynamic Additive ノードの [Details] パネルでは、このノードを メッシュ空間 で動作するように設定することもできます。

Blend

標準の Blend ノードは、2 つの入力ポーズの単純な組み合わせで、アルファ 入力ピンのアルファ値に基づいて、どちらの入力が優先されるかに関するウェイトを調整します。

blend animation blend node

A 入力ピンと B 入力ピンにアニメーション ポーズを接続して、アルファ ピンでこれらのポーズをブレンドする度合をコントロールすることができます。

Blend Bone by Channel

Blend Bone by Channel ブレンド ノードを使用すると、特定のブレンド トランスフォームを適用する個々のボーンを指定できます。

blend bone by channel animation blend node

Blend Bone by Channel の [Details] パネルで、[(+) 追加] を使用して [Bone Definitions (ボーン定義)] セクションを追加することができます。定義を作成したら、トランスフォーム データを取得するソース ボーンと、ブレンドを適用するターゲット ボーンを定義することができます。また、使用可能なプロパティを切り替えることで、平行移動回転スケール など、ブレンドに取り込みたいトランスフォームの要素を定義することもできます。さらに、ワールド空間コンポーネント空間親ボーン空間ボーン空間 など、どの トランスフォーム空間 でトランスフォーム データを計算するかを定義することができます。

現在のアルファ値が、ブレンドのウェイトをコントロールします。

Blend Multi

Blend Multi ノードを使用すると、アルファ値の範囲内で 3 つ以上のブレンド ポーズをブレンドすることができます。

blend multi animation blend node

Blend Multi の [Details] パネルでは、Additive Node プロパティでノードが加算的に動作するように切り替えることもできます。

関数ブレンド ノード

タイトル カラーが緑に分類される関数ブレンド ノードは、ノード固有のパラメータに基づいて、アニメーション ポーズのより高度な計算ベースのブレンドを実行します。以下は、AnimGraph で複数のアニメーション ポーズをブレンドするためにプロジェクトで使用できる関数ベースのブレンド ノードの参照リストです。

Blend Poses by bool

Blend Poses by bool ノードは、ブール値 をトリガーとして使用して、2 つのポーズを時間に基づいてブレンドします。ブール値が true の場合は、True Pose 入力ピンに接続されているポーズが使用されます。ブール値が false の場合は、False Pose が使用されます。各ポーズには、Blend Time という浮動小数値があります。この値を使用して、そのポーズにブレンドするのにかかる時間をコントロールします。

blend poses by bool animation blend node

[Details] パネルでは、Blend Time ピンの AnimGraph での表示/非表示を切り替えることができます。また、Transition Type を設定できます。

Blend Poses by int

Blend Poses by int ノードは、整数値をキーとして使用して、任意の数のポーズを時間に基づいてブレンドします。入力整数値それぞれに対して、その値の入力ピンに関連付けられたポーズが使用されます。たとえば、整数が 0 に設定されている場合、Blend Pose 0 に接続されているポーズが使用されます。各ポーズには、Blend Time という浮動小数値があります。この値を使用して、そのポーズにブレンドするのにかかる時間をコントロールします。

blend poses by int integer animation blend node

[Details] パネルでは、Blend Time ピンの AnimGraph での表示/非表示を切り替えることができます。また、Transition Type を設定できます。

Blend Poses by Enumeration (Enum)

Blend Poses by Enum ノードは、列挙 (Enum) 値をキーとして使用して、ポーズを時間に基づいてブレンドします。デフォルトのポーズを使用でき、追加のポーズは Active Enum Value ピンを使用して接続された列挙値内で特定される値に追加することができます。また、各ポーズには、Blend Time という浮動小数値があります。この値を使用して、そのポーズにブレンドするのにかかる時間をコントロールします。

blend poses by enum enumeration animation blend node

[Details] パネルでは、Blend Time ピンの AnimGraph での表示/非表示を切り替えることができます。また、Transition Type を設定できます。

Layered blend per bone

Layered blend per bone ノードを使用すると、定義された一連のボーンに基づいて、任意の数の動的ブレンド ポーズをブレンドすることができます。

layered blend per bone animation blend node

Layered blend per bone ノードの [Details] パネルでは、ブレンド モードを [Branch Filter (ブランチ フィルタ)] または [Blend Mask (ブレンド マスク)] として定義することができます。

blend mode in layered blend per bone animation blend node details panel

Mesh Space Rotation Blend および Mesh Space Scale Blend プロパティを有効にして、回転スケール のブレンドが メッシュ空間 で行われるか、ローカル空間 で行われるかをコントロールすることができます。

Curve Blend Options プロパティで、カーブ ブレンド動作を設定リストから設定し、アニメーション レイヤーをどのようにブレンドするかをコントロールすることができます。次は、使用可能な Curve Blend Options のリファレンスです。

curve blend option in layered blend per bone animation blend node details panel

ブレンド オプション

説明

Override

有効なカーブ値を含む最後のポーズに対してポーズをオーバーライドします。

Do Not Override

ポーズをオーバーライドしません。必要な前のポーズにカーブ値がない場合に最適です。

Normalize by Weight

すべてのブレンド ウェイトの 合計 によってポーズのブレンドを正規化します。

Blend by Weight

正規化 しないで ブレンド ウェイトでポーズをブレンドします。

Use Base Pose

すべてのカーブ値で ベース ポーズ を使用します。

Use Min Value

接続されたすべてのポーズから 最も高い カーブ値を選択して、これを使用してブレンドします。

Use Max Value

接続されたすべてのポーズから 最も低い カーブ値を選択して、これを使用してブレンドします。

また、Blend Root Motion Based on Root Bone プロパティを有効にして、ルート モーション のブレンドで ルート ボーン のボーンごとのブレンド ウェイトを組み込むことができます。

Branch Filter

Branch Filter オプションで、ブレンドが影響するボーンの インデックス を定義できます。

layer setup indexes in layered blend per bone animation blend node details panel

要素を Branch Filters プロパティに追加すると、参照ポイントとして使用する ボーン名 としてボーンを入力し、ローカライズされたアニメーションのブレンドをコントロールすることができます。Blend Depth プロパティを使用して、ボーン名 の子ボーンでブレンドのウェイトをコントロールすることができます。

説明

Positive

postive blend depth value

正の Blend Depth 値は、同じ数のボーンでウェイトをオフセットし、ボーン名 のチェーンでウェイトをテーパーします。たとえば、Blend Depth を 2 にすると、ブレンド ウェイト 1 が次の子ボーンに適用され、ブレンド ウェイト 0.5 が ボーン名 に適用されます。

Zero

zero blend depth value

Blend Depth を 0 にすると、ブレンド ウェイト 1 が ボーン名 および接続されたすべての子ボーンに適用されます。

Negative

zero blend depth value

負の Blend Depth 値はすべての ブレンド ポーズ を無効にして ベース ポーズ を優先します。-1 より小さい値は、同じ数のボーンでウェイトをオフセットし、ボーン名 のチェーンで無効になったブレンド ウェイトをテーパーします。たとえば、Blend Depth を -2 にすると、ブレンド ウェイト -1 が次の子ボーンに適用され、ブレンド ウェイト -0.5 が ボーン名 に適用されます。

Blend Mask

Blend Mask オプションで、キャラクターの ブレンド マスク を参照ポイントとして定義して、ベース ポーズブレンド ポーズ 間のブレンドをコントロールすることができます。

blend masks in layered blend per bone animation blend node details panel

Inertialization

慣性ブレンド は、従来のアニメーション クロスフェードに代わる高性能な処理であり、ポストプロセスとして自然な遷移を生み出します。慣性ブレンドを有効にすると、ソース ポーズはまったく評価されなくなります。一方、従来のブレンドでは、遷移中はソース ポーズとターゲット ポーズの両方を評価して、2 つのポーズがブレンドされたポーズを作成します。

inertialization example animations

慣性ブレンドを使用するには、AnimGraph で、慣性的にブレンドさせたいソース アニメーション ブレンドの後に Inertialization ノードや Dead Blending ノードを追加します。各ノードは、異なるメソッドを使用して慣性ブレンドにアプローチします。

inertialization nodes animation blueprint node

Inertialization ノードと Dead Blending ノードはどちらも、慣性ブレンドが有効な場合、ターゲット アニメーションに向けて動作を継続するために、アニメーション ポーズ モーションと アニメーション カーブ 内の変化を追跡します。これらのノードは、ソース 入力ポーズ ピンに接続された任意の 慣性ブレンド リクエスト によって有効になります。ステート マシンの遷移Blend ノードLinked Anim Graph および Linked Anim Layer はいずれも、慣性ブレンドをトリガーできます。 Inertialization ノードまたは Dead Blending ノードは、慣性ブレンド リクエストのソースの後に接続する必要があります。ただし、ソースのすぐ隣に配置する必要はありません。Inertialization ノードまたは Dead Blending ノードを Output Pose ノードのより近くで保持することで、グラフから標準のブレンドが削減または排除され、アニメーション システムのパフォーマンスを向上できます。単一の Inertialization ノードまたは Dead Blending ノードで多数の慣性ブレンド リクエストを処理することができます。複数の慣性ブレンド リクエストを処理する場合、リクエストされた最小のブレンド時間 が使用されます。

Inertialization overview example

AnimGraph に Inertialization リクエストが含まれているものの、Inertialization ノードまたは Dead Blending ノードが配置されていない場合は、[Message Log (メッセージ ログ)] パネルにランタイム エラーが記録されます。

慣性ブレンドを考慮してアニメーションとグラフを作成する際は、出力アニメーションがまだ動いているときに遷移を開始することをお勧めします。慣性ブレンドによってスムーズかつ自然に停止位置へのイージングが処理されるため、ニュートラルなポーズに戻る必要はありません。慣性ブレンドは、ターゲット アニメーションにモーションをイージングする ポストプロセス であるため、短いブレンドが最もよく機能します。慣性ブレンドは別の慣性ブレンドによって中断される場合がありますが、アニメーションの品質が低下する可能性があるため、継続的な中断が発生するシナリオは避けるようにします。

複数の慣性ブレンドを使用する

必要に応じてグラフに複数の Inertialization ノードや Dead Blending ノードを配置することができ、それぞれのノードでソース ポーズからの慣性ブレンド リクエストを処理します。これは、さまざまな空間で慣性ブレンドを実行できることを意味します。たとえば、キャラクターの上半身と下半身を別々に操作する個別の Inertialization ノードまたは Dead Blending ノードを作成し、それらのノードに続けて Layered Blend per bone ノードを作成して上半身と下半身をブレンドして最終ポーズを作成する場合です。

加算慣性ブレンド

ベース ポーズに適用する前に Inertialization ノードや Dead Blending ノードを挿入することで、慣性ブレンドを加算ポーズと一緒に使用することもできます。最終ポーズの準備では通常、IK の前に慣性ブレンドを適用することで、実質的に、IK 空間で慣性ブレンドを行います。

慣性ブレンドが始まると、ソース ポーズの評価が停止します。結果として、ソース アニメーション シーケンス からの アニメーション通知 は慣性ブレンドの開始後はトリガーされません。既存のゲーム ロジックとアニメーション通知を慣性化に対応させるには、リファクタリングが必要な場合があります。

Inertialization ノードと Dead Blending ノード

Unreal Engine で使用できる慣性ブレンドには、Inertialization ノードと Dead Blending ノードの 2 種類があります。

Inertialization ノード

Dead Blending ノード

inertilization animation blueprint node

dead blending aniamtion blueprint node

Inertialization ノードは入力アニメーションと出力アニメーション間のオフセットを記録し、ポーズがポッピングしないようにフェードアウトさせます。

Dead Blending ノードは出力アニメーションの将来のポーズを予測し、それらを入力アニメーションとブレンドします。

このノードは実験的機能のため、この機能に依存するプロジェクトをシッピングすることはお勧めしません。

一般的に、Dead Blending ノードを使用すると、特にポーズに大きな違いのあるアニメーション間を遷移する場合にパフォーマンスが向上する傾向がありますが、動きがぎこちなくなることがあります。また、Inertialization ノードでは無視されるトランジション ブレンド カーブも考慮されます。

Initialization ノードのリファレンス

次の表では、Inertializtion ノードの各プロパティとそれらの機能について説明します。

inertilization node settings

プロパティ

説明

Blend Profile

オプションで、慣性ブレンド リクエストを使用してソース ノードで提供されていない場合に使用されるデフォルトのブレンド プロファイルを設定します。ブレンド プロファイルはドロップダウン メニューを使用して設定できます。

Filtered Curves

慣性ブレンドを使用すべきでないアニメーション カーブのリストを設定します。慣性ブレンド時、これらのカーブは瞬時に変化します。カーブをフィルタリングするには、(+) を使用して新しい配列をプロパティに追加してから、表示される [Index (インデックス)] フィールドにカーブの名前を入力してカーブを設定します。

Dead Blend ノードのリファレンス

次の表では、Dead Blend ノードの各プロパティとそれらの機能について説明します。

このノードは実験的機能のため、この機能に依存するプロジェクトをシッピングすることはお勧めしません。

dead blending node settings

プロパティ

説明

Always Use Default Blend Settings

有効な場合、慣性ブレンド リクエストを提供するソース ノードからの設定ではなく、デフォルトのブレンド設定が使用されます。

Default Blend Duration

慣性ブレンド リクエストを提供するソース ノードでブレンド期間が指定されていない場合や、Always Use Default Blend Settings プロパティが有効な場合に使用する、デフォルトのブレンド期間を設定します。

Default Blend Profile

慣性ブレンド リクエストを提供するソース ノードでブレンド プロファイルが指定されていない場合や、Always Use Default Blend Settings プロパティが有効な場合に使用する、デフォルトのブレンド プロファイルを設定します。ブレンド プロファイルはドロップダウン メニューを使用して設定できます。

Mode

慣性ブレンド リクエストを提供するソース ノードでブレンド モードが指定されていない場合や、Always Use Default Blend Settings プロパティが有効な場合に使用する、デフォルトのブレンド モードを設定します。ブレンド モードはドロップダウン メニューを使用して、提供されるカーブのいずれかを選択して設定できます。

Default Custom Blend Curve

オプションで、慣性ブレンド リクエストを提供するソース ノードでブレンド カーブが指定されていない場合や、Always Use Default Blend Settings プロパティが有効な場合に、ブレンド モードと組み合わせて使用するデフォルトのブレンド カーブを設定します。ブレンド カーブはドロップダウン メニューを使用して、プロジェクトのカーブ アセットを選択して設定できます。

Blend Time Multiplier

慣性ブレンド リクエストから得られる全体のブレンド期間をスケーリングするために使用できるブレンド時間乗数を設定します。

Linearly Interpolate Scales

有効な場合、ボーン スケールは線形補間されます。これはわずかにパフォーマンスが向上し、Unreal Engine の他の部分と整合性が取れますが、視覚的にスケールの変化率がボーン全体のサイズに影響を受けているようなアピアランスになります。

Filtered Curves

慣性ブレンドを使用すべきでないアニメーション カーブのリストを設定します。慣性ブレンド時、これらのカーブは瞬時に変化します。カーブをフィルタリングするには、(+) を使用して新しい配列をプロパティに追加してから、表示される [Index] フィールドにカーブの名前を入力してカーブを設定します。

Filtered Bones

慣性ブレンドを使用すべきでないキャラクターのスケルトンのボーン リストを設定します。慣性ブレンド時、これらのボーンのモーションは瞬時に変化します。ボーンをフィルタリングするには、(+) を使用して新しい配列をプロパティに追加してから、表示される [Index] フィールドでドロップダウン メニューを使用してスケルトン階層からボーンを選択します。

Extrapolation Half Life

アニメーションを外挿するときに使用する減衰の平均半減期を設定します (秒)。減衰の最終半減期を得る場合、この値は移行元のアニメーションを移行先のアニメーションに移行するスピードによりスケーリングされます。

Minimum Extrapolation Half Life

アニメーションを外挿するときに使用する減衰の最小半減期を設定します (秒)。これが使用されるのは、移行元のアニメーションのスピードが非常に小さいか、移行先のアニメーションから離れていく場合です。

Maximum Extrapolation Half Life

アニメーションを外挿するときに使用する減衰の half_life を設定します (秒)。この減衰期間の上限が決まるのは、移行元のアニメーションのスピードが低く、移行先のアニメーションに向かって移行している場合です。

Maximum Translation Velocity

ボーンの平行移動の外挿を可能にする最大速度を設定します (センチメートル/秒)。値を小さくすると、ブレンド中にポーズが崩れるのを防ぐことができますが、値が小さすぎるとブレンドが滑らかでなくなる可能性があります。デフォルト値は 500.0 です。

Maximum Rotation Velocity

ボーンの回転の外挿を可能にする最大速度を設定します (度/秒)。値を小さくすると、ブレンド中にポーズが崩れるのを防ぐことができますが、値が小さすぎるとブレンドが滑らかでなくなる可能性があります。デフォルト値は 360.0 です。

Maximum Scale Velocity

ボーン スケールの外挿を可能にする最大速度を設定します。値を小さくすると、ブレンド中にポーズが崩れるのを防ぐことができますが、値が小さすぎるとブレンドが滑らかでなくなる可能性があります。デフォルト値は 4.0 です。

Maximum Curve Velocity

カーブの外挿を可能にする最大速度を設定します。値を小さくすると、ブレンド中に極端なカーブ値が発生するのを防ぐことができますが、値が小さすぎるとカーブのブレンドが滑らかでなくなる可能性があります。デフォルト値は 100.0 です。

Preallocate Memory

有効にすると、Dead Blending ノードでは、ブレンドがアクティブか非アクティブになるときにメモリを割り当てたり割り当てを解除したりするのではなく、事前にメモリを割り当てます。このプロパティによりパフォーマンスは向上しますが、特にアニメーション グラフ内に一度にすべてが使用されない複数の Dead Blending ノードがある場合は、メモリ使用量が増加します。

Show Extrapolations

有効にすると、Dead Blending ノードは、外挿に一致するポーズを出力します。生成されるアニメーションの外挿がどのように見えるかを表すデバッグ描画がレンダリングされます。

Blend ノードからのリクエスト

慣性化対応ノードの [Details] パネルでは、Transition Type プロパティを Inertialization に設定し、慣性ブレンド リクエストをアクティベートすることができます。慣性ブレンドを使用するには、アニメーション グラフで、Inertialization ノードが慣性ブレンド リクエストを作成するブレンド ノードの後の任意の場所に配置されている必要があります。

inertial blend request from blend node transition type

ステート マシン遷移からのリクエスト

慣性ブレンド リクエストは、ステート マシン の遷移ロジックから行うことができます。遷移ルール[Details] パネルでは、Blend Logic プロパティを Inertialization に設定し、慣性ブレンド リクエストをアクティベートすることができます。

inertial blend request from state machine transition rule

Linked AnimGraph および Layered AnimGraph からのリクエスト

慣性化プロパティは、 アニメーション レイヤー または Linked Anim Graph からも定義することができます。[My Blueprints (マイ ブループリント)] パネルでグラフを選択すると、[Details] パネルにプロパティの [Graph Blending (グラフ ブレンド)] セクションが表示されます。アニメーション レイヤーはブレンド イン またはブレンド アウト を行うことができますが、それには 慣性ブレンド が必要です。Inertialization ノードまたは Dead Blending ノードを、このアニメーション ブループリントにリンクする Linked Anim Layer ノードの後の任意の場所に配置する必要があります。負の値は、ブレンド時間が他の入力または出力アニメーション レイヤーによって決定されることを表します。

inertial blend request from anim layer blend linked anim graph

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル