LightProbeは我らに光を与える
前回 (Unityで焼き込み) のつづきです。 今回は、LightProbeを勉強していきます。
なぜLightProbeを使うのか
前々回の記事(Unity5でリアル表現を学び始める)でも少し触れましたが、ライティング処理の事前計算である「焼き込み」の効果は動くオブジェクトに対しては適用されません。そんなオブジェクトにはLightProbeという機能を使う必要があります。
部屋を改装
LightProbeの効果を確認するため、部屋を改装します。(主に光関係。)
今回は光源(PointLight)を追加しました。光の色も変えていて、イエロー・ブルー・ピンクにしています。
動くモノ
白い物体だと変化が見やすいと思い、白い球を転がすことにします。(決して手抜きではない)
メニューから「GameObject - 3D Object - Sphere」を選択します。SphereはデフォルトでLightProbeの効果を受けるようになっているので、設定などはそのままです。
今の状態では、球が光の影響を受けていません。(色が変)
LightProbeを設置
メニューから「GameObject - Light - Light Probe Group」と選択していきます。すると、線で繋がった8個の玉が出現します。これらの玉をLightPtobeと呼ぶそうです。この玉を増やしつついい感じに配置して行くのですが、その方法は公式マニュアルやテラシュールブログを参考にします。
docs.unity3d.com
tsubakit1.hateblo.jp
こんな感じで配置しました。
光源には必ず配置し、光と影の境界っぽい所になんとなくで配置しました。LightProbeに光情報を埋め込むため、Lightingウインドウから「Build」ボタンを押します。
すると・・・
LightProbeの成果
球の色が周りに馴染んでます!これを動かすと・・・
近くの光の色が表面に映っているのがわかります。そして、暗い所はしっかり暗くなっています。これで光が動くオブジェクトにも影響するようになりました!
LightProbeのしくみ
オブジェクトの近くのLightProbeを4個取得し、オブジェクトの位置とLightProbeの位置から光のあたり具合を計算しています。公式マニュアルによると、体積ができるような形が理想形なので、上にもいくつか配置すると良いらしいです。
サンプル
Webで動くサンプルを用意しました。以下からプレイしてみて下さい。
https://eviltwo.github.io/app/Lighting/
クリックで球を動かします。ボタンでカメラの位置を変えたり、焼き込み効果をON/OFFしたりして効果を確認できます。