この記事ではclusterクリエイター・美坂さんがUnityの機能「Light Probe」について解説。ライトベイクで生成した「Bakedライト」をアバターなどの動的オブジェクトに当てる方法の基本的な設定を紹介します。
皆様こんにちは、美坂と申します。
この記事ではUnityの「Light Probe」機能を使い、アバターなどの動的オブジェクトに「Bakedライト」を当てる方法について説明します。
ちょっとイメージがしにくいのですが、Light Probe機能とライトベイクによって下記のようにアバターなどに光を当てることができます。
ライトベイクのやり方についてはこちらの記事で紹介しています。

RealtimeライトとBakedライトの違いについて
Light Probeについて説明する前に下準備としてUnityのライト、「Realtime」ライトと「Baked」ライトの違いについて軽く解説します。
UnityではDirectional、Point、Spot、Areaなど様々な種類のライトを使用できます。
※ライトについての詳細はこちらの記事などを参照下さい。

ライトには「Mode」という設定項目があり、「Realtime」「Baked」「Mixed」が選択できます。(※Area Lightは除く)
それぞれの特徴は以下の通りです。
- Realtime
- 背景などの固定された「Staticなオブジェクト」とアバターやアイテム・乗り物などの動く「動的なオブジェクト」両方に影響を与えます。
- リアルタイムで処理されるため動作はやや重いです。
- なおclusterでは同時に2つまでしか使用できません。
- Baked
- 「Staticなオブジェクト」のみに影響を与えます。
- このライトの影響は全て事前計算されて処理されます。つまりライトベイクによる事前計算が必要です。
- cluster上での処理は軽くなりますが、制作時における事前計算は複雑なシーンではかなり重い処理になります。
- 動的オブジェクトにはLight Probeを経由しないと影響を与えられません。
- Mixed
- 両方を合わせた設定です。今回は詳細を割愛します。
clusterでは負荷を抑えるため「Realtime」設定のライトを2つまでしか使用できないという仕様になっています。
そのためワールドに設置する大部分のライトは「Baked」設定にする必要があります。
そして前述の通りBakedなライトは動的なオブジェクトに直接影響を与えることが出来ません。
動的オブジェクトにBakedライトの影響を与えるには「Light Probe」を使用します。
Light Probeとは
Bakedライトの影響を事前に計算して動的なオブジェクトを照らす仕組みです。
空間上に配置された複数座標でのライティング情報を事前計算・記録し、その間の空間でのライティング情報は補間して計算します。
これによりLight Probeが配置された空間内全域について、動的オブジェクトへのライティング情報を少ない負荷で得ることが出来ます。
Light Probeの実例
これは私制作のワールド「新・美作メカ美の展示場」でのLight Probe配置の様子です。
(まだ制作中のワールドですが……)

紫のラインで繋がっている黄色の球がLight Probeです。
このようにワールド全体に敷き詰めるように配置します。
配置されたそれぞれの座標について光の状態が記録されています。

アバターの明るさを比較してみた様子です。
暗めのライトだったのでちょっと判りづらいですが、Light Probeの効果でBakedなライトの影響を受けています。
Light Probeの配置方法
では実際にLight Probeを配置する手順を解説します。
まず空のGame Objectを作成します。
メニュー
「GameObject > Create Empty」
から作成します。
名前はわかりやすくLightProbeなどに変更しておきましょう。

作成した空オブジェクトを選択した後
Inspectorの下部の「Add Component」を押して
「Rendering > Light Probe Group」を追加します。

「Edit Light Probes」を押すとLight Probeの編集モードに入れます。

編集モード中はInspectorの表示が切り替わり、下部のボタンなどが操作可能になります。
- Selected Probe Position
- 選択中のProbeの座標です。※複数選択している場合は正しく表示されません。
- Add Probe
- Probeを追加配置します。
- Select All
- Probeを全て選択します。
- Delete Selected
- 選択中のProbeを削除します。
- Duplicate Selected
- 選択中のProbeを複製します。
編集モード中はScene View上でLight Probeのみが操作できるようになります。

