Machio_Kinniku’s diary

自分の身の周りで起きているありとあらゆることを書きます。

UnityのLight関連を完全に理解する(第3章)

最初の章はこちら↓

UnityのLight関連を完全に理解する(第0章) - Machio_Kinniku’s diary

前回の章はこちら↓

UnityのLight関連を完全に理解する(第2章) - Machio_Kinniku’s diary

次の章はこちら↓
執筆予定

 

お久しぶりです。マチオです。

今回執筆していく記事はUnityのLight関連についてまとめたものです。

本記事は前章の第2章の続き、お待ちかねの第3章です。

 

※UnityのVersionや色々な事情で、1つのモノに対して複数の名称がついている場合があります。()で括って適当に記述しておきます。

 

第3章(Emission(Emissive))

第3章の内容は、Emission(Emissive Material)に関してです。

発光している物体表現には欠かせない項目です。

 前章のGIを何かある程度知っているコト前庭で記述していきます。

Emission(Emissive Material)とは

 

・光を放つオブジェクトの表現に必要で、Materialで設定することで、暗闇でも見えるようになる

・光源として使用する場合はLightmapStatiにする必要がある(全Staticで静的なオブジェクトにしても良し)

・Emissionの色はAlbedoの色合いに加算されるため、値が大きくなればなるほど、Albedoの色は見えなくなる

☆負荷の大きい間接光の計算を事前に済ませ、実行時にその計算結果を用いる手法。

☆RealtimeGI(Precomputed Realtime GI)とBakedGIの2種類がある。

→どちらも静的オブジェクトにしかBake(事前計算)できない。動的オブジェクトは他オブジェクトに対しての間接光を適用できず、その逆も不可能。しかし、LightProbeを使用すれば可能。


※versionの変化によって、過去Precomputed RealtimeGI(事前計算リアルタイムGI)と呼ばれていたものは、現在RealtimeGIと呼ばれている。

 

1,BakedGI

・build前にLightmapをBakeし、実行時にその計算結果を使用。全て事前計算。

良い点:複雑な影など表現の幅が広がる

悪い点:BakedGIはゲーム実行中にLightの情報を変更することが不可

 ポイント:小物はBakeせずにLightProbeで済ませることで、使用するLightmapを減らせる。時と場合に応じて。

2,RealtimeGI(Precomputed RealtimeGI)

☆ゲーム実行中でも限定的に更新される

☆RealtimeGILightmapというテクスチャにベイクされる。

※RealtimeGIはデフォルトでonになっている為、使用しない場合はoffにすることで処理負荷軽減が可能。

良い点:光源の変化に対応可能

悪い点:光源の瞬時の変化には対応不可能(めっちゃ重くなる)

 

ポイント:使うと良い場面など

・ゆっくり変化してシーンに影響を与える光源に使用する(太陽や"ゆっくり"点滅するライト)

・素早くチカチカする照明などに使用するのは不適切。

・特定の場所でRealtimeGIを使用しないようにするには、LightComponentのIndirectMultiplierを0にすること

 

まとめ

・動的オブジェクトを照らすにはLightProbe

・EmissionはStaticの設定が重要

・Emissionで光をオンオフさせたいものはRealtime、そのまま光り続けるものはBaked

終わりに

第2章の続きということで、第3章です。

自分自身、EmissionのRealtimeとBakedの項目で困ったコトがあったので、ボリュームとしては少ないですが記事としてまとめたかった・・・

Unityの公式ドキュメントの方では、"Realtimeを選択した場合はダイナミックなオブジェクトと静的なオブジェクトどちらもリアルタイムに照らす...”的なコトが記述してあったので少し戸惑いました。おそらく誤訳かな?

 

続章をお楽しみに。

 

追記

Emissionの値は大きすぎると後ほどかけるPPSでの調節が難しくなるので注意です。