Unreal Engine Learning Road:高度なアニメーションモジュールのアニメーション化された融合



Unreal Engine Learning Road



元のリンク: https://blog.uwa4d.com/archives/2178.html

UWAは先週紹介されました Unreal4エンジンアニメーションモジュールの基本機能 次に、Unreal4エンジンアニメーションモジュールで提供される高度な機能をさらに紹介します。 それらの中には、アニメーションフュージョン、アニメーションリダイレクト、インバースキネマティクス、頂点アニメーションがあります。 。スペースの都合上、本日はまずアニメーションフュージョンについて説明します。



この記事のUnrealEngine関連のコンテンツを確認し、UWAチームのエンジン学習への道をサポートしてくれたUnrealChinaチームに特に感謝します。


アニメーションフュージョン

アニメーションの融合は、ゲームエンジンのアニメーションモジュールの重要な機能です。 このセクションでは、ブレンドノード、ブレンドスペース、アニメーションモンタージュ、アニメーションコンポジット、ポストプロセスアニメーションブループリントなど、Unreal4エンジンで使用できるアニメーションフュージョン機能を紹介します。



1、ブレンドノード
Unreal4エンジンのAnimGraphは、UnityエンジンのBlend Tree機能と同様に、さまざまなアニメーションブレンディング機能用の一連のBlendノードを提供します。 ブレンドノードへの入力は、次の図に示すように、さまざまなアニメーションファイルからのポーズデータと、ウェイトパラメータに基づいて最終的な融合ポーズを計算するアルファウェイトパラメータです。

9378586-322c61a22e20ed14.png

その中で、AとBは2つの入力ポーズであり、Alphaの浮動小数点数は[0、1]はAとBの重みを表します。Alphaが0の場合、出力ポーズはすべてAからのものです。Alphaが1の場合出力ポーズはすべてBからのものです。アルファが0から1の間の場合、出力ポーズはAとBの融合結果です。同様の機能を持つノードは、Additiveの適用、BlendMultiなどです。

時間ベースのブレンドタイプノードを使用して、2つ以上のアニメーションを結合し、アニメーションが切り替えられたときにブレンドすることができます。ブールノードごとのブレンドポーズは、入力されたブール値(赤いボックスのアクティブ値)に応じてTruePoseとFalsePoseの切り替えを制御し、2つのポーズの融合時間をそれぞれ設定できます(青いボックスに表示)。 )。これは、次の図に示すように、それぞれTruePoseへの切り替えの融合時間とFalsePoseへの切り替えの融合時間を表します。



9378586-0e84bec208c9824a.png

同様の機能を持つノードは次のとおりです。複数のアニメーション化されたポーズの融合の切り替えをサポートするintによるブレンドポーズ。

ボーンノードごとのレイヤードブレンドは、複数のアニメーションの異なるボーンを融合できます。たとえば、ロコモーションの下半分と射撃、および近接攻撃の上部を組み合わせて、射撃しながら歩くアクションを実現できます。このノードは、アニメーションモンタージュスロットで使用する必要があります。この記事は、アニメーションモンタージュのセクションで紹介されます。

2、ブレンドスペース
Blend Spaceは、Unreal4エンジンアニメーションモジュールに複雑なアニメーション融合機能を実装するためのリソースです。最大2つの制御パラメーターを提供し、アニメーション化されたサンプルポイントを2D平面に配置することにより、複数のアニメーションのブレンドをサポートします。変数が2次元平面内の座標位置をとる場合、Blend Spaceは、サンプリングポイントでのアニメーションと座標補間に基づいて、現在の座標のアニメーションを計算します。次の図は、1Dおよび2Dブレンドスペースの図を示しています。

9378586-40f37cd5b9a1d3e6.png

その中で、左の写真は1Dブレンドスペースで、パラメータSpeedが含まれています。右の写真は、速度とヨーの2つのパラメーターを持つ2Dブレンドスペースです。

ブレンドスペースの作成は、他のリソース作成プロセスと同様です。 [新規追加]ボタンをクリックするか、コンテンツブラウザを右クリックして、ポップアップメニューから[スペースのブレンド]を選択します。ブレンドスペースリソースは1Dと2Dに分割され、1つと2つの制御パラメーターのアニメーションブレンドをサポートします。ブレンドスペースリソースを作成したら、次に示すように、ダブルクリックして編集インターフェイスを開きます。

9378586-4b325e639e6d0898.png