黄色の球がLight Probeです。
1つのLight Probe Groupの中には複数のLight Probeを配置可能です。
マウスドラッグで複数Probeを選択したりも可能です。
編集モードから抜けるにはもう一度「Edit Light Probes」ボタンを押すか、Hierarchyで他のオブジェクトを選択してください。
なおシーン内全てのProbeを1つのLight Probe Groupに格納する必要はありません。
大規模なシーンの場合は適度に別Groupに分けて管理したほうが良いかもしれません。
Light Probeを配置し終わったらライトベイクを行います。
ライトベイクすることでLight Probe各座標でのライト情報が事前計算されます。
メニュー
「Window > Rendering > Lighting Settings」より
Lighting設定ウインドウを表示します。

色々と項目がありますが、とりあえず一番下「Generate Lighting」ボタンを押して下さい。
シーン内のLight Probeそれぞれの座標でのライティング情報が計算・記録されます。(シーンが複雑な場合数十分以上かかる場合もあります。)
これでアバターやアイテムなど動的オブジェクトもBakedライトの影響を受けられるはずです。
お疲れ様でした!
効果的な配置の仕方
シーンでどのようにLight Probeを配置したら良いかを簡単に解説します。やり方は色々あるので、慣れてきたらベストな配置を模索してみてください!

建物内の配置例です。部屋の隅や中心などに配置しています。
主に部屋や区画を満たすように格子状に配置します。

こちらは屋外での配置例です。
多いほど精密にライトの情報を再現することは出来るのですが、あまり密に配置する必要はありません。
数が多すぎるとワールドが重くなる原因になります。明るさが特徴的な部分などだけ多めに配置すると良いです。変化の少ない部分については減らしてしまってOKです。

この例では明るい場所と暗い場所に配置して動的オブジェクトに明暗が出るようにしています。
逆に同じ明るさの部分のみに配置するとフラットな明るさを演出することもできます。
イメージに合わせて配置を色々試してみるのも良いかもしれません。

Light Probeは立体的に配置する必要があります。
動的なオブジェクトが移動できる範囲が立体的に囲まれるように配置しましょう。
地面に一通り配置してから複製して高さを上げると楽に設定できます。

1つ注意点です。
Light ProbeがStaticなオブジェクトと重なっているとライトからの光が届かず、その座標のライト情報は「真っ暗」であると見なされてしまいます。
そうなるとその座標周囲で動的オブジェクトが不自然に暗くなってしまったりします。
Staticなオブジェクトと重ならないよう注意して配置しましょう。
つまずきポイント
Light Probeを扱う上でつまずきやすい点を補足説明しておきます!
Scene Viewで表示されない場合

Scene Viewでこちらの「Gizmos」が無効にされているとLight Probeが表示されません。
編集の際はクリックして「有効」にしましょう。ちょっと明るくなった状態が「有効」の状態です。

更に横の下矢印に詳細な設定項目もあります。
アイコンのサイズが小さすぎる場合、「Light Probe Group」のチェックが外れていた場合などにも表示されません。ご注意下さい。
操作不能な場合
Light Probeの編集モードに入ってもScene View上でLight Probeを選択できない状態になる場合があります。
その場合は何故かUIのLayoutを変更することで治る場合があります。
メニュー
「Window > Layouts」から
レイアウトを選択し直して下さい。
こちらはUnity側の不具合のようです。少々理不尽な挙動ですが将来的に修正される事を期待しましょう……。
Light Probeが適用されない
もし動的オブジェクトにLight Probeが適用されない場合はメッシュレンダラーの設定の確認をしてみてください。
最後に
以上、Light Probeについて解説しました。
Light Probeを設定することでより細かい光の表現・演出などが可能となります。
是非色々と試してみて下さいね!