Lyra アニメーションを UE5 ゲームに適応する方法について

アニメーション ゲームプレイ プログラマー、Jose Villarroel
こんにちは、Epic Games のアニメーション ゲームプレイ プログラマー、Jose Villarroel です。新しい無料サンプル プロジェクトである Lyra Starter Game のアニメーション システムでは、Unreal Engine 5 でゲームを構築する方法の現状について、みなさん独自のプロジェクトに拡張できる方法で紹介しています (サンプル プロジェクトは こちらから ダウンロードしてください)。このブログ記事では、フォートナイトおよび Paragon からアイディアを得た、The Matrix Awakens:An Unreal Engine 5 Experience に登場したキャラクターと同じような射撃キャラクターを、移動方向を向くキャラクターに変更するために必要な考え方とツールについて説明します。
 
射撃アニメーション
移動方向を向くアニメーション

これから変更するそれぞれの要素についての詳細や、これから説明するアニメーション ブループリントについての詳細は、「Lyra のアニメーション」を参照してください。

アニメーションを置き換える

新しい移動スタイルを実装するには、さまざまなアニメーションが必要になります。ご自身で作成されても構いませんが、簡単に済ませるために移動アニメーション セットを新しい City Sample から 移行 します。
注記:デフォルトの移行設定には、アニメーション通知で使用されるサウンドなど、不要な追加アセットが数多く含まれています。これらのチェックを外すこともできますが、参照先を手動で置き換える必要があります。
CitySample のプレイヤー キャラクターには、方向性のあるスタートなど、移動方向を向くセットに不足しているものの多くが用意されています。
 

City Sample のアニメーション アセットは、別の スケルトン アセット と親子関係になるため、あるスケルトンから別のスケルトンにリターゲティングする必要があります。幸い、それらは部分的に同じ階層を持っているため (持っていない場合は 代わりに IK リグのリターゲティング を使用することができます)、UE5 の新機能である互換スケルトンを使用することができます。SK_Mannequin を開いて、その互換スケルトンに SK_Base を追加しましょう。
次に、新しい Linked Layer Animation ブループリント ベース を作成します。これは移動方向を向くバージョンでの AnimGraph の差に対応するものです。ABP_ItemAnimLayersBase を複製しましょう (この名前を「ABP_ForwardFacing」とします)。簡単にするため、[Class Defaults (クラスのデフォルト)] のアニメーション アセット参照に ABP_UnarmedAnimLayers の非武装セットにあるアニメーション アセット参照を適用し、[Class Defaults] の下にある ABP_ForwardFacing の AnimSet - Starts/Stops/Jog を CitySample のものと置き換えます。
Lyra では 距離マッチング を使用しているため、新しいジョグ サイクル、開始、および停止すべてに 距離カーブ も追加します。これは、アニメーションごとに距離カーブの アニメーション モディファイア を追加することによって行います。また、コンテンツ ブラウザ > 右クリック > [Animation Modifiers (アニメーション モディファイア)] > [Add Modifiers (モディファイアを追加)] にあるアニメーション シーケンスをすべて選択することにより、一括で行うことができます。
距離カーブ モディファイアおよび生成された距離カーブ。

キャラクター ブループリントを適応する

Lyra のシューター ゲーム モードのキャラクターは、常にプレイヤーが照準を合わせている場所を見ています。これは移動方向を向くキャラクターにとって理想的ではないため、B_Hero_ShooterMannequin を確認し、Character Movement 設定をいくつか変更します。Character Movement コンポーネントの [Orient Rotation To Movement (移動方向に回転する)] を有効にし、[Character Defaults (キャラクターのデフォルト)] の [Use Controller Rotation Yaw (コントローラーのヨー回転を使用する)] を無効にしましょう。

