sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

【Unity】光、陰影、反射などルックの設定方法メモ

床の鏡面反射

Reflection Probe

  • ネットで検索かけると出てくる。スクリプトで反転させるやつ
    更新が遅くてガクガクしちゃうので、おそらく推奨される方法ではない
    • 床を鏡面反射したいなら SSR を使おうぜってことかと
  • リフレクションプローブはふつうに使うのがおそらくよい
    • 屋内ならぴったり部屋を囲って Box Projection にチェックを入れる
    • 鏡とか真っ暗なテレビ画面とかいい感じに反射してくれる

SSR

  • Screen Space Reflection
    • Post Processing Stack系の機能。壁から何まですべてコレでいける
    • マテリアルの Smoothness の値が 1 に近いほど反射しまくる

オブジェクトにいい感じに陰をつける

SSAO

  • Screen Space Ambient Occulution
    • Post Processing Stack系の機能。
      物体と物体の間に陰をつけて、やたら立体的に見えるようになる

光をよりキレイに光らせる

Bloom

  • Post Processing Stack系の機能。
    • Intensity でギラッと光る。あまり高い数値を入れないほうがよいらしい
    • Thretiold でいい感じににじみを加える
    • Clamp は初期値が高すぎるので低くしてよい
  • あまり光らせると白飛びするので調整すること

マテリアルの Emission を光らせる

Bloom

  • 追加すると Emission を設定したマテリアルが光る。
  • マテリアルのパラメータ Global Illumination で近くのオブジェクトに影響を与える
    • Realtime なら CPU に負担がかかるがなんにでも影響を与える
    • Bake なら static オブジェクトのみ。Light Probe で dynamic にも対応可

反射光や間接光や影をいい感じに出す

Global Illumination

  • Window → Rerdering → Lighting Settings より設定可
  • 基本的に GI はベイクしないと効果がないと覚えておくとよいか?
Realtime Global Illumination
  • 正しくはPrecomputing Realtime Global Illumination
    • 「事前計算」であることに要注意
  • CPU を喰う代わりにオブジェクトの制限なくいい感じにしてくれる
    • 実際に使った感覚だと、あまり効果があるように感じないのだけど…?
  • ただし直接光のみしか扱えない。間接光は BakedGI 担当。
    • 間接光だけはベイクしないと表現できないという絶対ルールがある
Baked Global Illumination
  • Static なオブジェクトに影響を与える
    • Light Probe を使えば Dynamic なオブジェクトにも影響を付与可能
  • ライト諸々をセットしたあと、Lighing Settings 最下部「Bake」で焼きこむ
    • びっくりするほど完了に時間がかかる
  • ライトの設定「Baked Shadow Radius」の値を2くらいに上げるとボヤッとした影になる
    • 実際やってみるとだいぶ馴染む感じがして良い

Light Probe ってなんぞや

  • GIと連携して動的なオブジェクトに間接光や影を落とす機能
  • シーンの三次元空間で設定するのでちょっと面倒
    • グループで移動できる
    • Ctrl + D を一回押すと複製してくれる
    • 細かく配置しないとうまく反映されない

マルチシーン時の挙動

アクティブなシーンの Lighting が反映される

実際に影響される要素
  • Skybox
  • Environment Lighting
  • Environment Reflections
  • Realtime GI / Baked GI

  • エディタ上でマルチシーンにしてる場合、すべてのシーンがベイクされる

  • ベイクしたオブジェクトを他のシーンに持って行っても意味はない

  • Reflection Probe のベイク実行で、ライトマップも一緒にベイクされる

実際にフルオプションを載せてテストしてみた

  • 左が全オブジェクトが Dynamic でリアルタイムライトを使用、
    右が全オブジェクトが Static でベイクしたもの
    • SSAO だけ後から PostProcess で乗せた
  • リアルタイムだと間接光の影響を受けないから真っ暗。
    エミッションも壁に焼き付けられないのでクオリティが若干下がってる

f:id:Ashtarte:20210428063332j:plain

参考リンク

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

docs.unity3d.com

docs.unity3d.com

compojigoku.blog.fc2.com

machio-kinniku.hatenablog.com