上記の例では、1Dブレンドスペースを使用しています。これは、速度パラメーターに従って、アイドル、ウォーク、および実行アニメーションのサンプリング融合効果を実装します。その中で、エリア1はリソースのパラメータ設定を示し、エリア2は制御パラメータ軸とアニメーションサンプルポイントを示し、エリア3はアニメーションファイルリストを示します。通常、ブレンドスペースを使用する場合は、以下に示すように軸を設定する必要があります。

9378586-2501b296f05b03a2.png

その中で、[補間タイプ]オプションでアニメーション補間の計算方法を設定できます。デフォルト設定は平均補間です。

軸を設定して、サンプルアニメーションをリージョン3アニメーションリストからゾーン2にドラッグします。上記の例では、アイドル、ウォーク、および実行の3つのアニメーションサンプルポイントが設定されています。ゾーン1では、以下に示すようにそのパラメーター設定を表示できます。

9378586-23985bb9128e7ffe.png

上の図のパラメーター設定は、アイドルアニメーションの速度が0、ウォークアニメーションの速度が93.75、実行アニメーションの速度が375.0であることを示しています。サンプリングされたアニメーション分布は、以下に示すようにエリア3で表示できます。

9378586-fcb6cee2b64e2c17.png

その中で、3つの白いひし形の点は、速度軸上の3つのサンプリングされたアニメーションの位置を示し、青いひし形の点は、現在の速度値を示します。再生アニメーションをクリックし、青いひし形のポイントをドラッグして速度軸上を移動すると、さまざまなアニメーション補間結果が表示されます。上記の例は、1Dブレンドスペースです。 2Dブレンドスペースには1Dよりも多くの縦座標があり、1Dと同様の方法で使用されます。

ブレンドスペースリソースを設定すると、下の赤いボックスに示すように、ノードとしてアニメーションブループリントのアニメーショングラフにドラッグできます。

9378586-78f86d4b2a5aed95.png

3、アニメーション編集
Unreal4エンジンのAnimationMontageは、用途の広いアニメーション編集ツールです。複数のアニメーションを接続でき、カスタムセグメンテーションアニメーションセグメント、ループ再生、任意のジャンプ、およびレイヤードアニメーションでさまざまなボーンを使用してさまざまなアニメーションを再生する機能をサポートします。通常のアニメーションシーケンスと同様に、通知とカーブの編集をサポートします。同時に、AnimationMontageは再利用もサポートしています。このセクションでは、上記の機能と使用方法について説明します。

アニメーションモンタージュは、他のリソースと同じ方法で作成されます。次の図に示すように、コンテンツブラウザをダブルクリックして編集インターフェイスを開きます。

9378586-c5324da6c94f1284.png

その中で、エリア1はリソースのパラメータ設定を示し、エリア2はアニメーションモンタージュのタイムライン関連の設定を示し、エリア3はリソースリストとスロット情報を示します。

-カスタムセグメンテーションアニメーション
アニメーションモンタージュの重要な概念はスロットとセクションです。スロットはコンテナに似ており、複数のアニメーションファイルを保存し、時系列に並べることができます。順序は、スロットのタイムラインをドラッグすることで設定できます。スロットの管理はグループ化をサポートします。以下に示すように、各グループには複数のスロットを含めることができます。

9378586-c61eca32033d70dd.png

上の図は、スロットのタイムラインを示しています。スロット名はJumpで、デフォルトグループに属し、ThirdPersonJump_Start、ThirdPersonJump_Loop、ThirdPersonJump_Endの3つのアニメーションが含まれています。エリア3のアニメーションファイルのリストから、さらにアニメーションファイルをスロットに追加できます。

セクションは、スロット全体を分割するセグメントです。主な機能は、開発者が各セグメントを編集してさまざまな効果を実現できるようにすることです。デフォルトでは、スロットには1つのセクションしかありません。新しいセクションを作成することにより、スロットを複数のセクションに分割できます。次の図に示すように、分割位置はセクションのタイムラインをドラッグすることで設定できます。

9378586-3ec45cce91bfcbc9.png

上の画像は、セクションのタイムラインを示しています。このタイムラインには、開始、ループ、終了の3つのセクションが含まれており、開始位置は緑色の垂直線です。新しいセクションの追加は、コンテキストメニューから作成できます。

セクショントラックにセクションを追加し、配置を再組み立てすることで、新しいアニメーションシーケンスを生成できます。次の図に示すように、新しく生成されたアニメーションシーケンスは、アニメーションモンタージュの出力です。

9378586-2ff69f1370264585.png

セクショントラックは上の赤いボックスに表示され、開始、ループ、終了が順番にアニメーションシーケンスに接続されています。

