[Unity] Light ProbeとDynamic形状

  • UnityでLight Probeを使用

Unity 2017.2.0f3を使用しています。
前回まではStaticな地面と建物を置いて、全体をライトマップしていました。

この室内に家具などを置いていくことにします。
その際にDynamicとして形状を置き、移動できるようにします。

今まで作成して、Unityに持っていった皿/リンゴ/鉢植えのほか、
新しく木のテーブルをfbxに出力してUnityに持っていきました。
Shade3Dでは以下のようにモデリングしています。

Unityのシーンに家具類を配置

室内に、机、皿、リンゴ、鉢植えをDynamicとして置いてみました。

配置した形状は全体的に白く、建物から大きく浮いてしまってます。

これは、主に間接照明としてのライティングが正しく反映されていないために起きる現象です。
建物を通り越して、空であるSkyboxとしての光が反映されている状態になります。

Light Probeを配置

Dynamicな形状に対しては「Light Probe」(ライトプローブ)というのを配置して空間の光の情報をキャッシュし、
形状表面に照射される光を計算する場合に、近くのライトプローブから光の情報を集めます。

Hierarchyウィンドウの「Create」-「Light」-「Light Probe Group」を選択すると、Light Probeがシーンに配置されます。

はじめは8頂点が表示されます。
それぞれの黄色の位置に光の情報をキャッシュすることになります。
Inspectorウィンドウの「Light Probe Group」コンポーネントで「Edit Light Probes」ボタンを押すことで、
ライトプローブの選択や追加/複製/削除を行うことができます。
ここでは、室内の壁の端や中央にライトプローブを以下のように配置しました。

4x3x3のLight Probeを配置しています。
Hierarchyウィンドウでの「Light Probe Group」のGameObjectを増やすのではなく、
Inspectorウィンドウで「Edit Light Probes」ボタンを押して選択したLight Probeを複製するようにします。
すでにライトマップのベイクが完了済みの場合は、Light Probeの計算自身はすぐに終わります。
結果は以下のようになりました。
左がLight Probe未使用、右がLight Probeを有効にしたものです。

ずいぶんよくなりましたが、机がまだシーンから浮いている感じです。

机をStaticにする

では、机は動かさないということで机だけStaticにしてみます。
形状をStaticにすると、再度ライトマップの計算が行われ、Reflection Probe、Light Probeも再計算されます。

これでずいぶんと落ち着きました。

ただ、テーブルの上の食器やリンゴが明るいです。
このシーンの場合は窓から入る光と影になる部分の輝度差が極端であるので、Light Probeを増やすことにしました。

4x3x3のLight Probeの配置を、4x3x4と増やしました。
今度こそ思い通りになったようです。

Light Probeは、光がさえぎられる壁付近や、光と影が極端に変わる箇所に配置すると効果的です。
確認のため、鉢植えを複製し動かしてみました。

以上で、Shade3DからUnityに形状を渡した際のライティングやポストエフェクト含めた調整は一通り完了しました。

最後に、Unity上の最終的な室内と室外の画像を何点か出しておきます。


まとめとして、リアルタイムで必要なのは以下の要素となります。

  • 形状をDynamic/Staticに分ける
  • Staticな形状でライトマップ計算、ベイク
  • Staticな形状の映り込みを「Reflection Probe」でキャッシュ
  • 「Light Probe」でシーンの光の情報をキャッシュ
  • イメージエフェクトとしてのPost Processing Stackの使用

今回はまだアニメーションについては説明していません。
それらについては、Shade3D側のアニメーション解説を行ってから、
再びUnityにアニメーション付きの情報を渡す内容を記載できればと思います。

カテゴリー: Unityに形状を渡す