This is the documentation for Enlighten.

7.11.1.8. 透過とベイク

導入

直接光をベイクする際、透過がサポートされます。透過値は 0-1 の範囲のカラー ベクトルです。メッシュを一様に透明にしたり、透過がテクセルの強度に比例する場所にテクスチャを適用したりできます。つまり、黒のテクセルはすべての光をブロックし、白のテクセルはすべての光を通し、赤は赤を通すなどということです。GeoRadiosity ではこの透過によるマテリアルのレンダリングは行いませんが、影響を受ける領域の表示が試みられます。

透過テクスチャのサンプル

ベイクの結果

透過は、アンビエント オクルージョンや間接光出力には影響しません。つまり、環境ライティングと間接光がシーンの透明な部分を通過することはありません。しかし、直接光は透明な部分を通過するため、その後にシーンの間接光が生じます。

透過を作成するには、Enlighten::IBakeInputSystem を構築する際にジオメトリにマテリアルの記述を提供する必要があります。

マテリアルの記述の割り当て

ベイク API にマテリアルの記述を供給するには、Enlighten::IBakeInputMaterial インスタンスを作成する必要があります。このオブジェクトは、対象のベイク システムの (Enlighten::BakeMaterialInfo インスタンスからなる) すべてのマテリアルを保持します。次に、ベイク システムにジオメトリを追加する際、 Enlighten::IBakeInputSystem::AddGeometry に渡されます。API はこのオブジェクトから適切なマテリアルを選択します。

テクスチャの取り扱い

Enlighten::BakeMaterialInfo インスタンスには、透過に使用されるテクスチャ ファイルのファイル名が格納されています。API がマテリアル データをロードするには、ベイクの際に API へのテクスチャのロードと供給を行う Enlighten::IBakeTextureManager の実装を提供する必要があります。Enlighten::IBakeTextureManager::GetTexture がテクスチャをキャッシュし、要求されるたびにテクスチャをリロードしなくても済むようにする必要があります (実際に、ベイク中に 100 万回単位で起こることがあります)。フレームワーク例にはこのような実装 GeoRadSample::BakeTextureManager が含まれています。

出力テクスチャ

イラディアンス ライトマップのアルファ チャンネルには、ピクセルの有効性に関する情報が格納されています。1. に設定されている場合、ピクセルは有効であり、計算されたイラディアンス値を格納しています。0.5 に設定されている場合、ピクセル値はレンダリングに使用できますが、ダイレーション アルゴリズムを使用して近くのピクセルから生成されたものです。このダイレーションは、視認できるバック フェースが多すぎるなどの理由から無効なピクセルに対して、または補間アーティファクトを防ぐためにエッジ ピクセルに対して実行されます。ダイレーションされたピクセルが有効なピクセルを上書きすることはありません。0. のアルファ値は無効なピクセルを示し、他の値は黒になります。

ディレクショナル出力ライトマップが再正規化のためにアルファ チャネルを使用することに注意してください。対応するイラディアンス ライトマップのアルファ値を有効性の確認に使用します。

Shadowface の動作

通常、メッシュのフロント フェースとバック フェースの両方がシャドウを落とします。フロント フェースまたはバック フェースのみがシャドウを落とすようにしたい場合、shadowFaces タイプを front または back に設定します。bothWithInvalidBack オプションを使用して、フロント フェースとバック フェースの両方がシャドウを落としても、バック フェースは「無効」とみなされるようにします。有効と無効の比率が backfaceTolerance で設定されたしきい値を下回る場合、ピクセルは無効とマークされます。無効なピクセルは、周辺の有効なピクセルから推定されます。また、Shadowface の動作は、シーンのインスタンス)またはメッシュのマテリアルのプロパティでも設定できます。