Machio_Kinniku’s diary

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

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

最初の章はこちら↓

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

前回の章はこちら↓

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

次の章はこちら↓
執筆中

 

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

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

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

 

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

 

第2章(GI(Global Illumination))

第2章の内容は、GI(Global Illumination)に関してです。

よりリアルで表現豊かな光を表現するのに必要不可欠なシステムです。

 

GI(Global Illumination(大域照明))とは

・直接光と間接光を取り入れる為のシステム。

・直接光だけではなく、反射や環境光などの間接光も含めて"大域的"(Global)に表現するということ

・Static(Lightmap Static)に対して、光をBakeして動作を軽くする。事前計算。

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

☆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にすること

 

まとめ

・GIは豊かな光の表現をするのに必要不可欠。

・RealtimeGI、BakedGIのどちらも静的オブジェクトにのみ適用可で、動的オブジェクトには使えない。使いたい場合はLightProbeを使用すること。

 ・RealtimeGIを使用しない場合はoffでOK

終わりに

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

RealtimeGIは「リアルタイム!」といいつつ、RealtimeGI LightmapでBakeしているので、多少混乱するかもしれません。「"事前計算"リアルタイムGI」と考えたら分かりやすいかも。更新されていくBakedLightmapみたいな。分かりにくいですね。

続章のEmissionの項目でもう少し説明します。

続章をお楽しみに。

 

追記

BakedGIは意識せずとも、LightModeがBakeのLightがシーンにあれば使用しますが、RealtimeGIは意識しないと使用する場面が限られるかな?
ScriptやAnimationでLightを制御したりすることがない場合はoffで切っておくとよいかも。