【Unity】明暗差の大きい部屋を自然につなげる

投稿者: | 2023-11-22

同じシーンに真っ暗な部屋と屋外のように明るい部屋を作って、ローカルボリュームで自然に繋げてみました。

暗い室内

屋内の工場では、空の明るさは0に近い値です。

空の明るさを上げると屋内にも影響します。

太陽の光が入る部屋は空をできるだけ明るくしています。

明暗の差が大きいので、急に入れ替えると不自然です。

暗い工場と明るい部屋の間には暗い廊下があります。

そこで、廊下で段階的に明るさが変わるようにしてみました。

ローカルボリューム

空の明るさや露出はボリュームで管理します。明るい部屋ではグローバルボリューム、工場や廊下ではローカルボリュームを使いました。

工場のローカルボリューム

廊下は3つに分けて段階的に空を明るくします。

さらに、HDRPのサンプルシーンを参考にして、工場と廊下のボリュームやグローバルボリュームの間に、スフィアコライダーのローカルボリュームを置きました。

これを置かない場合、明るさが不自然に切り替わります。

Blend Distance: 3
Blend Distance: 0

空の明るさは前後のボリュームの間くらいの値にしています。

そして、それぞれのボリュームで露出を調節します。ホワイトバランスとTintも空の明るさと同様に、段階的に変えています。

Blend Distance

Blend Distanceを上げると、カメラがコライダーに入る前から徐々にボリュームの値を適用します。Boxコライダーのボリュームでは0に、Sphereコライダーの方は3くらいにしています。

Priority

ボリュームが重なっている部分ではPriorityの高い方が優先されます。BoxコライダーのボリュームよりもSphereコライダーの方を高く設定しています。

Boxコライダー
Sphereコライダー

しかし、工場と廊下が隣接しているので、工場の中で廊下のSphereコライダーの影響を受ける可能性があります。

そこで、工場のボリュームのPriorityをこれよりも上げています。

さらに、工場と廊下の間のボリュームのPriorityは工場より上げました。

太陽光をオンオフ

廊下の壁に太陽光が反射して見えてしまうので、ゲームの進行に合わせて太陽をオフにし、プレイヤーから窓が見える直前でトリガーを使って太陽をオンにしています。

コメントを残す

メールアドレスが公開されることはありません。