場面転換的なクロスフェードの備忘録
お久しぶりでございます。
平成も終わり令和になりましたので久しぶりの記事を書きます。今回はクロスフェードの実装。
クロスフェード自体は一瞬で終わるので、クロスフェードの中でも、ワープや場面転換に使えそうなクロスフェードを実装。
一瞬で終わるクロスフェードの実装
マテリアル作成してMaterialDomainをPostProcessにして以下の通りにノード組んでBPでLerpを0-1で変動サせていくだけ!簡単!
↑に追加実装をしてみる。
今回はこんな感じで実装。
SceneCapture2Dを使います。なんかこの間登壇したときもその前登壇したときもこれについて喋った気がする。SceneCapture2D大好き。
例えばこんな感じで配置(ここに配置しているのはSceneCapture2Dではなく、普通のカメラです。)
今回の実装用にマテリアルを組み直し。
このときマテリアルの設定のBlendableLocationの設定次第ではかなり絵が暗くなるので、ポストプロセス的に問題なければ、BlendableLocationはToneMapping前にしておくと良いでしょう。(実はなんで絵が変わるかは雰囲気でしかわかってない。教えてほしい・・・切実に)
次にBPの実装
今回は汎用性は何も考えずにレベルブループリントに書いていく。
scenecapture2dで使う用のrendertarget生成
パラメータ変更用にDynamicMaterialInstanceを生成(処理負荷的に少しでも抑えるために、SceneCapture2Dの毎フレームのキャプチャー処理をオフに)
クロスフェード前処理
Lerpのパラメータ更新にはタイムラインノードを使用
以上で完成。
上記のままだと1回しかできないので、各々使い方に応じて適宜追加・修正してください。
なお激重なので基本的にはFrameGrabberを使うか、エンジン改造でシェーダー書かないとダメそうかも。