This is the documentation for Enlighten.
6.5.5. マテリアル カラーの変更
一部のシナリオでは、実行時にラジオシティ計算に影響を与える形でサーフェスのカラーが変化する場合があります。
- 塗料、雪、ほこりなどで不明瞭になるサーフェス。
- オフになる、または色が変化するエミッシブ サーフェスの光源 。
- ゲーム中に破壊されるメッシュ。
実行時にマテリアル カラー データを更新する必要がある場合、すぐに対応するには、静的アルベドと静的エミッシブと同じ方法で均一またはサンプルごとのカラーを提供します。
アーティストのワークステーションでは、静的マテリアル カラーを十分な速さで簡単に計算できますが、ターゲット プラットフォームに対して最適化することは困難です。最適化にコストをかけないようにするには、必要な更新の種類に応じた異なるソリューションを実行時の更新に使用することをお勧めします。
サーフェス全体に均一のカラーを使用すれば十分な近似が得られる場合、動的に変化するサーフェスをマークします。これは、動的アルベドまたは動的エミッシブと呼ばれます。
実行時に変化するサーフェスが少数の場合、変化しないサーフェスに静的マテリアル カラーを提供します。
ランタイム データの準備
最初に、静的マテリアル カラーに使用した追加のランタイム データを変更し、更新を可能にします。
これは、静的マテリアル カラーの提供と同じタイミングで行います。
MakeSingleSurfaceSelection を呼び出し、変更するサーフェスを識別する SurfaceSelection を作成します。
SurfaceSelection で InitialiseMaterialAlbedoAsDynamic を呼び出し、サーフェスを動的としてマークします。
AlbedoBuffer に変更をコミットするには以下を行います。
- サンプルごとの静的マテリアル カラーを使用している場合は、InitialiseAlbedoBufferFromColoursPerPoint を呼び出します。
- その他の場合は、InitialiseAlbedoBufferFromMaterialWorkspace を呼び出します。
これらの手順により、DynamicMaterialWorkspace オブジェクトが変更されます。これらの変更を有効にするには、後で DynamicMaterialWorkspace と AlbedoBuffer オブジェクトの両方を保存します。
エミッシブの更新を可能にするには、エミッシブ関連の関数を使用して同様の手順に従います。
カラーの更新
実行時に永続ランタイム データを使用して、動的とマークされているサーフェスのカラーを設定します。
それぞれのサーフェスのカラーを設定するために、SetMaterialAlbedoColour を必要な回数呼び出します。
UpdateAlbedoBuffer を呼び出して AlbedoBuffer に変更を適用します。
エミッシブ カラーを設定するには、エミッシブ関連の関数を使用して同様の手順に従います。
高レベル ランタイムでコマンドをエンキューし、更新された AlbedoBuffer を持つシステムに対して BaseSystem::SetAlbedoData を呼び出します。
実行時に必要な作業を減らすため、ランタイム データを準備する際、カラー変更のあるサーフェスの合成マテリアル ID を格納します。