HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

ライティングの共通化

共通して使い回すライティングをまとめる

方法①:レベルを使い回す(レベルインスタンス、サブレベル)

レベルインスタンス
前回作成した、フィルムカーブを調整したポストプロセスボリュームなどの共通の設定値を用意したレベルをシーンに配置すると同様の設定がレベルインスタンスというオブジェクトとして使い回せる。

レベルを別レベルに置くとレベルインスタンスとして利用できる。

レベルインスタンスは参照元のレベルを編集すると、すべての配置されたレベルインスタンスが更新されるのでメンテンナンスしやすい

元レベルを変更すると
すべてのレベルインスタンスに反映される

サブレベル
レベルインスタンスの注意点として、編集を実行すると元シーンの調整になる。
基本的にこの編集モードでないと調整できないのであまりヒューマンエラーは無いと思うが編集してしまう可能性が無いことも無い。

詳細/ 編集を押すと元シーンが編集できてしまう

絶対に編集したくない場合はサブレベルとして配置すると元シーン以外では編集できなくなる。
レベルウィンドウを開き、既存レベルを追加するとサブレベルとしてシーンに追加できる。

レベルウィンドウを呼び出し
サブレベルとして既存レベルを追加する

ロックすると編集、保存などができなくなる。 (ロックしていない場合、直接編集できてしまうので今回の目的であれば必ずロックする。)

ロックをすると編集不可能なベースライトレベルとして利用できる

方法②:ブループリント

レベルインスタンスと比べて作成コストはかかってしまうが、HDRIや露出などレベルによって値を変更するものを使い回す場合はブループリントにまとめる必要がある。

ブループリントにするとレベルごとにHDRIの編集ができる

下記の画像はHDRIBackDropを複製して拡張したもの。
コンストラクションスクリプトで露出の調整ができるようにした。

Set Members in PostProcessSettingsでブループリントのコンストラクションスクリプトから露出を調整できるようにしたブループリント

外に出していない値は作業者が触ることができず、調整した値をデフォルト値に戻すことも容易なので作ってしまえばレベルインスタンスよりプロジェクト許容範囲内での調整がしやすい。
レベルインスタンスに比べてアーティストが調整しづらいのが最大の懸念なので管理、調整の段取りをプロジェクトで話し合っておかないと調整しづらいままで終わりかねないのは注意が必要と思う。

ブループリント化はゲームで設定しやすいディレクショナルライト、HDRIなどを利用したい場合は大体必要なものになってくる。
ゲームで光源の調整が必要ならなおさら。


ライト触る人はブループリントの更新に慣れておいた方が良いかなと思いました。

fish_ball

プロシージャル魚類