パルテア

どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング ライトプローブプロキシボリュームコンポーネント〜

ライト プローブ プロキシ ボリューム (LPPV) コンポーネントを使用すると、ベイクされたライトマップを使用できない大きな動的ゲームオブジェクト (大きなパーティクル システムやスキン メッシュなど) に、より多くの照明情報を使用できます。

デフォルトでは、プローブ照明レンダラーは、シーン内の周囲のライト プローブ間で補間された単一のライト プローブから照明を受け取ります。このため、ゲームオブジェクトの表面全体に一定の周囲照明があります。この照明は球面調和関数を使用しているため回転グラデーションがありますが、空間グラデーションはありません。

これは、大きなゲームオブジェクトまたはパーティクル システムでより顕著になります。ゲームオブジェクト全体の照明はアンカー ポイントの照明と一致し、ゲームオブジェクトが照明グラデーションをまたぐと、ゲームオブジェクトの一部が正しく表示されない場合があります。

ライト プローブ プロキシ ボリューム コンポーネントは、境界ボリューム内に補間されたライト プローブの 3D グリッドを生成します。このグリッドの解像度は、コンポーネントの UI で指定できます。補間されたライト プローブの球面調和関数 (SH) 係数は、3D テクスチャにアップロードされます。 SH 係数を含む 3D テクスチャは、レンダリング時にサンプリングされ、拡散アンビエント照明への寄与が計算されます。これにより、プローブで照らされたゲームオブジェクトに空間グラデーションが追加されます。

標準シェーダーはこの機能をサポートしています。これをカスタム シェーダーに追加するには、ShadeSHPerPixel 関数を使用します。この機能の実装方法については、このページの下部にあるパーティクル システム サンプル シェーダー コード例を参照してください。

レンダリング パイプラインのサポート

レンダリング パイプライン全体でのライト プローブ プロキシ ボリューム コンポーネントのサポートの詳細については、レンダリング パイプライン機能の比較を参照してください。

コンポーネントを使用するタイミング

Unity のレンダラー コンポーネントのほとんどにはライト プローブが含まれています。ライト プローブには 3 つのオプションがあります:

オフ: レンダラーは補間されたライト プローブを使用しません。
ブレンド プローブ (デフォルト値): レンダラーは補間されたライト プローブを 1 つ使用します。
プロキシ ボリュームを使用: レンダラーは補間されたライト プローブの 3D グリッドを使用します。

メッシュ レンダラー コンポーネントのライト プローブ プロパティをプロキシ ボリュームを使用に設定する場合、ゲーム オブジェクトにはライト プローブ プロキシ ボリューム (LPPV) コンポーネントが接続されている必要があります。

同じゲーム オブジェクトに LPPV コンポーネントを追加するか、プロキシ ボリューム オーバーライド プロパティを使用して別のゲーム オブジェクトから LPPV コンポーネントを使用する (借用する) ことができます。

Unity が現在のゲーム オブジェクトまたはプロキシ ボリューム オーバーライド ゲーム オブジェクトで LPPV コンポーネントを見つけられない場合は、レンダラーの下部に警告メッセージが表示されます。

ライトプローブプロキシボリュームコンポーネントを使用したシンプルなメッシュレンダラーの例

ライト プローブ プロキシ ボリューム コンポーネントを使用したシンプルなメッシュ レンダラーの例

上のシーンでは、床に 2 つの平面があり、多くの光を発するマテリアルを使用しています。次の点に注意してください:

LPPV コンポーネントを使用すると、ジオメトリ全体で周囲光が変化します。補間されたライト プローブを 1 つ使用して、ジオメトリの各側に一定の色を作成します。

ジオメトリは静的ライトマップを使用しません。球体は補間されたライト プローブを表します。これらはギズモ レンダラーの一部です。

コンポーネントの使用方法

補間されたライト プローブの 3D グリッドが生成される領域は、バウンディング ボックス モード プロパティの影響を受けます。

次の 3 つのオプションがあります:

