ゲームプレイとシーケンサー アニメーションをブレンドする

アニメーション ブループリントとスロットを使用して、キャラクターおよびカメラ アニメーションをシーケンサーからゲームプレイまでシームレスにブレンドします。

シネマティック シーケンスを作成する場合、ゲームプレイ アニメーションをレベル シーケンス内に含まれるアニメーションとブレンドする必要が生じる場合があります。一般にこれを実行するには、シネマティックに対してシームレスなトランジションを作成します。これにはプレイヤー アニメーションとプレイヤー カメラ両方をブレンドします。

このドキュメントでは、シーケンサーとゲームプレイの間で、プレイヤー アニメーションとカメラ アニメーションをブレンドするために使用できる、ワークフローにおける手順と考慮事項を示します。

前提条件

  • 制御可能なプレイヤー キャラクターがプロジェクトにある。このドキュメントでは、例として「Third Person (サードパーソン)」テンプレートを使用しています。

  • シネマティック シーケンスが作成してあり、それをゲームプレイにブレンドする準備ができている。

  • シーケンサーで プレイヤーを参照する方法 に慣れている。

アニメーション ブループリントの設定

通常、キャラクターをシーケンサーでアニメートするとき、アニメーション モード属性が自動で [Use Custom Mode (カスタムモードを使用) に変わります。Custom Mode はシーケンサー専用の特別な アニメーション ブループリント であり、ゲームプレイでプレイヤーをアニメートするために使用するものとは異なります。シーケンサーとゲームプレイ間でキャラクターをブレンドするために、Custom Mode を使用 できません。キャラクターがゲームプレイで使用する同じアニメーション ブループリントを代わりに使用する必要があります。

AnimBP1.png

シーケンスでプレイヤー キャラクター ブループリントを参照 することで必ず実行できます。アニメーション モードをゲームプレイ アニメーション ブループリントに設定する必要があります。参照しない場合、キャラクターを選択し、[Details (詳細)] パネルに移動し、次のとおり実行することで、この属性を手動で設定できます。

  • [Animation Mode][Use Animation Blueprint (アニメーションブループリントを使用)] に設定

  • [Anim Class] をゲームプレイで使用する アニメーション ブループリント に設定サードパーソン テンプレートの場合は、ABP_Manny_C です。

AnimBP2.png

アニメーション ブループリントが明示的に設定されている場合、シーケンサーによりこの属性が [Use Custom Mode] にオーバーライドされません。

スロットのセットアップ

シーケンサーのキャラクターをそのアニメーション ブループリントを使用してアニメートするとき、必ずアニメーション ブループリントに スロット を含める必要があります。これによりアニメーションを Anim Graph に挿入する方法が得られます。モンタージュ からアニメーションをプレイするために主に使用されますが、スロットを使用して、シーケンサーからアニメーションをプレイすることもできます。

新しいスロットを作成するには、ブレンド対象のキャラクターに対するアニメーション ブループリントを開き、次のとおり実行します。

  1. [Window (ウィンドウ)] をクリックして、[Anim Slot Manager (アニメーションスロットマネージャー)] を有効にします (有効ではない場合)。

  2. アニメーション スロット マネージャーで、[Add Slot (スロットを追加)] をクリックします。

  3. 新しいスロットの名前を入力し、Enter キーを押します。

AnimBP3.png

スロットは スケルトン に格納されます。したがって、スロットを作成または変更しているとき、スケルトンも編集していることになります。アニメーション スロット マネージャーで [Save (保存)] をクリックすると、スロットを変更したときにスケルトンが保存されます。

次に、アニメーション グラフでスロットを参照します。

  1. グラフ内を右クリックして、Slot 'DefaultSlot' ノードを追加します。

  2. ノードを選択し、[Details (詳細)] パネルの [Slot Name (スロット名)] に前に作成したスロットの名前を設定します。

AnimBP4.png

スロットを作成したら、アニメーション グラフでこれを挿入する 場所 も検討します。最もシンプルなブレンドで最適なのは、Output Pose ノードの前に最終ノードとして配置することですが、プロシージャル エフェクトのメリットを得るためにアニメーション グラフ ロジックで前の方に配置することが良い場合もあります。

この例では、スロット ノードをアニメーション ブループリント ロジックと Output Pose の間につなぎます。

AnimBP5.png

アイドルへのブレンド

ゲームでよく見られるシームレス ブレンドの 1 つは、デフォルトのアイドル ロコモーション ポーズで停止したプレイヤー キャラクターでシネマティックを、ゲームプレイにブレンドすることです。「前提条件」で説明したとおり、このガイドでは、対象アニメーションとシーケンサー コンテンツがすでに存在していると想定しています。これには下記が含まれています。

シーケンサーでのキャラクター セットアップ

プレイヤー キャラクターを適切にブレンドするには、シーケンサーで次の操作を実行します。

  1. アニメーション セクションを右クリックして、[Properties (プロパティ)] メニューに移動し、すでに作成したスロットの名前に [Slot Name (スロット名)] を設定します。

    BlendIdle3.png

  2. アニメーション セクションの右上隅をドラッグして、アニメーションの最後にブレンド アウト領域を作成します。このアニメーションの終了ポーズはゲームプレイ ポーズと一致することがありますが、これはシーケンサー アニメーションが終了したときに、キャラクターが「ポップ」しないようにするのに役に立ちます。

    BlendIdle4.gif

  3. キャラクターのトランスフォーム セクションで右クリックして、[Properties] メニューに移動し、[When Finished (終了時)][Keep State (状態を維持)] に設定します。シーケンサーが終了したときに、キャラクターが必ず同じ位置に留まるためにこれが必要です。

    BlendIdle5.png

シーケンサーでのカメラ セットアップ

シネマティック カメラをゲームプレイ カメラに適切にブレンドするには、シーケンサーで次の操作を実行します。

  1. Camera Cut (カメラカット) トラック を右クリックして [Can Blend (ブレンド可能)] をオンにします。

    BlendIdle6.png

  2. アニメーション セクションのブレンドと同様で、カメラ カット セクションの右上隅をドラッグして、カメラ アニメーションの最後にブレンド アウト領域を作成します。

    BlendIdle7.gif

  3. Cine カメラ アクタ を選択し、[Details (詳細)] パネルの [Constrain Aspect Ratio (アスペクト比を制限)] を選択します。

    BlendIdle7a.png

Level Sequence アクタ を選択し、[Override Aspect Ratio Axis Constraint (アスペクト比の軸のコンストレイントをオーバーライド)] を無効にして、視野角の急な変化を防ぎます (ゲームプレイ カメラが異なる軸コンストレイントを使用する場合)。

BlendIdle7b.png

アイドルの結果をブレンド

このシーケンスをランタイム時にプレイすると、シーケンサーからゲームプレイへのキャラクター ブレンドが表示されます。繰り返しますが、このガイドではシーケンサーで プレイヤーを参照する方法 に慣れていることが前提です。

BlendIdle8.gif

その他の確認事項

シーケンサー ブレンドの品質を向上するには、プロジェクトで次の要素を検討します。

フラットではないテレイン

フラットなサーフェスでキャラクター アニメーションをブレンドするには、アニメーション グラフでシンプルなブレンド ロジックとスロットの配置が一般に必要です。ただし、対象ゲームプレイ アニメーション ブループリントに、フラットではないサーフェスでの IK による足配置のロジックが含まれる場合、アニメーション グラフでブレンド スロットを配置する場所を再検討する必要があります。考慮しない場合、シネマティック アニメーションをブレンド アウトしたとき、このテレインでキャラクターの足のずれがはっきりわかります。

たとえば、サードパーソン テンプレートの Control Rig ノードで IK ロジックを使用して、フラットではないサーフェスにマネキンをプロシージャルに合わせます。

Terrain1.png

フラットではないサーフェスでブレンドが発生する場合、アニメーション グラフで IK 調整ノードの前に、実行する新しいスロットを移動または作成する必要があります。IK 調整が後で発生するとき、そのスロットからアニメーションを考慮します。

Terrain2.png

シーケンサーのアニメーションでそのスロットを使用するとき、アニメーションをプレイしたときに、プロシージャルに調整されてうまく表示されます。

Terrain3.gif

入力の抑制と復元

多くのブレンド中に、ブレンド シーケンスがプレイされるので、コントローラーとシーケンサー間のコンフリクトを避けるためにコントローラー入力を抑制することが必要になります。これを実行する主な方法は、Level Sequence アクタ を選択し、[Details] パネルで次の項目を有効にします。

  • Disable Movement Input (キャラクター操作の入力を無効化)、キャラクターでゲームプレイの動きを無効にします。

  • Disable Look at Input (カメラ操作の入力を無効化)、キャラクターでゲームプレイのカメラ コントロールを無効にします。

これによりシーケンスの間にすべての入力が抑制されます。

Input1.png

プレイヤー入力を制限し、解除するタイミングを精密にコントロールする場合は、Set Cinematic Mode 関数を使用して、入力を手動で制御することもできます。

Input2.png

緻密な入力管理の例として、ブレンド シーケンスが終了する前にプレイヤーのコントロールの抑制を解除する必要があります。次のとおり実行します。

  1. キャラクターのトランスフォーム セクション を右クリックして、[Properties] メニューに移動し、[Section Range End (セクション範囲の終了)] のロックを解除します。トランスフォーム セクションの最終時刻を、コントロールを解除する時点にまでドラッグします。これが必要なのは、シーケンスがプレイされるときに、トランスフォーム セクションを連続的に評価し、キャラクターをその場に維持するからです。早く終了すると、評価されなくなります。

    Input3.gif

  2. 次のロジックでトランスフォーム セクションの最後と同じタイミングに イベント トラック キーフレームを作成します。

    • このイベントは Set Cinematic Mode を実行します。

    • TargetGet Player Controller につなげ、それから Get Player State につなげます。

    • In Cinematic Mode を無効にします。

    • Affects MovementAffects Turning 両方を有効にします。

    Input4.png

ここでシネマティックをプレイしたとき、プレイヤー コントロールはシーケンスが終了する前に復元します。これにより、プレイヤーにとってさらにスムーズで自然なゲームプレイ エクスペリエンスになります。

Input5.gif

ゲームプレイ カメラの方向

サードパーソン テンプレートで使用するような、カメラを自由に動かせるゲームでは、ゲームプレイ カメラはブレンド アウトするときに、期待する方向を向いていないことがあります。

CameraFace1.gif

Get Player ControllerSet Control Rotation を使用して、ゲームプレイ カメラの方向を手動で設定できます。

CameraFace2.png

New Rotation ピンを右クリックして [Split Struct Pin (構造体ピンを分割)] を選択し、利用可能なすべての回転軸を表示し、ノードで回転の値を設定します。この例では、次のロジックを作成します。

  • シーケンスのプレイを開始した後に Set Control Rotation を実行します。

  • New Rotation Y-15 に設定し、カメラのピッチを少し下向きにします。

  • New Rotation Z-45 に設定し、カメラを横方向に回転し、正面を目的の方向にします。

CameraFace3.png

ここでシネマティックをプレイするとき、カメラを目的の方向に向けてブレンド アウトします。

CameraFace4.gif

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