ライティングウィンドウ
ライトマップパラメータ

ライトプローブ

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

ライトプローブの追加

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

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

忘れずにライトまたは暗がりのサンプルとしてとりたいところに配置してください。シーン上で Subdivision が正しく動作するためにはプローブは 体積を持つ 必要があります。

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

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

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

平らな 2D レベル

現時点では、ライトプローブシステムにより完全に平らなプローブの雲を焼き込みできません。もしすべてのキャラクターが平面でのみ動いたとしても、それでもいくつかのプローブをより高いレイヤーに配置して、体積を持たせて補間が正しく動作するようにする必要があります。

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

ライトプローブの使用

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

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

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

デュアルライトマップとシングルライトマップモードの比較

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

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

ライティングウィンドウ
ライトマップパラメータ