This is the documentation for Enlighten.

6.3. ライトマップ UV パイプライン


プリコンピュートにより、ライトマップを使用する各ジオメトリ オブジェクトに対してライトマップ UV が作成されます。プリコンピュートにより、システム内の各インスタンスのライトマップを含むそれぞれのラジオシティ システムに対してライトマップが作成されます。

チャートをプレビューできるようすぐにライトマップ UV を作成したい場合は、ライトマップ UV 生成ステージを単独で実行します。プリコンピュートを開始する際、引数 /t:Precompute/t:PrecompSys に変更します。これは、GeoRadiositySystem Precompute に相当します。

ジオメトリ ライトマップ UV

プリコンピュート UV パイプラインの最初のステージはジオメトリのパッキングステージです。これにより、シーンの各ジオメトリ オブジェクトに対し 1 つのライトマップ UV セットを作成します。

各ジオメトリ オブジェクト内のメッシュのうちディテール メッシュではないものの場合、プリコンピュートでは既定のライトマップ ピクセル サイズに対して以下のような UV レイアウトの作成が試行されます。

  • 必要とされるライトマップ ピクセル数が最小限
  • 同時に、3D 空間の各ライトマップ ピクセルの四角形の顕著な歪みを回避

これらのステージには以下の手順が含まれます。

  1. 入力チャート UV の指定:出発点として使用します。
  2. チャートの識別:サーフェスの法線の非連続性に基づき入力チャートを分割します。
  3. チャートのマージ:識別された各チャートを 2D に展開し、隣接するチャートをマージして簡素化された UV を作成します。
  4. チャートのスケーリング: マージされた各チャートのライトマップ解像度を調整し、3D 空間での相対的なサイズに一致させます。
  5. チャートのパッキング: 最終的なチャートを長方形のライトマップにパッキングします。

プリコンピュートにより、メッシュ投影を使用してディテール メッシュのライトマップ UV が作成されます。

入力チャート UV の指定

ジオメトリ オブジェクトのライトマップを生成する際、プリコンピュートでは各メッシュ オブジェクトの頂点の Chart UV 属性を入力として使用されます。

Enlighten の以下の動作を制御するために使用します。

入力チャート UV レイアウトでは最終的なライトマップ UV レイアウトは決定されず、ライトマップ UV レイアウトとは以下のように異なります。

  • すべてのチャートを緊密に単位正方形の中にパッキングする必要はありません。
  • UV レイアウトの各チャートの間に空間がない、または大きな空間があっても問題ありません。
  • UV 空間でチャートを大きく、または小さくしてライティングの解像度を制御する必要はありません。
  • UV レイアウトで入力チャートが重なっても問題ありません。

ライティング アーティファクトを防ぐには、1 つの入力 UV チャート内の三角が UV 空間で重複していないことを確認します。

既存のマテリアル UV またはライトマップ UV がある場合、自動的な UV 簡素化により生成される UV の品質を高めるために入力として提供します。

以下はすべて有効な選択肢ですが、一般的に良い結果が得られるものから並べています。

  1. 手動で作成された簡素化されたチャート UV
  2. ベイクされたライティング用に作成された既存のライトマップ UV
  3. 既存のマテリアル UV
  4. 入力 UV を除外 (すべて 0)

チャートのマージ

自動的なUV 簡素化により、自動的にチャートのマージと展開を行うことで必要なライトマップ ピクセルの数を最小化します。

この手順では、前のチャートの識別手順で作成されたチャートを分割しません。最善の結果を得るために、チャートの識別が頂点の位置と法線に基づきチャートをグループ化するように設定されていることを確認します。(デフォルト)

Enlighten の simplifyUsingUvs モードでは、自動化された簡素化でより良い結果が得られなかった場合、入力チャート UV に戻ります。自動的に簡素化された UV の使用を強制するには、simplifyNoUvs モードを使用します。

自動プロセスにより十分な結果が得られなかった場合、自動的な UV 簡素化を無効にし、指定した入力 UV が強制的にプリコンピュートに使用されるようにします。

チャートのスケーリング

プリコンピュートでは、UV 空間の各チャートを一様にスケーリングして 3D 空間の必要なピクセル サイズを生成しつつ、必要なチャート間の間隔を維持します。

デフォルトでは、UV 空間の各チャートのスケールは、3D 空間の相対的なサイズと一致するようにプリコンピュートで個々に調整されます。つまりアーティストは、メッシュのすべての部分で一貫したライトマップ ピクセル サイズを生成するために、各入力 UV チャートを適切にスケーリングする必要はありません。

一部のメッシュでは、アーティストがメッシュの部分部分で異なるピクセル サイズを必要とする場合もあります。たとえば、大きな建物メッシュで上部よりも下部にピクセルを多く必要とする場合などです。

各入力チャートの相対スケールを保存するには、ジオメトリ オブジェクトmesh 要素で scaleCharts=false 属性を指定します。

チャートのパッキング

プリコンピュートでは、ジオメトリ オブジェクトのすべてのスケーリングされたチャートが、最小かつ可能な限り正方形に近い長方形のライトマップにパッキングされます。

各チャートでは、常にライトマップで最小 2x2 ピクセルが使用され、ライトマップ ピクセルの半分のパディング空間に囲まれます。 

システム ライトマップ UV

ライトマップ UV パイプラインの最後のステージはシステムのパッキングステージです。このステージでは、ラジオシティ システムの各インスタンスに対してライトマップ UV 情報を出力します。

プリコンピュートでは、同じジオメトリ オブジェクトの各インスタンスに対して同じライトマップ UV レイアウトが再利用されます。プリコンピュートでは、スケーリングと変換だけを適用して、システム ライトマップに各インスタンスをパッキングします。

これにより、同じジオメトリ オブジェクトのインスタンス間でライトマップ UV が共有され、レンダリングがより効率的になります。

インスタンス オブジェクトに 1 より大きいスケール ファクターの transform 属性がある場合、指定された出力ピクセル サイズと一致するように、プリコンピュートで各インスタンスのライトマップ ピクセルのサイズが調整されます。 

  • transform のスケール ファクターが 1 の場合、ワールド空間のピクセルのサイズと形状は各インスタンスで同じです。
  • インスタンスに 1 未満のスケール ファクターを適用した場合、ライトマップ ピクセルは指定した出力ピクセル サイズよりも小さくなります。
  • インスタンスに 1 より大きいスケール ファクターを適用した場合、プリコンピュートでは同じスケール (最も近い整数に丸めた数) がインスタンス UV レイアウトに適用され、補正されます。