[Unity] 室内シーンのイメージエフェクト

  • UnityでPost Processing Stackを使った各種イメージエフェクト

Unity 2017.2.0f3を使用しています。

前回は、ライトマップやReflection Probeの周りの説明と、
Post Processing Stackを使ったイメージエフェクトの露出についてだけ説明しました。

今回は、Post Processing Stackを使って詰めていきます。
設定であるProfileのパラメータを調整していきます。

自動露出 (Eye Adaptation)

上記の室内画像は、Color Gradingで「Post Exposure (EV)」(露出)を3.8と大きな値にしています。
この状態で、室外を見てみると以下のようにかなり真っ白になります。

逆に、室外の露出を適度に合わせて室内を見ると、室内が暗くなってしまいます。

人間の目ではこのようにはならず、時間が経つと暗い部分に慣れてきますよね。
この目の自動露出のような機能は、Post Processing Stackの「Eye Adaptation」というエフェクトを使用します。

Post Processing StackのProfileで以下を行いました。

  • 「Color Grading」のチェックボックスをオンにして有効化
  • 「Eye Adaptation」のチェックボックスをオンにして有効化
  • 「Color Grading」の「Post Exposure (EV)」を1に変更
  • 「Eye Adaptation」の「Auto exposure」の「Histgram filtering」の調整
  • 「Eye Adaptation」の「Auto exposure」の「Minimum(EV)」の調整

「Eye Adaptation」の「Auto exposure」の「Histgram filtering」では、グラフを左に寄せて暗い値の場合は底上げするようにしてます。
これで、カメラを移動させると室外と室内は以下のように自動で露出がかかるようになりました。

アンチエイリアシング (Antialiasing)

「Antialiasing」チェックボックスをオンにします。
以下のようになりました。
アンチエイリアシング適用前です。

アンチエイリアシング適用後です。

SSAO (Ambient Occlusion)

「Ambient Occlusion」チェックボックスをオンにし、「Radius」を0.2としました。

これは、角部分などで遮蔽(Ambient Occlusion)計算を行い暗くします。
疑似的な影を与えることにより、間接照明がかかったような効果を「スクリーンスペース(Screen Space)」で行います。
「Screen Space Ambient Occlusion」と呼ばれ、略して「SSAO」と呼んでいます。
下画像の左がSSAOをオフにしたもの、右がオンにしたものです。

ただし、SSAOをかけすぎると違和感が出ますので、薄くしたい場合は「Intensity」を下げるようにします。

カラーグレーディング(Color Grading)

「Color Grading」では全体的な色合いを調整します。

「Temperature」(色温度)を-10にして若干水色になるようにし、「Saturation」(彩度)を0.9にして若干グレイスケールに近づくようにしました。
下画像の左が調整前、右が調整後です。

分かりやすいようにあえて大きな変化をつけてますが、実際はわずかに調整するほうがいいかもしれません。

ブルーム (Bloom)

一定の明るさ以上の箇所にて、周囲をぼかすように光を漏れさせる効果を与えます。
これにより、窓から入る光でまぶしくなるような効果を出します。
「Bloom」チェックボックスをオンにし、「Intensity」を0.1としました。

以下のようになりました。

BloomをかけすぎるといかにもCGっぽくなりますので、ほんのわずかにかけるのがいいかもしれません。

ビネット (Vignette)

スクリーンの周囲を暗くすることで、安定感を出します。
「Vignette」チェックボックスをオンにし、「Intensity」を0.2としました。

微妙な変化ですが、以下のようになりました。

SSR (Screen Space Reflection)

リアルタイムでは、反射については
環境マップ(キューブマップ、この場合は全体でのSkyboxまたはReflection Probeになります)による映り込みの反映と、
イメージエフェクトとしてのSSR(Screen Space Reflection)の2つに分かれます。
環境マップ的な方法は、Static形状のみが映り込みに反映されます。
SSRは後処理で計算され、スクリーンの各ピクセルを走査して周囲の形状をStatic/Dynamicに関係なく映り込ませることができます。
ただし、スクリーンで処理する反射ですのでスクリーンで見えていない箇所は反映されず、荒いです。

「Screen Space Reflection」チェックボックスをオンにします。

現在は建物だけで小物類を配置していないため、わかりやすいところをズームしました。

右がSSRをオンにしたものです。床に光の反射が映り込んでいます。

被写界深度 (DOF : Depth Of Field)

焦点距離によるぼかし効果です。
「Depth Of Field」チェックボックスをオンにし、「Focal Length」を調整しました。

以下のようになりました。

右がDOFをオンにしたものです。手前部分にぼかしがかかってます。

まだエフェクト機能はあるのですが、以上をかける前とかけた後で比べてみました。

一目瞭然ですね。

今まではStaticな地面や建物だけを配置していました。
次回は、Dynamicな形状を配置したライティングについて書いていく予定です。

カテゴリー: Unityに形状を渡す