-ブランチ通知
同時に、アニメーションモンタージュには、通常のアニメーションシーケンスと同じ通知とカーブの設定もあります。また、AnimationMontageには新しい通知-ブランチ通知があります。以下に示すように、アニメーションの再生中にいつでも任意のセクションにジャンプすることができます。

9378586-88fcb3678928dfed.png

上の画像は、アニメーションモンタージュの通知とカーブのタイムラインを示しています。これは、アニメーションシーケンスと同じ機能と編集方法です。その中で、Element Timingのタイムラインには、現在のすべての通知とセクションの開始位置の視覚化情報が表示されます。たとえば、上の図の緑色のボックス0、1、および3は、それぞれアニメーションの開始、ループ、および終了アニメーションの開始位置を表し、青色のボックス2はTestNotifyイベントの開始位置を示します。ボックス内のシリアル番号は、イベントトリガーのタイミングを示しており、表示しながら編集するのに便利です。次の図に示すように、図のアニメーションモンタージュのブランチ通知イベント応答ロジックは、アニメーションブループリントのイベントグラフに実装できます。

9378586-c8ef7e7d96a1de8a.png

上の赤​​いボックスは、イベントグラフにMontage Set NextSectionノードを追加してBranchNotifyを実装するプロセスを示しています。トリガーイベントはTestNotifyです。これは、アニメーションモンタージュの通知タイムラインに追加されたイベントです。イベントがトリガーされると、Montage Set Next Sectionノードがループセクションからエンドセクションにジャンプし、セクションジャンプ機能が実装されます。 Section Jumpを使用すると、より豊富なアニメーションロジックを実装できます。

-ループセクション
さらに、Sectionは、次の図に示すように、ループ再生を繰り返す機能をサポートしています。

9378586-b61b3eadff539dad.png

上の図では、ループセクションが青灰色(赤で表示)に変わり、ループに設定されていることを示しています。この機能は、ハミングスキルを作成するために使用できます。セクション内の歌唱数は、ハミング時間に応じて決定できます。歌が終わったら、スキルを振った後、BranchNotifyを使用してセクションにジャンプできます。

アニメーションモンタージュの再生では、次に示すように、アニメーショングラフのスロットノードを使用して、再生するスロットを指定できます。

9378586-9d7f9d67018a0d42.png

その中で、スロットノードの入力はアニメーションステートマシンのポーズデータであり、出力はキャラクターの最終ポーズです。次に、以下に示すように、MontagePlayノードを使用してイベントグラフで再生します。

9378586-afb030f3323b260f.png

Montage Playノードは、再生する必要のあるAnimation Montageリソースの名前を設定し、ゲームのロジックに従って対応するプロセスに接続できます。

-レイヤードアニメーション
レイヤードアニメーションを使用したアニメーションモンタージュを使用すると、さまざまなボーンでさまざまなアニメーションを再生できます。たとえば、上半身のボーンは攻撃アニメーションを再生し、下半身のボーンはウォーキングまたはスクワットアニメーションを再生します。この関数は、次の図に示すように、アニメーションモンタージュでボーンノードごとのレイヤードブレンドを使用してアニメーショングラフに実装できます。

9378586-fe909b4702090710.png

上のノードグラフの赤いボックスは、ポーズのキャッシュ情報が取得されていることを示しています。これは、主に青いボックスと赤いボックスの操作に使用されます。青いボックスはキャッシュポーズを直接インデックス付けし、赤いボックスはUpperBodyを介したキャッシュポーズを示します。アニメーションモンタージュ操作は、新しいポーズを出力し、新しいポーズを混合ノードにインデックス付けします。最後に、ノードをマージすることにより、最終的なアクション融合効果を計算できます。次の図に示すように、ボーンレイヤーは、ボーンノードごとのレイヤードブレンドのプロパティで設定できます。

9378586-22b2c4ef5ea0d56f.png

上記の設定により、アニメーションモンタージュの出力モンテがspine_01ボーンとその子ノードに融合されます。これにより、キャラクターの上半身のアニメーションでアニメーションモンタージュを再生し、下半身でロコモーションステートマシンのアニメーションを再生できます。

一般的な観点から、上記の機能はUnityエンジンのMecanimアニメーションシステムのレイヤーアニメーションブレンディング機能に似ています。微妙な観点からは、ボーンごとのレイヤードブレンド関数は、Unityエンジンのレイヤーアニメーションブレンド関数に似ています。効果、誰もが感謝することができます:)

-アニメーションモンタージュの再利用
Unreal 4エンジンは、アニメーションモンタージュの再利用を提供します。構成済みのアニメーションモンタージュの場合、子アニメーションモンタージュを作成することで、親クラスのすべての設定を継承できます。子アニメーションモンタージュでは、次の図に示すように、スロット内のアニメーションを除いて、他の設定を変更することはできません。

