うにty生活

UnityChanを生活させたい

【Unity HDRP】Lighting検証 表にまとめて考察してみた

f:id:tubakihimeLoveHate:20220407223958p:plain

今回はLightingの設定ごとにシーンやオブジェクトにどのような影響があるか調査して表にまとめていこうと思います。

 

 

環境

Unity:2020.3.31

HDRP:10.8.1

 

検証内容

今回は以下のような環境でテストを作成して、それぞれのLightingのType(発光側)とMeshRenderer(光を受ける側)の設定がどのように作用するか全てを表にまとめていきます。あとLight Probeの有無も含めます。

 

検証環境

lightテスト環境の画像

シーンには光が一切ない状態

シーン全体

Light Probeを配置したときのシーンはこんな感じ

Light Probeを置いたときのイメージ

 

その他全体の設定としては

・ベイクした情報は毎回クリアしてる

・Lightは全てShadowを有効

・Mesh Rendererはcast shadowをOn

 

以下の表にまとめているのでそこから気になった部分の考察や検証を行なっていきます。

ここから「specular反射」と「色にじみ」という単語が出てきます。簡単に説明するとspecular反射が鏡面反射で、色にじみ(カラーブリード)が近くのオブジェクトの色が他の色に影響を与えることです。

 

「色にじみ」に関しては本に載っていた単語なのでUnityでは別の呼び方をしているかもしれませんが、当記事では「色にじみ」の表現を使います。

 

Specular反射について詳しく知りたい方はこちらの記事が参考になります。

物理ベースレンダリングを柔らかく説明してみる(1) - Qiita

検証結果

  Type RealTime Mixed Baked

Static/

Light

map

Direct

ional

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

色にじみ有(固定)

specular反射有(固定)

影有(固定)

色にじみ有(固定)

Point

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射有(固定)

影有(固定)

Spot

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射有(固定)

影有(固定)

色にじみ有(固定)

Area

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射有(固定)

影有(固定)

Static/

Light

Probe

Direct

ional

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

色にじみ有(固定)

specular反射無

影有(固定・粗い)

色にじみ有(固定)

Point

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射無

影有(固定)

Spot

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射有(固定)

影有(固定)

色にじみ有(固定)

Area

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射無

影有(固定)

Dynamic

Direct

ional

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

色にじみ無

specular反射無

影無

色にじみ無

Point

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射無

影無

Spot

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射無

影無

Area

specular反射有(動的)

影有(動的)

specular反射有(動的)

影有(動的)

specular反射無

影無

 

考察&検証

何故contribute GIの表がないのか?

検証環境の画像にはcontribute GI/Lightmapが入っています。何故表にないかというと

実は私がcontribute GIを理解していなかったこともあり、最初一緒に検証しました。

後々ドキュメントを見るとcontribute GIをつけることこそがオブジェクトにLightmapとLight Probeの影響を与えるトリガーだったみたいです。

 

contribute GIはStaticと同じ

つまり画像左上(Static/Lightmap)と右下(contribute GI/LIghtmap)は同じ状態のオブジェクトということです笑

通りで何も変わらないと思いました。

 

RealTImeでは色にじみが表現できない?

RealTimeでは以下の画像のような、オブジェクトの色が他のオブジェクトに影響する色にじみが表現できませんでした

後述していますが、色にじみの結果はLightmapに一緒に書き込まれるので、Lightmapを生成しないRealTimeだけでは色にじみは表現できません。

Light Probeはとりあえずつけておくでよし

今回わかったこととしてLight Probeをつけることで、動的なオブジェクトがあるときにより正確なライティングが再現可能だったということです。

Light ProbeはそのポイントでのLight情報を持っていて他のオブジェクトに渡すので、計算コストを抑えた間接光の再現する手法かなと理解しました。

 

Light Probeついてないアセットあんまりみたことないし、とりあえずつけておくで良さそう。ただ、配置方法についてはもう少し研究する必要があるかなと思いました。

 

RealTimeとmixedで影の落ち方が異なる

RealTime

realtime

mixed

mixed

LightmapデータをクリアにすることでmixedはRealTimeの影に近づきます。

つまり、mixedでもベイク可能(Lightmapが生成される)ということ。

 

mixedでベイクをすることで間接光のLightmap Data情報を用意することが可能。Specular反射と影はRealTimeに近い形がとられ、間接光は予め用意したものを使っていた。それと比べてRealTimeではLightmap Dataが生成されないのでこういう現象が起こっていたのでした。

 

mixedを知るために少しやり方を変更

bakedのSpot Lightを用意してbakeした状態が以下です。この状態から反対側にmixedのDirectional Lightを用意したときにどうなるか検証します。

mixed用に検証し直し

 

Directional Lightを反対方向から当てる

Dynamic以外のオブジェクトには影が二つできた!

もちろんSpot Lightの方はbakedなのでSpot LIghtを動かしても影は動かない

 

ちなみにSpotLightをmixedに変更してみたらSpot Lightのon/offが動的に切り替えられた!この表現はよく使うので覚えておきたい

また、今回はLighting Modeはbakedで行いましたが、公式のmixedライティングの説明ではLighting Modeによって動作が変わるみたいです。それはまた別の機会に検証行おうかなと思います。

 

Light Probeが存在する状態でBaked Lightの影が正確に動的オブジェクトに反映されない

自分の考察ではLight Probeがあれば動的なオブジェクトにも影が落ちると考察していましたが、Light Probeは正確な影の情報は持っていないみたいでした。

 

正確な影は落ちないが、暗い場所なのでオブジェクトが暗くなるといったことは再現できるっぽい

 

LightProbeはベイクしないと効果を発揮しない

今回の検証では動的になくすなどはできなかった。

→LightProbeの情報をランタイムで更新する方法がないか調べてみます。

 

Area Lightのシャドウ変じゃない?

以下の画像を見てもらいたい(見にくいけどごめん)

area lightの状況

Area Lightがもし全面均一に発光しているのだとしたら、影は本来Sphereの真下に現れるはず

なのに影は明らかにArea Lightの中心からのみ発光されているように出ていた。

 

これは自分の仕様に対する勘違い。Directinal Lightのような挙動だと思っていた。皆さんも間違えないように注意

 

Lightmapデータを削除したのに照らされているのはなぜ?

bakedのライトのみが存在するシーンで一度ベイク、その後にベイクしたLightmap情報を削除してもシーンは明るいまま?どういうこと?

普通暗くなるのでは...?

Directional Light

 

Emissionは光源ではなかった

今回ついでにEmissionも使ってみました。今までEmissionも単体で光源になると思っていたが認識が違っていた。

Lightなどの光源に反応して発光する効果という意味で使われるものということがわかりました。

 

環境光は影を落とすのか検証

Lightが何もない状態でHDRI Skyのみ20000Luxにしてベイク

結果→落とさない

 

 

今回かなりLightに関して理解が深まりました。

他にも気になることがあれば検証していきたいと思うのでTwitterのDMかこの記事にコメントしていってください!

 

それでは