Version: 5.6
ライトプローブ - 技術的な情報
スクリプトを使ったプローブの配置

ライトプローブの配置

ライトプローブをシーンに配置するには、ゲームオブジェクトに Light Probe Group コンポーネントをアタッチして使用します。Light Probe Group コンポーネントを加えるには、 Component -> Rendering -> Light Probe Group の順に選択します。

Light Probe Group コンポーネントはシーンのすべてのオブジェクトに加えることができます。ただし、新しい空のゲームオブジェクトに加えるのが最善です。

Light Probe Group コンポーネント
Light Probe Group コンポーネント

Light Probe Group には 編集モード があり、オンまたはオフにできます。ライトプローブを加えたり、移動、削除を行う場合は、 Edit Light Probes ボタンを押して Light Probe Group の編集モードを切り替えなくてはなりません。

Edit Light Probes ボタン
Edit Light Probes ボタン

Edit Light Probes モードを使用している場合、ゲームオブジェクトと同様の方法で個々のライトプローブを操作できます。ただし、個々のプローブはゲームオブジェクトではありません。それらは、一組の点として Light Probe Group コンポーネントに格納されます。

新しい Light Probe Group を編集し始める場合、下の図のようにデフォルトのキューブの形状に編成された 8 つのプローブで開始します。

ライトプローブのデフォルト形状
ライトプローブのデフォルト形状

Light Probe Group インスペクターの制御を使用して新しいプローブの位置を加えることができます。プローブはシーン内で黄色の球で表示され、ゲームオブジェクトと同じ方法で配置されます。また、一般的な「複製」のキーボードショートカット (ctrl+d/cmd+d) を使ってプローブを個別、または、グループで選択し複製できます。

プローブを編集し終わったら、Light Probe Group の編集モードを オフ にするのを忘れないでください。そうしないと、通常のゲームオブジェクトの移動や操作ができません。

ライトプローブ位置の選択

通常、オブジェクトの表面全体にわたって連続的な解像度を持つライトマップとは異なり、ライトプローブ情報の解像度は、プローブの位置をどれくらい密に詰め込むかによって完全に定義されます。

ライトプローブによって保存されるデータの量と、ゲームのプレイ中に実行される計算量を最適化するためには、可能な限り少ないライトプローブを配置するのが一般的です。 ただし、ある空間から別の空間への光の変化をたどるのに十分なレベルのプローブを置く必要があります。つまり、複雑な光やコントラストの強い光の領域にはライトプローブをより密なパターンで配置し、光があまり変化しない領域では、ライトプローブの間隔を広げて配置します。

簡単なシーンの周囲で異なる密度で配置されるライトプローブ
簡単なシーンの周囲で異なる密度で配置されるライトプローブ

上の例では、プローブは距離が近い範囲とコントラストとカラーの変化が大きいビルの間ではより密に、道路沿いはライティングがあまり変化しないので広い間隔で置かれています。

プローブを配置する最も簡単な方法は、それらを規則的な 3D グリッドパターンに配置することです。この設定はシンプルで効果的ですが、必要以上に多くのメモリを消費する可能性があり、余分なプローブが多く配置されることがあります。例えば、上記のシーンでは、道路に沿って多数のプローブが配置されていれば、リソースの無駄になります。道路の距離によって光があまり変化しないので、多くのプローブは近隣のプローブとほとんど同じライティングデータを格納します。 このような状況では、書く庵下拡散したより少ないプローブ間でこのライティングデータを補間する方がはるかに効率的です。

ライトプローブは個々には大量の情報を保存しません。 技術的な観点からいうと、各プローブはサンプルポイントから見たビューの球面のパノラマの HDR 画像で、球面高調波 L2 を使用してエンコードされており、27 の浮動小数点値として格納されます。 ただし、何百ものプローブを含む大規模なシーンではそれらが累積することもあり、必要以上に密集したプローブがゲームで大量のメモリを浪費する可能性があります。

体積の作成

ゲームが 2D 平面 (例えば、道路上で走り回る車など) で行われるものであっても、ライトプローブは 3D の体積を持つ必要があります。

つまり、ポイントが並ぶ垂直方向の「レイヤー」が少なくとも 2 つ必要です。

下の例で、左の図ではプローブは地面の表面だけに配置されています。これでは 良いライティングの結果を得られません 。なぜなら、このライトプローブからでは感知できる四面体の体積を計算できないからです。

