シネマティック シーケンスを作成する場合、ゲームプレイ アニメーションをレベル シーケンス内に含まれるアニメーションとブレンドする必要が生じる場合があります。一般にこれを実行するには、シネマティックに対してシームレスなトランジションを作成します。これにはプレイヤー アニメーションとプレイヤー カメラ両方をブレンドします。
このドキュメントでは、シーケンサーとゲームプレイの間で、プレイヤー アニメーションとカメラ アニメーションをブレンドするために使用できる、ワークフローにおける手順と考慮事項を示します。
前提条件
- 制御可能なプレイヤー キャラクターがプロジェクトにある。このドキュメントでは、例として「Third Person (サードパーソン)」テンプレートを使用しています。
- シネマティック シーケンスが作成してあり、それをゲームプレイにブレンドする準備ができている。
- シーケンサーで プレイヤーを参照する方法 に慣れている。
アニメーション ブループリントの設定
通常、キャラクターをシーケンサーでアニメートするとき、アニメーション モード属性が自動で [Use Custom Mode (カスタムモードを使用) に変わります。Custom Mode はシーケンサー専用の特別な アニメーション ブループリント であり、ゲームプレイでプレイヤーをアニメートするために使用するものとは異なります。シーケンサーとゲームプレイ間でキャラクターをブレンドするために、Custom Mode を使用 できません。キャラクターがゲームプレイで使用する同じアニメーション ブループリントを代わりに使用する必要があります。
シーケンスでプレイヤー キャラクター ブループリントを参照 することで必ず実行できます。アニメーション モードをゲームプレイ アニメーション ブループリントに設定する必要があります。参照しない場合、キャラクターを選択し、[Details (詳細)] パネルに移動し、次のとおり実行することで、この属性を手動で設定できます。
- [Animation Mode] を [Use Animation Blueprint (アニメーションブループリントを使用)] に設定
- [Anim Class] をゲームプレイで使用する アニメーション ブループリント に設定サードパーソン テンプレートの場合は、ABP_Manny_C です。
アニメーション ブループリントが明示的に設定されている場合、シーケンサーによりこの属性が [Use Custom Mode] にオーバーライドされません。
スロットのセットアップ
シーケンサーのキャラクターをそのアニメーション ブループリントを使用してアニメートするとき、必ずアニメーション ブループリントに スロット を含める必要があります。これによりアニメーションを Anim Graph に挿入する方法が得られます。モンタージュ からアニメーションをプレイするために主に使用されますが、スロットを使用して、シーケンサーからアニメーションをプレイすることもできます。
新しいスロットを作成するには、ブレンド対象のキャラクターに対するアニメーション ブループリントを開き、次のとおり実行します。
- [Window (ウィンドウ)] をクリックして、[Anim Slot Manager (アニメーションスロットマネージャー)] を有効にします (有効ではない場合)。
- アニメーション スロット マネージャーで、[Add Slot (スロットを追加)] をクリックします。
- 新しいスロットの名前を入力し、Enter キーを押します。
スロットは スケルトン に格納されます。したがって、スロットを作成または変更しているとき、スケルトンも編集していることになります。アニメーション スロット マネージャーで [Save (保存)] をクリックすると、スロットを変更したときにスケルトンが保存されます。
次に、アニメーション グラフでスロットを参照します。
- グラフ内を右クリックして、Slot 'DefaultSlot' ノードを追加します。
- ノードを選択し、[Details (詳細)] パネルの [Slot Name (スロット名)] に前に作成したスロットの名前を設定します。
スロットを作成したら、アニメーション グラフでこれを挿入する 場所 も検討します。最もシンプルなブレンドで最適なのは、Output Pose ノードの前に最終ノードとして配置することですが、プロシージャル エフェクトのメリットを得るためにアニメーション グラフ ロジックで前の方に配置することが良い場合もあります。
この例では、スロット ノードをアニメーション ブループリント ロジックと Output Pose の間につなぎます。
アイドルへのブレンド
ゲームでよく見られるシームレス ブレンドの 1 つは、デフォルトのアイドル ロコモーション ポーズで停止したプレイヤー キャラクターでシネマティックを、ゲームプレイにブレンドすることです。「前提条件」で説明したとおり、このガイドでは、対象アニメーションとシーケンサー コンテンツがすでに存在していると想定しています。これには下記が含まれています。
-
キャラクターがコンポーネントのルート座標で終了し、ゲームプレイのアイドル ポーズに一致する キャラクター アニメーション。
-
ゲームプレイ カメラに近い位置で終了する カメラ アニメーション。
シーケンサーでのキャラクター セットアップ
プレイヤー キャラクターを適切にブレンドするには、シーケンサーで次の操作を実行します。
-
アニメーション セクションを右クリックして、[Properties (プロパティ)] メニューに移動し、すでに作成したスロットの名前に [Slot Name (スロット名)] を設定します。
-
アニメーション セクションの右上隅をドラッグして、アニメーションの最後にブレンド アウト領域を作成します。このアニメーションの終了ポーズはゲームプレイ ポーズと一致することがありますが、これはシーケンサー アニメーションが終了したときに、キャラクターが「ポップ」しないようにするのに役に立ちます。
-
キャラクターのトランスフォーム セクションで右クリックして、[Properties] メニューに移動し、[When Finished (終了時)] を [Keep State (状態を維持)] に設定します。シーケンサーが終了したときに、キャラクターが必ず同じ位置に留まるためにこれが必要です。
シーケンサーでのカメラ セットアップ
シネマティック カメラをゲームプレイ カメラに適切にブレンドするには、シーケンサーで次の操作を実行します。
-
Camera Cut (カメラカット) トラック を右クリックして [Can Blend (ブレンド可能)] をオンにします。
-
アニメーション セクションのブレンドと同様で、カメラ カット セクションの右上隅をドラッグして、カメラ アニメーションの最後にブレンド アウト領域を作成します。
-
Cine カメラ アクタ を選択し、[Details (詳細)] パネルの [Constrain Aspect Ratio (アスペクト比を制限)] を選択します。
Level Sequence アクタ を選択し、[Override Aspect Ratio Axis Constraint (アスペクト比の軸のコンストレイントをオーバーライド)] を無効にして、視野角の急な変化を防ぎます (ゲームプレイ カメラが異なる軸コンストレイントを使用する場合)。
アイドルの結果をブレンド
このシーケンスをランタイム時にプレイすると、シーケンサーからゲームプレイへのキャラクター ブレンドが表示されます。繰り返しますが、このガイドではシーケンサーで プレイヤーを参照する方法 に慣れていることが前提です。
その他の確認事項
シーケンサー ブレンドの品質を向上するには、プロジェクトで次の要素を検討します。
フラットではないテレイン
フラットなサーフェスでキャラクター アニメーションをブレンドするには、アニメーション グラフでシンプルなブレンド ロジックとスロットの配置が一般に必要です。ただし、対象ゲームプレイ アニメーション ブループリントに、フラットではないサーフェスでの IK による足配置のロジックが含まれる場合、アニメーション グラフでブレンド スロットを配置する場所を再検討する必要があります。考慮しない場合、シネマティック アニメーションをブレンド アウトしたとき、このテレインでキャラクターの足のずれがはっきりわかります。
たとえば、サードパーソン テンプレートの Control Rig ノードで IK ロジックを使用して、フラットではないサーフェスにマネキンをプロシージャルに合わせます。
フラットではないサーフェスでブレンドが発生する場合、アニメーション グラフで IK 調整ノードの前に、実行する新しいスロットを移動または作成する必要があります。IK 調整が後で発生するとき、そのスロットからアニメーションを考慮します。
シーケンサーのアニメーションでそのスロットを使用するとき、アニメーションをプレイしたときに、プロシージャルに調整されてうまく表示されます。
入力の抑制と復元
多くのブレンド中に、ブレンド シーケンスがプレイされるので、コントローラーとシーケンサー間のコンフリクトを避けるためにコントローラー入力を抑制することが必要になります。これを実行する主な方法は、Level Sequence アクタ を選択し、[Details] パネルで次の項目を有効にします。
- Disable Movement Input (キャラクター操作の入力を無効化)、キャラクターでゲームプレイの動きを無効にします。
- Disable Look at Input (カメラ操作の入力を無効化)、キャラクターでゲームプレイのカメラ コントロールを無効にします。
これによりシーケンスの間にすべての入力が抑制されます。
プレイヤー入力を制限し、解除するタイミングを精密にコントロールする場合は、Set Cinematic Mode 関数を使用して、入力を手動で制御することもできます。
緻密な入力管理の例として、ブレンド シーケンスが終了する前にプレイヤーのコントロールの抑制を解除する必要があります。次のとおり実行します。
-
キャラクターのトランスフォーム セクション を右クリックして、[Properties] メニューに移動し、[Section Range End (セクション範囲の終了)] のロックを解除します。トランスフォーム セクションの最終時刻を、コントロールを解除する時点にまでドラッグします。これが必要なのは、シーケンスがプレイされるときに、トランスフォーム セクションを連続的に評価し、キャラクターをその場に維持するからです。早く終了すると、評価されなくなります。
-
次のロジックでトランスフォーム セクションの最後と同じタイミングに イベント トラック キーフレームを作成します。
- このイベントは Set Cinematic Mode を実行します。
- Target を Get Player Controller につなげ、それから Get Player State につなげます。
- In Cinematic Mode を無効にします。
- Affects Movement と Affects Turning 両方を有効にします。
ここでシネマティックをプレイしたとき、プレイヤー コントロールはシーケンスが終了する前に復元します。これにより、プレイヤーにとってさらにスムーズで自然なゲームプレイ エクスペリエンスになります。
ゲームプレイ カメラの方向
サードパーソン テンプレートで使用するような、カメラを自由に動かせるゲームでは、ゲームプレイ カメラはブレンド アウトするときに、期待する方向を向いていないことがあります。
Get Player Controller と Set Control Rotation を使用して、ゲームプレイ カメラの方向を手動で設定できます。
New Rotation ピンを右クリックして [Split Struct Pin (構造体ピンを分割)] を選択し、利用可能なすべての回転軸を表示し、ノードで回転の値を設定します。この例では、次のロジックを作成します。
- シーケンスのプレイを開始した後に Set Control Rotation を実行します。
- New Rotation Y を -15 に設定し、カメラのピッチを少し下向きにします。
- New Rotation Z を -45 に設定し、カメラを横方向に回転し、正面を目的の方向にします。
ここでシネマティックをプレイするとき、カメラを目的の方向に向けてブレンド アウトします。