This is the documentation for Enlighten.

6.1.8. ラジオシティの依存関係


Enlighten は、シーンのインスタンスプローブキューブマップのラジオシティを計算します。ワールドの既定の場所のラジオシティは、他の多くのサーフェスからのバウンス光の組み合わせです。Enlighten プリコンピュートでは、ワールドの各クラスタからその場所が受ける光の割合が決定されます。これにより、その場所のラジオシティ フォーム ファクターが生成されます。

これらのフォーム ファクターの計算に必要な時間は、ワールドのサイズに応じて増加します。ラジオシティ システムが遮られている、またはライティングに大きな影響を与えることがないほど遠い場合はこれを除外することにより、大幅に時間を短縮できます。プリコンピュートでは、可視性と距離に基づいて重要でないラジオシティ システムを自動的に検出し、間引きます。

小さなワールドの場合、間引くために要する時間は短縮できる時間よりも大幅に短くなります。非常に大きなワールドの場合、間引くために要する時間が非常に長くなることがあります。これに対処するには、考慮されるラジオシティの依存関係を明示的に制限します。

一連のラジオシティの依存関係で一連のシステムを定義すると、それらのシステムのクラスタがフォーム ファクターを計算する際に考慮されます。既定のインスタンスのフォーム ファクターを計算する際、同じシステムのクラスタが常に考慮されるため、そのインスタンスを含むラジオシティ システムに属するすべてのインスタンスから常にバウンス光を受けます。

Enlighten のインスタンスプローブキューブマップは、ラジオシティの依存関係に含まれるシステムからのみバウンス光を受けます。 

ゾーンの依存関係

デフォルトでは、インスタンスプローブキューブマップのフォーム ファクターを計算する際、ラジオシティの依存関係は制限されません。既定のゾーンのすべてのインスタンス、プローブの領域、およびキューブマップの依存関係を明示的に制限するには、そのゾーンの一連の限定的な依存関係を指定します。

これを行うには、.scene ファイルと同じフォルダーに .deps ファイルを出力します。.scene ファイルのゾーンの名前を付けた zone 要素を追加します。別のゾーンを指定する id 属性を含む dependsOn 子要素を追加し、プリコンピュートで依存関係が自動検出された際に考慮されるようにします。

.deps ファイル形式用の XML スキーマは、Src/Samples/Libraries/GeoEn2Support/scenedeps.xsd で入手できます。

同じゾーンのラジオシティ システムは、空の zone 要素を追加した場合であっても常に考慮されます。既定のゾーンでは、.deps file に対応する zone 要素がない場合、ラジオシティの依存関係は制限されません。

<?xml version="1.0" encoding="utf-8"?>
<dependencies>
    <zone id="zone1">
        <dependsOn id="zone2"/>
    </zone>
    <zone id="zone2">
    </zone>
</dependencies>

上記の例では以下のように依存関係を制限しています。

  • zone1 の依存関係は zone1 と zone2 のシステムに限定されます。
  • zone2 の依存関係は zone2 のシステムに限定されます。
  • zone3 は記述されていません。ワールドのすべてのラジオシティ システムが対象となりうる依存関係とみなされます。

非常に大きなワールドの場合、限定的な依存関係を指定したゾーンがまったくなければ、プリコンピュートで依存関係の自動検出の実行時間が長くなる可能性があります。

明示的システム依存関係

あるゾーンを明示的に指定したシステムに依存させるために明示的システム グループを使用する場合、 dependsOn 要素の id 属性でシステムの名前を指定します。

ゾーンと同じようにシステムの依存関係を制限します。.scene ファイルのシステムの名前を付けた system 要素を追加します。依存対象のゾーンまたはシステムを指定する id 属性を含む dependsOn 子要素を追加します。auto="true" 属性を追加して、自動的に重要でない依存関係を間引きます。

ラジオシティ システムは、常にそれ自体のバウンス光を受けます。.deps file に対応する system 要素がない既定の明示的システム グループでは、ラジオシティの依存関係は制限されません。

<?xml version="1.0" encoding="utf-8"?>
<dependencies>
    <zone id="zone1">
        <dependsOn id="system1" auto="true"/>
    </zone>
    <system id="system1">
        <dependsOn id="system2" auto="true"/>
        <dependsOn id="zone1"/>
    </system>
    <system id="system2">
    </system>
</dependencies>

上記の例では以下のように依存関係を制限しています。

  • zone1 の依存関係は system1zone1 のシステムに限定されます。
  • system1 の依存関係は system2 と zone1 のシステムに限定されます。
  • system2 はどのラジオシティ システムからもバウンス光を受けません。
  • system3 は記述されていません。ワールドのすべてのラジオシティ システムが対象となりうる依存関係とみなされます。