自動 ローカル (デフォルト値) ローカル空間の境界ボックスが計算されます。補間されたライト プローブの位置は、この境界ボックス内に生成されます。レンダラー コンポーネントがゲーム オブジェクトにアタッチされていない場合は、デフォルトの境界ボックスが生成されます。境界ボックスの計算では、現在のレンダラーが囲まれ、階層の下位にあるライト プローブ プロパティが [プロキシ ボリュームを使用する] に設定されているすべてのレンダラーが設定されます。

自動 ワールド 現在のレンダラーと、階層の下位にあるライト プローブ プロパティが [プロキシ ボリュームを使用する] に設定されているすべてのレンダラーが囲まれる境界ボックスが計算されます。境界ボックスはワールド アラインされます。

カスタム カスタム境界ボックスが使用されます。境界ボックスは、ゲーム オブジェクトのローカル空間で指定されます。境界ボックス編集ツールが使用できます。UI でサイズと原点の値を変更することで、境界ボリュームを手動で編集できます (以下を参照)。

Automatic Local と Automatic World の主な違いは、Automatic Local では、大規模な GameObject 階層が親 GameObject の同じ LPPV コンポーネントを使用する場合、バウンディング ボックスの計算に多くのリソースが必要になることです。ただし、結果のバウンディング ボックスのサイズは小さくなる可能性があり、照明データはよりコンパクトになります。

バウンディング ボリューム内の補間されたライト プローブの数は、Proxy Volume Resolution プロパティによって影響を受けます。次の 2 つのオプションがあります:

Automatic (デフォルト値) - 各軸の解像度は、指定した単位面積あたりの補間されたライト プローブの数とバウンディング ボックスのサイズを使用して計算されます。

Custom - 各軸に異なる解像度を指定できます (以下を参照)。

注: 各軸の最終的な解像度は 2 の累乗である必要があり、解像度の最大値は 32 です。

Probe Position Mode は、補間されたライト プローブのセルの中心に対する相対的な位置を指定します。このオプションは、補間されたライト プローブの一部が壁やその他のジオメトリを通過して光漏れを引き起こすような状況で役立つ場合があります。以下の例は、4x4 グリッド解像度を使用した 2D ビューでのセル コーナーとセル センターの違いを示しています。

データ形式は、関連付けられた 3D テクスチャが使用する形式を指定します。次の 2 つのオプションがあります:

浮動小数点 (デフォルト値) - テクスチャは 32 ビット浮動小数点チャネル形式を使用して球面調和係数を格納します。

ハーフ浮動小数点 - テクスチャはハーフ浮動小数点 (16 ビット浮動小数点) チャネル形式を使用して球面調和係数を格納します。この形式の利点は、ハーフ浮動小数点線形テクスチャ サンプリングがほとんどのデバイスでサポートされており、この形式と 32 ビット浮動小数点チャネル形式との精度の違いが目立たないことです。また、このデータ形式を使用すると、GPU でのテクスチャ サンプリングのパフォーマンスが向上します。

比較用の画像

1. 標準シェーダーを使用したシンプルなメッシュ レンダラー:

ライトプローブプロキシボリューム付き(解像度:4x1x1)

ライトプローブプロキシボリュームなし

2. 標準シェーダーを使用したスキンメッシュレンダラー:

ライトプローブプロキシボリューム付き(解像度:2x2x2)

ライトプローブプロキシボリュームなし

ShadeSHPerPixel 関数を使用したパーティクル システム サンプル シェーダー

ハードウェア要件

コンポーネントには、少なくとも Shader Model 4 グラフィックス ハードウェアと API サポートが必要です。これには、32 ビットまたは 16 ビットの浮動小数点形式と線形フィルタリングの 3D テクスチャのサポートが含まれます。

正しく動作するには、シーンにライト プローブ グループ コンポーネントを介してライト プローブが含まれている必要があります。要件が満たされていない場合、レンダラーまたはライト プローブ プロキシ ボリューム コンポーネント インスペクターに警告メッセージが表示されます。

    Course

  • 日時:2024/04/01 ~ 2025/03/31
  • 名称:どうぶつの森の美術館 〜ゲームエンジン(Unity)グラフィックス ライティング ライトプローブプロキシボリュームコンポーネント〜
  • 場所:オンラインスクール
  • 料金:¥0 (消費税込)