TPSカメラからシームレスにシーケンサーのカメラに切り替えた備忘録

  • 4
    Like
  • 0
    Comment

裏 Unreal Engine 4 (UE4) Advent Calendar 2016の12月3日の記事です。

はじめに

シーケンサーを再生すると、カメラが乗っ取られて一瞬で切り替わってしまいます。
それをどうにかシームレスに再生する方法になります。
(シーケンサー再生後にSetViewTargetWithBlendとか実行してもカメラ取れなかった気がする。何か他に方法とかあったら教えてください)

プレイヤーの周りをぐるりと回るシーケンサー。
再生開始したタイミングでシーケンサーのカメラにカクッと切り替わる
01.gif

SetViewTargetWithBlendを使用した補間

02.gif

多分これが一番簡単だと思います。
現在のカメラ~シーケンサー用カメラへの補間(SetViewTargetWithBlend) → 終わったらシーケンサー再生
seamless_sequencer_01.png

ただこの場合、補間待ちが入るのでボタンを押した瞬間からシーケンサーを再生できず、演出に一旦間が空いてしまいます。

親ノードを使用した補間

twitterでアドバイス貰ったのでやってみました。

03.gif

こちらはシーケンサー再生開始と同時に現在のカメラから補間します。力技です。

  • ワールドへの配置はこんな感じ。Rootにいい感じにオフセット付けて補間します。 seamless_sequencer2_01.png


  • カメラ設定。Lookat先を「LookAtTrack」に。本来のLookAt位置には後で合わせる。 seamless_sequencer2_00.png


  • まずシーケンサー再生開始位置のカメラ位置と注視点位置をどうにかして保存しておきます seamless_sequencer2_02.png


  • 再生部分 seamless_sequencer2_03.png
    • 現在カメラ位置と、シーケンサーカメラの初期位置の差分を保存。 seamless_sequencer2_04.png
    • 現在カメラ注視点と、シーケンサーカメラの注視点初期位置の差分を保存 seamless_sequencer2_05.png
    • 取った差を、カメラのRoot、注視点のルートに対して補間する seamless_sequencer2_06.png


カメラ本体(CineCameraActor1)のTransformはシーケンサーに取られるので、親Actor(CameraRoot)を用意して
そっちを動かすことで補間用の位置オフセットを無理やり付けています。




  • おまけ
    更に、シーケンサーのカメラを原点基準に作成、SeamlessCameraRootにプレイヤーのTransformを突っ込んだりしていけば、 固定位置のカメラではなく移動したプレイヤーの周囲を回るカメラ等も作れます。
    やってみました。
    IMAGE ALT TEXT HERE


締め

明日の裏 Unreal Engine 4 (UE4) Advent Calendar 2016はalweiさんの「UE4のモバイルDLC&パッチ処理周りについて」です。