アニメーション ノード関数 は、関連するロジックを実行するため、更新 サイクルの設定したポイントで、特定の アニメーション ブループリント ノード にバインドできる 関数グラフ です。アニメーション ノード関数を使用すると、参照変数を設定したり、動的な値を決定したり、アニメーションのステートを設定したり、複雑なグラフを整理したりできます。さらに、アニメーション ノード関数を利用することで、グラフの評価の設定されたポイントでのみロジックが実行されます。これにより、アニメーション システムのパフォーマンスが大幅に上昇します。
このドキュメントでは、Unreal Engine でアニメーション ノード関数を使用する方法について説明します。
新規アニメーション ノード関数を作成する
新規アニメーション ノード関数を作成するには、AnimGraph でノードを選択し、そのノードの[Details (詳細)] パネルの [Functions (関数)] セクションに移動します。

プロジェクトでの必要に応じて、利用可能なバインディングに関する新規関数を作成することができます。以下に、利用可能な各関数のリストと説明を示します。
関数 | 説明 |
---|---|
On Initial Update (初回更新時) | エンジンは、アニメーション ブループリント ノードの最初の更新前に、この関数にバインドされているロジックを呼び出します。この関数を使用し、コンポーネントの参照や静的な値など、変更されない定数をノードに設定できます。 |
On Become Relevant (関連性の発生時) | エンジンは、グラフ内でノードに関連性が発生するたびに、この関数のグラフにバインドされているロジックを呼び出します。この関数を使用し、ノードに必要な動的な値を設定することができますが、ノードの評価中は更新されません。 |
On Update (更新時) | エンジンは、ノード更新時のティックごとに、この関数のグラフにバインドされているロジックを呼び出します。この関数を使用し、ノードの更新中に必要な動的な値を設定することができます。On Update の関数バインディングを使用するワークフローの例として、「距離マッチング」のドキュメントを参照してください。 |
AnimGraph の 関連性 という概念は、エンジンがノードを評価しているかどうかを意味します。ブレンド ノード または ステート マシン を使用しているときなど、ノードが評価されない場合、一部のノードが完全に非アクティブになることがあります。これが発生した場合、そのノードに関連性はありません。現時点で Output Pose に関与しているノードのみが関連性があるとみなされます。
この例では、Blend ノードが入力 A に完全にブレンドされているため、Aim Offset ノードは関連性がありません。

ノードの評価サイクルに新しい関数をバインドするタイミングを選択してから、新規関数グラフを作成するためのバインディングのドロップダウン メニューから (+) [Create New Binding (新規バインディングを作成)] オプションを使用します。続いて、関数グラフが[My Blueprint (マイ ブループリント)] パネルに表示され、ここでその関数に名前を付け、関数を開くことができます。

新規アニメーション ノード関数によって、自動的に 入力 ピンが Function ノードに作成され、バインドされたアニメーション ブループリント ノードから関数のグラフにデータをパス スルーするためにこれが使用されます。一部の関数の操作では、これらのピンを使用することが必須となることはありませんが、関数を使用してノードの現在の状態を読み取る場合など、他のロジックでは提供されるデータが必須になることがあります。

入力ピン | 説明 |
---|---|
Context | ノードが、ノードに関連するデータ (デルタ時間、慣性化要求など) を渡すことができます。 |
Node | ノードが、このピンを介してノード自身を渡すことができます。通常、このピンは Convert 関数を使用して特定のノード タイプに変換する必要があります。 |
また、既存の関数をアニメーション ブループリント ノードにバインドすることもできます。ただし、関数が次の要件を満たしている必要があります。
-
関数の Thread Safe プロパティが有効になっている。
-
関数に 2 つの 入力 が含まれている必要がある。最初のものは Anim Update Context Reference 型であり、2 番目のものは Anim Node Reference 型である必要があります。また、これらの入力ではそれぞれ、Pass-by-Reference プロパティが有効になっている必要があります。

