ゲーム画面を暗転させる際、所望の3Dオブジェクトだけ暗転から除外したい場合の1手法の紹介。
下記画像のような結果を得る。手前側のオブジェクトのみ明るく、背後の3D空間は暗い状態にある。
暗転はPost Processで行う。
暗転からの除外は、対象をCustomDepthに登録→上記暗転ポスプロの処理でCustomDepthを考慮する。
※描画負荷を考慮していないので、最適な手法ではない点に注意
以下、ver.4.19.2 での手順となる。
新規Materialを作成し、Material DomainをPost Processにする。
あとは下記画像のように設定する。
2つ方法がある。
Post Process Volumeをレベルに配置して、カメラをその中に突っ込む
カメラのPost Processプロパティに直接値を設定する
今回は前者で説明する。
今回のケースでは、対象アクターに以下のインタフェースを設けて選別した。
暗転除外したいアクターだけ以下のイベントを呼ぶ事になる。
上記MaterialのDynamic Material Instanceを適当なタイミングで作成して、配置したPost Process Volumeに適用する。
Blueprint変数の”Pp Volume”は公開設定で、レベルから先ほどのPost Process Volumeが割り当ててある。
上記処理を通った時点でポストプロセスが適用され始める。
上記画像では透明なLinearColorを設定しているので見た目上の変化はない。
任意のタイミングで改めて暗転用のカラーを設定すれば、本ページ頭の画像のような結果を得る。