テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Unity5のリアルタイムGI と LightProbe

光の当たっていない箇所は本来は暗くなるのですが、Unity5よりGI(グローバルイルミネーション)効果が導入され、拡散反射光も光の計算に取り入れられるようになりました。

f:id:tsubaki_t1:20150802232014g:plain

GI有りとGI無しの動作はこんな感じです。GI有は光が反射し奥まで照らしていますが、GI無しだと光が反射せず光の当たっていない箇所が暗く表現されています。

GIなし

f:id:tsubaki_t1:20150802233844p:plain

GIあり

f:id:tsubaki_t1:20150802233918p:plain

ついでにGIありのスポットライトとGI無しのスポットライトの比較です。GIありの場合はライトの範囲外もうっすらと反射光で見えますが、GI無しの場合はライトが当たっている箇所のみが見えるようになっています。

f:id:tsubaki_t1:20150803004103g:plain

ここで問題なのがGIはStaticなオブジェクトにしか適応する事が出来ない点です。なにせ事前計算でも大変な処理です。

下の画像では、右にスタティックなオブジェクト、左にダイナミックなオブジェクトを配置しました。右のStaticなオブジェクトはGIの効果を受けているため薄暗く見えますが、左のダイナミックなモデルはGIの効果を受けないため、影の部分が明確に暗く表現されています。

f:id:tsubaki_t1:20150802233453p:plain

 

この問題は、UnityではLightProbeを使う事で回避します。GIによる光の影響をLightProbeに格納することで、ダイナミックなオブジェクトもGIの影響を受けるようになる訳です。

f:id:tsubaki_t1:20150802234747p:plain

このLightProbeは光が動いた場合も有効です。たとえば中央のスフィアと周辺を回っているスフィアは同じくダイナミックなオブジェクトですが、ライトの近くのマテリアルカラーに従ってステージ上に反射するオブジェクトの色が変化しています。

f:id:tsubaki_t1:20150803001222p:plainf:id:tsubaki_t1:20150803001026g:plain

LightProbeを使用しない場合は、Use Light Probesのチェックを外します。

f:id:tsubaki_t1:20150803002701p:plain

そもそもDynamic GIを使用したくない場合は、メニュー>Window > Lighting から Precomputed Realtime GI や Baked GI を外すと良さそうです。

その場合は、Ambient Light(Environment Light)でライトの輝度を少し上げておくと良いかもしれません。

関連

tsubakit1.hateblo.jp