アニメーション ブループリント ノードに対して新規関数を作成またはバインドすると、関数が AnimGraph のノードに表示されます。
この例では、キャラクターの回転を取得して、ピッチの値とヨーの値を設定するためのエイム オフセット ロジックは、すべてこの関数内に含まれています。エンジンでは、イベント グラフのティックごとではなく、AnimGraph の Aim Offset ノードの更新中にのみこのロジックが実行され、パフォーマンスのコストが大幅に削減されます。

グラフ内の関数の横にある 虫眼鏡 アイコンを使用すると、関連付けられたアニメーション ブループリント ノードから直接アニメーション ノード関数を開くことができます。
アニメーション ノード関数でのグラフ作成
アニメーション ノード関数でのグラフ作成ロジックは、Unreal Engine のその他の関数グラフと似ています。
プロジェクトのパフォーマンスをさらに高めたい場合は、Property Access など、アニメーション最適化の手法を活用し、アニメーションの更新が実行されるワーカー スレッドにアニメーション ノード関数がエンジンによって確実にオフロードされるようにすることができます。
Sequence Player ノード
アニメーション ノード関数を Sequence Player ノードまたは Sequence Evaluator ノードにバインドする場合、関数内の Sequence Player ノードを使用し、アニメーション ノード関数を使用してアニメーション シーケンスのインターフェースおよび再生を直接行うことができます。これにより、ゲームプレイを行うチームではアニメーション再生がよりコントロールしやすくなります。
以下では、Sequence Player ノードのリストを示し、それらの機能について説明します。
名前 | 画像 | 説明 |
---|---|---|
![]() |
Set Sequence (エバリュエーター ライブラリ) | 現在のアニメーション シーケンスが、接続されている Sequence Evaluator ノードによって再生されるように設定します。 |
![]() |
Set Sequence (プレイヤー ライブラリ) | 現在のアニメーション シーケンスが、接続されている Sequence Player ノードによって再生されるように設定します。 |
![]() |
Set Sequence with Inertial Blending (エバリュエーター ライブラリ) | 現在のアニメーション シーケンスが、指定した期間の慣性式ブレンド を使用し、接続されている Sequence Evaluator ノードによって再生されるように設定します。 |
![]() |
Set Sequence with Interior Blending (プレイヤー ライブラリ) | 現在のアニメーション シーケンスが、指定した期間の 慣性式ブレンド を使用し、接続されている Sequence Player ノードによって再生されるように設定します。 |
![]() |
Set Explicit Time (エバリュエーター ライブラリ) | 接続されている Sequence Evaluator ノードの現在の累積時間を設定します。 |
アニメーション関数で Sequence Player ノードを作成し、グラフに追加したら Convert ノードを使用し、そのプレイヤーのノードに適切なデータを提供する必要があります。
Convert to Sequence Player ノードおよび Evaluator ノード
Convert ノードを使用すると、アニメーション ブループリント関数を使用してアニメーションを再生するために、コンテキストの Sequence Player ノードおよび Evaluator ノードからアニメーション ノード関数にデータをパス スルーすることができます。
Sequence Player ノードをアニメーション ノード関数グラフに追加したら、関数のノードの Node ピンから Convert ノードを追加し、その出力をプレイヤーのノードの Sequence Player 入力または Sequence Evaluator 入力に接続します。

アニメーション ノード関数を Sequence Evaluator ノードまたは Player ノードに直接作成する場合、ピュア関数である Convert nodes (緑色) を使用できます。

たとえばステート マシンなど、異なるノード タイプでアニメーション ノード関数を作成する場合は、関数 convert nodes (青色) を使用し、ノードを適切に Sequence Player または Evaluator へと変換する必要があります。

ステート マシン
State Machine ノードでアニメーション ブループリント関数ノードを作成し、それらを使用し、ステート マシンの Animation State を設定できます。たとえば、On Update 関数を Set State ノードで使用し、トランジション ロジックを設定することなく Animation State Machine State を設定できます。
Set State ノード
Set State ノードを使用すると、トランジション ロジックを設定することなく、アニメーション ノード関数を使用してアニメーション ステートを直接設定できます。以下では、Set State ノードのプロパティのリストを示し、それらの機能について説明します。

