
Unityのライトプローブの話
Unityで3Dシーンを作るとお世話になるライトプローブ。これが思ったような見た目にならず格闘したお話2本立てです。
ライトマップとライトプローブが合わない
今回使用したシーンは窓が無い閉じた空間です。Progressiveライトマッパーを使用しています。
ライトプローブを配置してベイク、実際にキャラクターを入れて見てみましょう。

暗いですね……。
確認しましたがライトプローブがオブジェクトの内側に埋まったりしているわけではなさそうです。
それぞれのライトプローブがどんな明るさか確かめてみようと思います。Lightingタブの一番下、"Workflow Settings"から"Light Probe Visualization"の設定を変えます。

天井や部屋の中心は良いのですが壁際がやけに暗いです。今回は2か所の数値を変更して解決します。
解決策
Sampleを上げる
見た目の確認のために各サンプルを極端に低い値にしていたのを思い出しました!

はじめにここに手を着けましょう。
ライトプローブに大きく影響を与えるのは"Indirect Samples"です。画像では32ですがこれを512に上げてみます。

ベイク時間は約1分40秒
先ほどよりはよさそうです。でもまだ明るさにバラツキがあるのが気になります。
このままサンプル数を4桁にしてもいいのですがベイク時間が途方もないことになりそうです。
Light Probe Sample Multiplierを上げる
サンプルのところの少し下を見ると、名前にLight Probeと付いたそれらしい項目が目に入ります。
”Light Probe Sample Multiplier”です。
デフォルトの値は4ですので16にしてみます。

これ1枚だけ見てもよくわからないのでgifにして上の画像と比べてみました。

既に明るくなっていたところは変化がわかりづらかったため、隅の部分を切り取ってみました。
光の周り方が滑らかになったようです。
この状態で再びキャラクターを置いて確認してみます。

ライトマップと明るさが揃いました!これで解決です。
他のサンプルも大きい値にして最終版のライトマップのベイクをしましょう。
Contribute GIのチェック
1つ解決しましたがこのままではあまりに記事が短いのでネタを追加します。
「Staticにしたいけどライトマップ使いたくない」というオブジェクトの話です。
小さな植木鉢とかですね。

ライトマップの継ぎ目が汚いです。
なのでライトプローブを使って欲しいのですが……Staticのチェックを外して解決していませんか?
チェックが無いとどうなるか

確かにこのチェックを外すとライトプローブを使用するようになります。しかし同時にグローバルイルミネーションの計算に含まれなくなってしまいます。
試しに植木鉢をピンクに強く発光させて、周りのライトプローブを見てみましょう。

ライトプローブを見るとピンクが全く反映されていません!
何ならライトマップにも反映されません。
周りのオブジェクトに色が付いているように見えるのはリフレクションプローブの影響です。

明確な意図がない限りは"Contribute GI"にチェックを付けることをお薦めします。
どこから選ぶ?
じゃあどうやってチェックを付けたままライトプローブを使うのか?という話になりますが、ちゃんと項目があります。
"Contribute GI"にチェックを入れないと出現しない項目です。

この画像の見たままです。"Recieve Grobal Illumination"です。
ここからライトプローブを選択しましょう。そうすれば"Contribute GI"にチェックを付けて周りに影響しつつ、ライトプローブを使用することが可能になります。

周りのライトプローブ、ライトマップ共にピンクの影響を受けました!
今回はこれでおしまいです。
終わりに
ライトマップの資料は多いけどライトプローブの資料は見かけないなぁと思い記事にしました。
1つ目のライトプローブが暗い問題は実は天井や壁に穴があるだけで多少は軽減されます。屋根も壁もない屋外のシーンなのにライトプローブが暗い場合はマテリアル自体が暗くないかなども確認してください。
2つ目の"Contribute GI"のチェックの話ですが、大抵は小さいオブジェクト=周りへの影響が少ないオブジェクトということでチェックを外せばどうにかなってしまいます。ですので改めて何のためにチェックを入れているのか確認の意味も込めて記事にしました。
これを機にライトマップだけでなくライトプローブ含むグローバルイルミネーションをもう一度調べてみようという気になりました。
ここまで読んでいただきありがとうございました!