右の図ではプローブは 2 つのレイヤーに配置されています。一部は地面の高さに、その他はもっと高い位置にあるため、双方合わせて 3D の体積を形成し、多くの四面体ができます。こちらは 良い 配置です。

左の図はライトプローブの位置選択の悪い例を示しています。プローブによって作られる体積に高さが生じないからです。右の図はライトプローブの位置選択の良い例を示しています。
左の図はライトプローブの位置選択の悪い例を示しています。プローブによって作られる体積に高さが生じないからです。右の図はライトプローブの位置選択の良い例を示しています。

動的 GI のためのライトプローブの配置

Unity のリアルタイム GI を使うと、静的な 景観に対し移動するライトから動的な反射光を投げることが可能です。ただし、ライトプローブを使う場合、移動するライトから 移動するゲームオブジェクト に動的な反射光を受けることも可能です。

そのため、ライトプローブは 2 つのとても似通った、しかし異なる機能を持っています。ライトプローブは静的なベイクしたライトを格納し、ランタイムに動的リアルタイムグローバルイルミネーション (GI、または反射光) のサンプルポイントを示し、移動するオブジェクトにライティングの効果を与えます。

したがって、動的な移動するライトを使用していて、リアルタイムの反射光を動いているゲームオブジェクトに対して投げたい場合は、ライトプローブをどこに配置するか、それらをどのように密集させるかの選択に影響を与える可能性があります。

この状況を考慮するときに重要なのは、比較的変化のない 静的ライト の広い領域には、たった 2–3 のプローブを配置するだけでいい場合があります。なぜなら、そのライトは広い範囲にわたり変化しないからです。ただし、この領域内で 動くライト を使用し動くオブジェクトに対して反射光を投げようとようと計画している場合、この領域内でより密なライトプローブのネットワークが必要になります。そうすることにより、十分高いレベルの正確さでライトの範囲とスタイルを合わせることができます。

どのくらいの密度でプローブを配置するかは、ライトのサイズと範囲、移動する速度、反射光を受ける移動オブジェクトの大きさによって異なります。

ライトプローブの配置に関する問題

ライトプローブ位置の選択は、プローブが補間されることを考慮して行う必要があります。プローブが適切にシーンのライティングの変化を包含しないと問題が発生します。

下の例は、両側に 2 つの明るい街灯があり、中央に暗いエリアがある夜間のシーンを示しています。ライトプローブが街路灯の近くにのみ配置され暗い場所にまったく配置されない場合、ランプからの照明は、移動するオブジェクトに対して暗い切れ目を横切って「流出」します。 これは、ライティングが 1 つの明るい点から別の明るい点まで補間されているため、その間の暗い領域についての情報がないためです。

この図は、適切でないライトプローブの配置を示しています。2 つの街灯の間の暗い領域にはプローブがありません。そのため、暗い領域はまったく補間されません。
この図は、適切でないライトプローブの配置を示しています。2 つの街灯の間の暗い領域にはプローブがありません。そのため、暗い領域はまったく補間されません。

リアルタイムライトまたは混合ライトを使用している場合、この問題はあまり目立たないかもしれません。なぜなら、間接 ライトだけが切れ目を越えて流出するからです。 完全にベイクしたライトを使う場合に、問題はより顕著になります。なぜなら、このような状況では、動くオブジェクトが受ける直接光もライトプローブで補間されるためです。この例のシーンでは 2 つの街灯がベイクされているので、動くオブジェクトはライトプローブからの直接ライトを受けます。結果を見ると、動くオブジェクト (救急車) は、暗い領域を通過する間も明るく照らされたままです。これは好ましくありません。 黄色いワイヤフレームの四面体は、道路の端の明るいところからもう一方の端の明るいところまで補間が行われていることを示しています。

これは好ましくない結果です。救急車が暗い領域を通る時も明るく照らされたままです。なぜなら、暗い領域にライトプローブが配置されていないためです。

この問題を解決するために、下に示すように、暗い領域にもっとプローブを置きます。

シーンでは暗い領域にもプローブが配置されています。移動する救急車は、シーンの端からもう一方の端まで移動しながら、暗いライティングを受けます。

今度は、救急車は、意図通りシーンの中心部で暗いライティングを受けます。


ライトプローブ - 技術的な情報
スクリプトを使ったプローブの配置