これから新しい移動方向を向くアニメーション ブループリントをリンクする必要がありますが、特定のインベントリ アイテムに関連付けられていないため、デフォルトの動作をオーバーライドするために小さな調整をいくつか行います。インベントリ アイテムが追加されることを防ぎ、デフォルトでレイヤーをリンクします。
B_Hero_ShooterMannequin > [Event Graph (イベント グラフ)]。必要な変更は緑色で強調表示されています。
見やすいように、ABP_Mannequin_Base にデバッグ ビジュアライゼーションを追加しましょう。
アクタの前方に黒い矢印を、メッシュのルート ボーンの前方に赤い矢印を描画します。
それでは再生して確認しましょう。
 

向きを変更する際の見栄えが良くありませんね。キャラクターの回転が速すぎるため、足が大きくスライドしています。また、ときどきスナップが発生し、アニメーションの再生レートも速すぎます。個別に対処すべき問題は 3 つ、再生レート、スナップ、回転速度です。

まずは再生レートを修正しましょう。ジョグ開始アニメーションには距離マッチングを使用しています。再生レートはディスプレイスメントに比例し、このキャラクターは非常に高速で動いています。Lyra では、再生レートと ストライド ワープ を組み合わせて使用します。これにより、アニメーションとゲームプレイの差を考慮して、キャラクターのポーズを動的に調整することができます。距離マッチングが大きくなると再生レートが非常に高くなる場合があり、ストライド ワープが大きすぎるとキャラクターのポーズが広がりすぎる可能性があります。そのため、足をスライドさせることはそれほど珍しいことではありません。これを調整することはできますが、再生レート / ストライド ワープの調整に対する業界標準は、最大で 15 ~ 20% の増減幅です。これを超える値にするとビジュアル品質が大きく低下することになるため、足をスライドさせる方が良いとされる場合が多いでしょう。それでは、最大の品質を目指して Character Movement コンポーネントの速度と加速を下げ、より管理しやすいものにします。どのように表示されるか確認してみましょう。
 

アニメーション デバッグ

再生レートは確実に良くなり、スナップもほぼ消えました。代わりに、開始アニメーションがほぼ再生されていないようです。次はそれに取り組みましょう。これには、新しい Rewind Debugger を使用するのが良さそうです。
 

Rewind Debugger には ABP_Mannequin_Base が示され、前後に移動させると ステート マシン の Start (開始) 状態が早く遷移しすぎていることが強調表示されます。さらに詳しく調べると、この遷移規則は速度の方向、およびキャラクターの向き、そして Root Yaw Offset の差異に基づいて中断される可能性があります (「Lyra のアニメーション」の「所定の位置での旋回」セクションを参照してください)。
移動方向を向くモードで何かを無効にしたい場合に、このブループリント ロジックを使用します。
これは射撃キャラクターについては意味がありますが、移動方向を向くキャラクターにはあまり意味がありません。プロパティ アクセス を使用すると、それらの遷移をブロックするために必要な Character Movement コンポーネントの関連プロパティをとても簡単に取得することができます。この機会に、他の不要なものも削除します。

移動方向に向いている間、余計なものは必要ありません。Aim Offset も同様に無効にしています。
ABP_Mannequin_Base > LocomotionSM > Start
Orientation Warping は、下半身の向きを調整してアニメーションとキャラクターの動きの方向の差を考慮します。移動方向を向くキャラクターの場合は、移動する方向にキャラクターを向かせることが目的のため、開始用の Orientation Warping は必要なくなりました。
ABP_ForwardFacing > Animation Layers > Full Body Start State
割り当てる Root Yaw Offset Angle (ABP_Mannequin_Base > [Class Defaults] > [Turn in Place]) を増やします。この場合の範囲は「-179°」から「179°」 が妥当でしょう。

また、左を向くか右を向くかに応じて、代替となる 180° の開始の選択を追加する必要もあります。

所定位置以外での旋回

最後に、回転速度を解決します。解決したいことは、キャラクターの回転速度とアニメーションが目標とする回転速度が大きく違うことです。最も簡単な解決方法は、Character Movement コンポーネントの回転レートを下げることですが、これは最も忠実なソリューションではありません。

