Choose your operating system:
Windows
macOS
Linux
AnimGraph を使用して、現在のフレームに対するスケルタルメッシュの最終ポーズを評価します。デフォルトでは 各 Animation ブループリントには、AnimGraph があり、その中には アニメーション シーケンスのサンプリング、アニメーションのブレンド、 または SkeletalControl を使用したボーンのトランスフォームを制御する Animation ノード が配置されています。 結果として得られたポーズは、スケルタルメッシュの各フレームに適用されます。
AnimGraph 内では、コードなど EventGraph などで計算した値を使用可能です。 これらをブレンドスペースや他のブレンド ノードへの入力値として使うことができます。もちろん、特別なブレンド処理をせずに、 直接アニメーション シーケンスをサンプリングすることも可能です。AnimGraph では、SkeletalControl を使って ボーンの位置、回転、スケールを直接修正することができます。
実行フロー
すべてのグラフには実行フローがあります。グラフのノードの実行ピンの間に、脈動するパルスリンクとして表示されます。ブループリントの EventGraph などの通常のグラフでは、このフローはイベントの発行に依存しているので 再生中に表示されます。AnimGraph の場合は、 イベントベースではなくフレームごとに評価されるので、常に実行フローを表示するいう点で異なります。
AnimGraph では、実行フローは 1 つのノードから他のノードへポーズが渡されていることを表します。ただし ブレンド など、 複数のインプットを持ち、実行フローに現在関係している入力を内部で判断するノードもあります。こうした判断は通常、データピンへ渡された値など、 外部の入力に依存します。
以下のサンプルでは、上図と同じ Blend ノードが Alpha ピンの値に応じて 入力間で実行フローを切り替えています (値は手動で設定しています)。
AnimGraph の操作
AnimGraph はノードグラフを評価することにより機能します。1 つ以上の入力ポーズに対して特定の操作を実行するノードもあれば、 アニメーション シーケンス、ブレンドスペース、Anim Montage などの他のタイプのアセットにアクセス またはこれらをサンプリングするために使用されるものもあります。独自のグラフ ネットワークを持つステートマシンは AnimGraph 内に存在可能であり、複数のステートマシンを合わせてブレンドして最終的な出力ポーズを作ることができます。 AnimGraph 内でどのように機能するかの情報については以下の各リンクをご覧ください。
-
アニメーションのブレンド - 様々なブレンド ノードを使って行います。
-
アニメーション ノード - ブレンド、ボーンの直接操作などの入力ポーズを操作するために使用します。
-
アニメーション シーケンス - AnimGraph 内に直接配置して Final Animation Pose を操作します。
-
ブレンドスペース - AnimGraph 内で変数に基づきポーズをブレンドするために使用することができます。
-
スケルタル制御 - スケルトン内のボーンを直接操作するために使用できるノードです。
-
空間の変換 - ポーズがローカル空間に存在するか、コンポーネント空間に存在するかを変更できるノードです。
-
ステートマシン - キャラクターのアニメーション ステートを決める一連のグラフ、ルール、変数です。
-
Sync Groups は、異なる長さを持つ関連アニメーションを同期し続けます。
スレッド セーフティ
AnimGraph のロジックは、[Class Defaults] にある [Use Multi-Threaded Animation Update] 設定を使ってワーカースレッドで実行することができます。これは、 マルチコア マシン上のゲームのパフォーマンスを大幅に向上させます。他の更新と平行してアニメーションの作業を完了させることが できるからです。
この設定が有効な場合 (デフォルトで有効)、AnimGraphで安全でないオペレーションが行われればコンパイラが警告します。一般的に 以下が安全なオペレーションです。
-
ほとんどの AnimGraph ノードの使用
-
Animation ブループリントのメンバー変数への直接アクセス (構造体のメンバーを含む)
-
ステートを修正しないブループリントの純粋関数の呼び出し (ほとんどの数学関数など)