プロパティ | 説明 |
---|---|
Update Context | 関数のノードの Context ピンを接続し、Set State ノードに操作に必要なデルタ時間などのコンテキスト、および現在の AnimGraph 内での場所を提供します。 |
Node | Set State ノードにノード参照を設定し、バインディング、再生レート、および現在の再生時間を使用します。 このノードは、必ず Convert to Animation State Machine ノードに接続し、関数グラフからステート マシンを適切に設定してください。 ステート マシン ノードに直接関数がバインドされている場合、ピュア関数の Convert to Animation State Machine ノード (緑色) を使用できます。 ![]() ノードがステート マシン ノードに直接接続されていない場合、Convert to Animation State Machine 関数ノード (青色) を使用する必要があります。 ![]() |
Target State | このノードがアクティブになった場合にエンジンが再生するステートを設定します。動的な値を使用してこのピンをバインドするか、またはノード上のフィールドを使用してステートの名前を入力します。 |
Duration | Current State から Target State までのトランジション ブレンドの期間を設定します。値が 0.0 の場合は、すぐにトランジションが発生します。一方で、値を大きくすると、低速なトランジションになります。 |
Blend Type | ステート間のアニメーションのトランジションにノードが使用するブレンドのタイプを設定します。 次のオプションから選択できます。
|
Blend Profile | ブレンドに適用するブレンド プロファイルを設定します。 |
Alpha Blend Option | アルファ ブレンド オプションを設定し、アニメーション ブレンドをカスタマイズします。 |
Custom Blend Curve | ブレンド カーブとして使用されるカーブ アセットを設定します。 |
Get State ノード
Get State ノードを使用すると、現在アクティブなアニメーション ステートを判断できます。以下では、Get State ノードの入力ピンおよび出力ピンのリストを示し、それらの機能について説明します。

ピン | 説明 |
---|---|
Update Context | Function ノードの Context ピンを使用し、グラフ内に Get State ノードのコンテキストを設定します。このピンは、デルタ時間や AnimGraph 内での現在の場所などの情報を転送します。 |
Node | Set State ノードにノード参照を設定し、バインディング、再生レート、および現在の再生時間を使用します。 |
Return Value | 現在のアニメーション ステートの名前を文字列値として返します。 |
Is State Blending In ノードおよび Is State Blending Out ノード
Is State Blending In または Is State Blending Out ノードを使用し、ブレンド動作を駆動するためのロジックを構築するために、現在のアニメーション ステートではブレンド インが行われているのかブレンド アウトが行われているのかを判定できます。以下では、Is State Blending In ノードまたは Is State Blending Out ノードのピンのリストを示し、それらの機能について説明します。

ピン | 説明 |
---|---|
Update Context | Function ノードの Context ピンを使用し、グラフ内に Get State ノードのコンテキストを設定します。このピンは、デルタ時間や AnimGraph 内での現在の場所などの情報を転送します。 |
Node | Set State ノードにノード参照を設定し、バインディング、再生レート、および現在の再生時間を使用します。 |
Return Value | ステートがブレンド イン か アウト かを示すブールを返します。 |
Is State Blending In ノードまたは Is State Blending Out ノードを使用する場合は、Convert to Animation State ノードを使用し、適切なノードのコンテキスト データを提供する必要があります。Animation State 出力ノードで関数を更新する場合は、ピュア関数の Convert to Animation State ノード (緑色) を、その他のすべての該当するインスタンスには Convert to Animation State 関数ノード (青色) を使用できます。

関数をステートにバインドする
アニメーション ノード関数は、アニメーション ステートにバインドすることもできます。ただし、関数グラフは、ステートの AnimGraph の Output ノードにのみバインドできます。

追加リソース
アニメーション ノード関数の利用方法の詳細については、Lyra サンプル プロジェクトを参照してください。
アニメーション ノード関数を設定するワークフロー例については、距離マッチングのドキュメントを参照してください。