ライトプローブをシーンに配置するには、Light Probe Group (ライトプローブグループ) コンポーネントをアタッチしたゲームオブジェクトを使う必要があります。ゲームオブジェクトに Light Probe Group コンポーネントを加えるには、 Component -> Rendering -> Light Probe Group の順に選択します。
シーン内のどんなゲームオブジェクトにでも Light Probe Group コンポーネントを加えることができます。ただし、プロジェクトから誤って削除する可能性を減らすために、新しい空のゲームオブジェクト (GameObject > Create Empty) を作成し、それに Light Probe Group コンポーネントを追加することをお勧めします。
プロパティ | 機能 |
---|---|
Edit Light Probes | ライトプローブグループを変更するには、Edit Light Probes ボタンをクリックして編集を有効にします。これにより、ライトプローブだけを移動し編集できるようになるので、作業が終わったら忘れずに無効にする必要があります。Edit Light Probes を有効にしている間は、Unity のゲームオブジェクトや他の要素を移動、編集することはできません。 |
Show Wireframe | このプロパティを有効にすると、シーンビューにライトプローブグループのワイヤーフレームが表示されます。無効にすると、Unity はライトプローブの点のみを表示し、それらを接続するワイヤフレームは表示しません。 |
Remove Ringing | このプロパティを有効にすると、シーンからライトプローブの輪状アーティファクトが自動的に削除されます。詳細は、このページ後半の 輪状アーティファクト を参照してください。 |
Selected Probe Position | シーン内の選択したライトプローブの X、Y、Z 座標を取得します。このプロパティは読み取り専用です。 |
Add Probe | ライトプローブグループにライトプローブを追加します。 |
Select All | ライトプローブグループ内のすべてのライトプローブを選択します。 |
Delete Selected | 選択したライトプローブをライトプローブグループから削除するには、これをクリックします。 |
Duplicate Selected | これをクリックすると、選択したライトプローブを複製します。 |
特定の状況下では、ライトプローブに輪状のアーティファクト (Ringing と呼ばれます) が出現します。これは、ライトプローブの周囲のライトに大きな違いがある場合によく発生します。例えば、ライトプローブの片側に明るいライトがあり、反対側にライトがない場合、ライトの強度は後ろ側で “オーバーシュート” します。このオーバーシュートは後ろ側にライトの点を発生させます。
これに対処するにはいくつかの方法があります。
ライトプローブグループを編集するとき、ゲームオブジェクトと同様に個々のライトプローブを操作できます。ただし、ライトプローブはゲームオブジェクトではありません。それらは Light Probe Group コンポーネント内の一揃いの点です。
新しいライトプローブグループの編集を開始するときは、下のようなキューブ内に配置された 8 つのプローブから成るデフォルトの配置から始めます。
Light Probe Group インスペクターの制御を使用して新しいプローブの位置を加えることができます。プローブはシーン内で黄色のスフィアで表示され、ゲームオブジェクトと同じ方法で配置できます。また、一般的な “複製” のキーボードショートカット (ctrl+d/cmd+d) を使ってプローブを個別、または、グループで選択し複製できます。
ライトプローブの編集が終了したら、ライトプローブグループの編集モードを無効にしてください。そうすることで、通常どおりシーンのゲームオブジェクトを編集したり、移動したりすることができます。
通常、オブジェクトの表面全体にわたって連続的な解像度を持つライトマップとは異なり、ライトプローブ情報の解像度は、ライトプローブの位置をどれくらい密に詰め込むかによって定義されます。
ライトプローブが保存するデータの量と、ゲームのプレイ中に実行する計算量を最適化するためには、通常、可能な限り少ないライトプローブを配置するのが一般的です。 ただし、ある空間から別の空間へのライトの変化を記録するのに十分なライトプローブを置く必要があります。つまり、複雑なライトやコントラストの強いライトの領域にはライトプローブをより密なパターンで配置し、ライトがあまり変化しない領域では、ライトプローブの間隔を広げて配置します。
上の例では、ライトプローブは、コントラストとカラーの変化が大きいビルの近くやビル間ではより密に置かれ、道路沿いはライティングがあまり変化しないので広い間隔で置かれています。
ライトプローブを配置する最も簡単な方法は、それらを規則的な 3D グリッドパターンに配置することです。この設定はシンプルで効果的ですが、必要以上に多くのメモリを消費する可能性があり、余分なライトプローブが多く配置されることがあります。例えば、上のシーンでは、道路に沿って多数のプローブが配置されていれば、リソースの無駄になります。道路の距離によってライトがあまり変化しないので、多くのライトプローブは近隣のライトプローブとほとんど同じライトのデータを格納します。このような状況では、より数の少ないライトプローブで、間隔をあけてこのライティングデータを補間する方がはるかに効率的です。
ライトプローブは個々には大量の情報を保存しません。技術的な観点からいうと、各プローブはサンプルされた点から見たビューの球面的なパノラマの HDR 画像で、球面調和関数 L2 を使用してエンコードされており、27 の浮動小数点値として格納されます。 ただし、何百ものプローブを含む大規模なシーンではそれらが累積することもあり、必要以上に密集したライトプローブでは、ゲームの大量のメモリが無駄になる可能性があります。
ゲームが 2D 平面 (例えば、道路上で走り回る車など) で行われるものであっても、ライトプローブは 3D のボリュームを持つ必要があります。
つまり、点が並ぶ垂直方向の “レイヤー” が少なくとも 2 つ必要です。
下の例で、左の図ではライトプローブは地面の表面だけに配置されています。これでは良いライティングの結果を得られません。なぜなら、このライトプローブからでは感知できる四面体の体積を計算できないからです。
右の図ではライトプローブは 2 つのレイヤーに配置されています。一部は地面の高さに、その他はもっと高い位置にあるため、それらを合わせて 3D のボリュームを形成し、多くの四面体ができます。こちらは良い配置です。
Enlighten Realtime Global Illumination makes it possible for moving lights to cast dynamically bounced light on static GameObjects.
When you use Light Probes along with Enlighten Realtime Global Illumination, it is also possible for moving lights to cast dynamic bounced light on moving GameObjects. The quality of the resulting lighting depends on how your Light Probes are positioned, and therefore it is important to position them carefully.
A Light Probe captures the indirect lighting at its position in space. In order to faithfully capture the lighting environment, you must place more probes in areas where you expect more variation in the lighting. For example, you may need many probes in areas with moving lights or many occluders. In areas with little or no lighting variation, you can place fewer probes to save on memory and computation resources.
Normally only a few Light Probes are needed in large areas of static light. However, if you plan to have moving lights within this area of static light, and you want moving objects to receive accurate bounced light from these moving lights, you need a dense network of Light Probes within this area to provide sufficient accuracy. The size and range of your lights, how fast these lights move, and the size(s) of the moving objects receiving dynamic light determine how you space your Light Probes.
ライトプローブ位置の選択は、ライトプローブが補間されることを考慮して行う必要があります。ライトプローブが適切にシーンのライトの変化を包含しないと問題が発生します。
下の例は、両側に 2 つの明るい街灯があり、中央に暗い領域がある夜間のシーンを示しています。ライトプローブが街路灯の近くにのみ配置され、その間にある暗い領域にまったく配置されない場合、街路灯からのライトは暗い中間領域に “漏れ”、移動するオブジェクトに照射します。 これは、ライトの補間が 1 つの明るい点からもう 1 方の明るい点になっているため、その間の暗い領域についての情報がないためです。
リアルタイムライトまたは混合ライトを使用している場合、この問題はあまり目立たないかもしれません。なぜなら、間接ライトだけが暗い領域に “漏れる” からです。完全にベイクしたライトを使う場合に、問題はより顕著になります。なぜなら、このような状況では、動くオブジェクトが受ける直接光もライトプローブで補間されるためです。この例のシーンでは 2 つの街灯がベイクされているので、動くオブジェクトはライトプローブからの直接ライトを受けます。結果を見ると、動くオブジェクト (救急車) は、暗い領域を通過する間も明るく照らされたままです。これは期待した効果ではありません。黄色いワイヤフレームの四面体は、道路の端の明るいところからもう一方の端まで補間が行われていることを示しています。
これは好ましくない結果です。救急車が暗い領域を通る時も明るく照らされたままです。なぜなら、暗い領域にライトプローブが配置されていないためです。
この問題を解決するために、下に示すように、暗い領域にもっとライトプローブを置きます。
シーンでは暗い領域にもライトプローブが配置されています。移動する救急車は、シーンの端からもう一方の端まで移動しながら、暗いライティングを受けます。
2018–10–17 修正されたページ
2017–06–08 公開ページ
Remove Ringing は2018.3 で追加NewIn20183
Light Probes は 5.6 で更新
LightProbeGroup
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.