事前計算されたライティングの利用
Light Probe Proxy Volumes (LPPV) コンポーネント

ライトプローブ

ライトマップによりシーンのリアリティは大きく向上しますが、static でないオブジェクトのレンダリングのリアリティが劣り、結果として分断されてるように見える場合があります。移動しているオブジェクトのライトマップをリアルタイムで計算することはできませんが、 ライトプローブ を使って似た効果を出すことが可能です。以下のように考えられます。ライティングは、プローブの位置で示されるシーン内の重要な点でサンプリングされます。次に、あらゆる地点のライティングは、一番近いプローブから採取されたサンプル間を補間しておおよそを求めます。補間はゲームプレイの中で使用できるぐらいに高速であり、シーン内で動くオブジェクトのライティングと静的なライトマップされたオブジェクトの分断を解消するのに役立ちます。

ライトプローブの追加

Light Probe Group コンポーネント(メニューから Component -> Rendering -> Light Probe Group )はシーンのあらゆるオブジェクトに追加できます。インスペクターで Light Probe Group に新規のプローブを追加できます。プローブはシーンに黄色い球として表示され、ゲームオブジェクトと同じ様に配置できます。選択されたプローブを通常通りのキーボードショートカットで複製できます( Ctrl + d/Cmd + d )。

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

忘れずに ライトまたは暗がりをサンプルしたいところにプローブを配置 してください。シーン内の空間を正しく細分化するためには、プローブが 体積を持つ 必要があります。

もっともシンプルな配置のアプローチは、3D グリッドのパターンに整列することです。このセットアップがシンプルで有効である一方で、メモリを大量に消費しがちです(各ライトプローブは基本的に、球面調和関数を使ってエンコードされたサンプル点からのビューの球状の、パノラマ方式の HDR イメージです)。プローブはプレイヤー、NPC キャラクター、またはその他の動的オブジェクトが実際に移動できる位置にのみ必要ということに注意してください。さらに、ライティング条件はプローブ間で補間されるため、ライトの変化があまりないところにたくさん使用する必要がありません。例えば、均一のシャドウが大きな領域は多くのプローブを必要とせず、また反射オブジェクトから遠く離れた明るい点も同様です。プローブは一般的にライティング状況が急激に変化する場所で必要であり、例えばシャドウエリアの端または風景の中でさまざまな色があるところです。

ゲームのインフラによってはライトプローブの位置を選択することが有効な場合があります。例えば、カーレースでは一般的にトラックの周囲に沿った地点に配置します。これらはプローブの位置のよい候補となる事が多く、エディタースクリプトからこの位置をセットするのが分かりやすいです。同様にして、ナビゲーションメッシュは一般的にプレイヤーが移動できる領域を定義することで、プローブの自動的な配置に役立ちます。

ここではライトプローブをキャラクターが歩けるところ、ただしライティングの変化が大きい箇所に限定して、表面に投影しています。

平らな 2D レベル

現時点では、ライトプローブシステムで完全に平らなプローブ群を焼き込むことはできません。たとえすべてのキャラクターが一平面上で動くとしても、いくつかのプローブの位置をより上部に配置して体積を持たせ、補間が正しく動作するようにします。

 よい例 : これが元のプローブの配置です。キャラクターは斜面をのぼって箱の上にも移動できるため、それらの上部でもライティングをサンプルする方が良いです。
よい例 : これが元のプローブの配置です。キャラクターは斜面をのぼって箱の上にも移動できるため、それらの上部でもライティングをサンプルする方が良いです。
 よい例 : ここでは、キャラクターが平面上でのみ移動できると想定しています。それでも、いくつかのプローブを少し高い位置に配置する事で体積を持たせ、厚みが無くなるのを避けています。
よい例 : ここでは、キャラクターが平面上でのみ移動できると想定しています。それでも、いくつかのプローブを少し高い位置に配置する事で体積を持たせ、厚みが無くなるのを避けています。
 悪い例 : プローブはあまりに平らに配置されていて、非常に長くて薄いセルが生成されるため違和感のある補間結果が得られることになります。
悪い例 : プローブはあまりに平らに配置されていて、非常に長くて薄いセルが生成されるため違和感のある補間結果が得られることになります。

ライトプローブの使用

メッシュがプローブシステムからライティングを受けるために、Mesh Renderer の Use Light Probes オプションを有効化する必要があります。

プローブによる補間を行うためには、ライトを受けるメッシュの位置を表す空間上の点を決める必要があります。デフォルトでは、メッシュのバウンディングボックスの中心が使用されますが、 Transform を Mesh Renderer の Anchor Override プロパティーにドラッグすることで、これを上書きすることができます(代わりにこの Tranform の位置が、補間点として使用される事になります)。これは、オブジェクト内に分離した二つの隣接するメッシュがある場合には、便利かもしれません。両方のメッシュがバウンディングボックスの位置にもとづいて別々にライティングされている場合、ライティングはそれらが交差する位置で不連続となります。同じ Transform (例えば親または子オブジェクト)を両方の Mesh Renderer の補間点として使用する事で、これを防止できます。

もう 1つのオプションは、Proxy Volume を使用するために、Light Probe Blend Mode オプションを設定し、追加の LightProbeProxyVolume コンポーネントを使って、補間されたライトプローブのグリッドを使用する方法です。LightProbeProxyVolume コンポーネントは補間されたライトプローブの 3D グリッドをバウンディングボリュームの内側に生成します。バウンディングボリューム内では、グリッドの解像度をユーザーが指定できます。補間されたライトプローブの球面調和相互効果は 3D テクスチャへと更新されます。3D テクスチャは、アンビエントライトの拡散に対する効果を計算するために、レンダリング時にサンプリングされます。これにより、空間的なグラデーションが加えられ、ライトマップを使用できない大きな動的オブジェクト、パーティクルシステム、スキンメッシュオブジェクトなどに利用できます。

ライトプローブを使用しているオブジェクトが、Light Probes Scene ビューで、アクティブで選択されているオブジェクトでギズモが有効であった場合、補間されているプローブはプレビューのためにその上にレンダリングされます。補間されているプローブはオブジェクトのレンダリングに使用されているものであり、4 つの細い青い線(プローブの体積の外にあるときは 3 つ)で、補間する元となっている複数のプローブと繋がっています。

ライトマップモード

Unity5.3 のデフォルトの動作は、すべての static ライティングは( ‘Mixed’ ライトマッピングモードに設定されたライトを含めて)ライトプローブに焼き込まれます。

Unity 5.4 のライトプローブは、 ‘Mixed’ ライトからの間接光以外の、スカイライト、発光マテリアル、 ‘Baked’ ライトなど、あらゆる光を保存します。それにより、オブジェクトをリアルタイムに ‘Mixed’ ライトで照らす事ができるので、リアルタイムシャドウのような動的な要素では優位ですが、一方、間接光を受けるという事は、シーンにそれらのライトが追加されるという事でもあります。

事前計算されたライティングの利用
Light Probe Proxy Volumes (LPPV) コンポーネント