幸い、この問題のためのソリューションが Lyra の Turn in Place 用に構築されました (「Lyra のアニメーション」の「所定位置での旋回」セクションを参照してください)。これは Root Yaw Offset を使用してキャラクターの回転を無効にし、より正確にアニメーションの回転速度に従わせるものです。

一番の違いは、アニメーションが作成されている回転を正確に行う代わりに、アニメーションを調整してプレイヤーからの希望する方向に一致させることです。つまり、プレイヤーが 60° の回転を行うときに選択されているのは 45° の開始アニメーションの場合、アニメーションで作成されている比例速度と一致させながら回転をワープさせ、60° 全体をカバーします。

まずは、Turn in Place アニメーション モディファイアを適用する必要があります。生成されたカーブを「RemainingTurnYawSt」と「TurnYawWeightSt」という名前にします。
注記:これらのカーブは、適切に再マップするために両方のスケルトン アセットに存在する必要があるため、手動で SK_Mannequin にも追加します。
アニメーション モディファイアによって生成されたカーブが Turn in Place の Process Turn Yaw Curve でどのように使用されるか見てみましょう。
ABP_Mannequin_Base > Functions > Turn In Place
この関数を複製し、既存の Anim ノード関数 (UE5 の新機能) に調整を加えて新しいニーズに対応します。最初に、対象の Root Yaw Offset デルタをスケーリングします。
開始アニメーションのターン部分では Root Yaw Offset を制御する必要がありますが、ターンの終了時にこのオフセットをブレンドします。そのために、新しい開始をトリガーするたびにリセットが必要になる Reached End of Turn を追加します。
ABP_Mannequin_Base > Set Up Start State は、Start 状態が関連するたびに実行される Anim ノード関数です。
Lyra のアニメーション ブループリントには、Root Yaw Offset モードを介してキャラクターの回転と比較し、メッシュの回転をどのように動作させるかを制御するモードが組み込まれています。それでは、ターンが最後まで到達したかどうかに基づいてモードを変更するように、ABP_Mannequin_Base > Update Start Base Anim ノード関数を更新します。
結果を確認しましょう。
 
これはマルチプレイヤーでも機能します。

ツールセットを適応する

Lyra の射撃アニメーション設定は、移動方向を向いての移動をサポートするように構築されてはいません。これらの調整を行ったことで、両方のモードがサポートされるようになりましたが、これをコードを 1 行も書くことなく行うことができました。このブログで取り上げた新しいツールを使用すると、照準を定める場合は射撃セットを使用し、ワールドを探索するときは移動方向を向くゲームを作成することができます。

加えた変更は破壊的ではなく、Linked Anim Layer、Anim ノード関数、およびプロパティ アクセスを使用することにより、今まで以上にアニメーション ブループリント ロジックの再利用、置き換え、および区分化を行うことができます。また、ポーズ ワープと距離マッチングにより、ゲームプレイに必要なものにアニメーションを適応することができます。Rewind Debugger を使用すると、最小限の設定でコンテキスト内でアニメーションをデバッグすることができます。

これらは、アニメーターやデザイナーを支援するために構築された Unreal Engine 5 の新機能のほんの一部です。リターゲティング の新しいメソッドにより、Lyra を独自のキャラクターや MetaHuman、あるいは Paragon のヒーローとの間でリターゲティングすることができます。Lyra で新しい実験的なモーション マッチングを試すこともできます。

5.0 のリリースに伴い、Unreal Engine 5 のアニメーションを向上させるためのフィードバックをお待ちしています。フォーラム にご参加いただき、ご意見やみなさんの今後の作品についてのお話をお聞かせください!

    今すぐ Unreal Engine を入手しましょう!

    Unreal Engine は、世界で最もオープンで高度な制作ツールです。
    あらゆる機能とソース コード アクセスを完備している Unreal Engine を使用すれば、すぐに制作を開始できます。