evil fridge

冷蔵庫に入れたが最後。

LightProbeは我らに光を与える

f:id:daiki-evilone:20170131032028p:plain:left:w120 前回 (Unityで焼き込み) のつづきです。 今回は、LightProbeを勉強していきます。

なぜLightProbeを使うのか

前々回の記事(Unity5でリアル表現を学び始める)でも少し触れましたが、ライティング処理の事前計算である「焼き込み」の効果は動くオブジェクトに対しては適用されません。そんなオブジェクトにはLightProbeという機能を使う必要があります。

部屋を改装

LightProbeの効果を確認するため、部屋を改装します。(主に光関係。)
今回は光源(PointLight)を追加しました。光の色も変えていて、イエロー・ブルー・ピンクにしています。
f:id:daiki-evilone:20170131003911p:plain:w300

動くモノ

白い物体だと変化が見やすいと思い、白い球を転がすことにします。(決して手抜きではない)
メニューから「GameObject - 3D Object - Sphere」を選択します。SphereはデフォルトでLightProbeの効果を受けるようになっているので、設定などはそのままです。
f:id:daiki-evilone:20170131004027p:plain:w300
今の状態では、球が光の影響を受けていません。(色が変)

LightProbeを設置

メニューから「GameObject - Light - Light Probe Group」と選択していきます。すると、線で繋がった8個の玉が出現します。これらの玉をLightPtobeと呼ぶそうです。この玉を増やしつついい感じに配置して行くのですが、その方法は公式マニュアルやテラシュールブログを参考にします。
docs.unity3d.com tsubakit1.hateblo.jp こんな感じで配置しました。
f:id:daiki-evilone:20170131004250p:plain:w300
光源には必ず配置し、光と影の境界っぽい所になんとなくで配置しました。LightProbeに光情報を埋め込むため、Lightingウインドウから「Build」ボタンを押します。
f:id:daiki-evilone:20170119233451p:plain
すると・・・

LightProbeの成果

f:id:daiki-evilone:20170131004746p:plain:w300
球の色が周りに馴染んでます!これを動かすと・・・ f:id:daiki-evilone:20170131005413g:plain:w300
近くの光の色が表面に映っているのがわかります。そして、暗い所はしっかり暗くなっています。これで光が動くオブジェクトにも影響するようになりました!

LightProbeのしくみ

オブジェクトの近くのLightProbeを4個取得し、オブジェクトの位置とLightProbeの位置から光のあたり具合を計算しています。公式マニュアルによると、体積ができるような形が理想形なので、上にもいくつか配置すると良いらしいです。
f:id:daiki-evilone:20170131022654g:plain:w300

サンプル

Webで動くサンプルを用意しました。以下からプレイしてみて下さい。
https://eviltwo.github.io/app/Lighting/
クリックで球を動かします。ボタンでカメラの位置を変えたり、焼き込み効果をON/OFFしたりして効果を確認できます。