9378586-548b584e0cc372d2.png

その中で、スロットのタイムラインの黄色の部分(赤いボックス)は置き換えられたアニメーションを表し、緑色は親クラスから継承したアニメーションを表します。上の画像からわかるように、他の設定オプションはグレー表示されており、編集できません。

4、アニメーションコンポジット
Unreal4エンジンのAnimationCompositeは、複数のアニメーションを1つのアニメーションに接続する機能を提供し、通常のアニメーションと同じ通知およびカーブ機能をサポートします。他のリソースと同じ方法で作成されます。以下に示すように、コンテンツブラウザをダブルクリックしてエディタを開きます。

9378586-6d012bfecc4d3359.png

アニメーションコンポジット編集インターフェイスは、アニメーションモンタージュに似ています。上の画像の赤い領域は、コンポジット、通知、およびカーブのタイムラインを示しています。動作する方法は、右側のリストからタイムラインにアニメーションをドラッグするだけです。その再生モードは、以下に示すように、AnimGraphの通常のアニメーションと同じです。

9378586-7f425bbb14e50fae.png

Animation Compositeの機能は、複数のアニメーションを1つのアニメーションに結合するAnimationMontageに似ています。ただし、Animation Compositeは、単純なステッチとNotifyおよびCurveの機能のみを提供し、AnimationMontageはより複雑なセクションループとジャンプを提供します。 Animation Compositeは、Animation Montageよりも使いやすく、アニメーションシーケンスとして直接使用できます。アニメーションモンタージュでは、スロットなどの情報も指定する必要があります。

5、後処理アニメーションの青写真
Unreal4エンジンのSkeletalMeshリソースパラメータには、2つのアニメーションブループリントを同時に実行する機能をキャラクターに提供する後処理アニメーションブループリントがあります。通常、ロールのアニメーションブループリントは、次の図に示すように、キャラクターブループリントの骨格メッシュコンポーネントのアニメーションクラスパラメーターで設定できます。

9378586-44775bc91f089e51.png

後処理アニメーションブループリントは、メインのアニメーションブループリントを置き換えるだけでなく、さらに重要なことに、開発者が関連するスケルタルアニメーション情報にアクセスして変更できるようにします。 Unityエンジンでは、LateUpdateでスケルタルアニメーション情報にアクセスして変更できますが、Unreal 4エンジンでは、Post Process AnimationBlueprintを介して処理されます。

同様に、Unreal 4エンジンは、AnimDynamicの簡易バージョンに似たUnity AssetStoreのDynamicBoneのように機能するキャラクターベースの物理アニメーションを実装するために使用するAnimDynamic機能を提供します。

AnimDynamicノードは、髪の毛、ネックレス、衣服など、キャラクター上のオブジェクトのラグドールのようなアニメーションをサポートします。この効果により、外力が加わったオブジェクトをよりリアルにシミュレートして、キャラクターが動いたときにぐらつきを発生させることができます。 AnimDynamicの基本的な実装は、物理的な衝突を計算しません。代わりに、次の図に示すように、小さなボックスを使用してオブジェクトの形状を概算し、次に正方形のボックスの動きの角度範囲を制限することにより、物理的な衝突によって生成される自然なスイングを概算します。

9378586-b67598028c30cd72.png

非現実的な公式ウェブサイト 【1】 AnimDynamicとPostProcess Animation Blueprintを使用してモンスターのネックレスをアニメーション化するチュートリアルが表示され、興味のある読者が読むことができます。


参照

【1】 https://docs.unrealengine.com/latest/INT/Engine/Animation/AnimHowTo/AnimDynamics/index.html


上記は、Unreal4エンジンアニメーションモジュールのアニメーションフュージョンの概要です。以上により、アンリアルエンジンのアニメーションモジュールを明確に理解していただければ幸いです。来週、UWAは、アニメーションモジュールでアニメーションリダイレクトやインバースキネマティクスなどの高度な機能を提供します。ようこそ!


非現実的な関連技術文書のリンク

1、 Unreal Engine学習のパス:レンダリングモジュールの照明システム

二 、 Unreal Engine学習のパス:レンダリングモジュールのマテリアルシステム

3、 Unreal Engineの学習パス:カメラ画像の後処理

4、 Unreal Engine Learning Path:レンダリングモジュールのグローバルライトイルミネーション

5、 Unreal Engine Learningへの道:アニメーションモジュールの基礎

6、 Unreal Engine Learning Road:高度なアニメーションモジュールのアニメーション化された融合