色素材
色素材は、Azure Remote Rendering でサポートされている素材の種類の 1 つです。 これらは、どのような種類の照明も受けず、常に最大の明るさで表示されるメッシュに使用されます。 車のダッシュボード、電球、静的な光源が既に組み込まれているデータ (フォトグラメトリで取得したモデルなど) については、これが当てはまります。
色素材のシェーディング モデルは PBR 素材と比べて単純であるため、より効率的にレンダリングできます。 また、さまざまな透明度モードもサポートしています。
色素材のプロパティ
次の素材プロパティは、たとえばそれぞれ C# ColorMaterial クラスや C++ ColorMaterial クラスのランタイム API で公開されます。
ColorFlags
: このビット マスクでその他の機能フラグを組み合わせて、次の機能を有効にすることができます。UseVertexColor
: メッシュに vertex カラーが含まれていて、このオプションが有効になっている場合は、メッシュの vertex カラーがAlbedoColor
とAlbedoMap
に乗算されます。 既定では、UseVertexColor
は無効になっています。DoubleSided
: 両面に対する表示が true に設定されている場合、この素材が表示されている三角形は、カメラが背面を見ていてもレンダリングされます。 既定では、このオプションは無効になっています。 参照 Single-sided rendering.AlphaClipped
:AlphaClipThreshold
の値を下回るアルファ値に基づいて、ピクセル単位でハード カットアウトを有効にします (下記参照)。 これは不透明な素材にも適しています。TransparencyWritesDepth
: 素材にTransparencyWritesDepth
フラグが設定されていて、その素材が透明である場合、その素材を使用した物体も、最終的な深度バッファーに寄与します。 次のセクションの色素材プロパティColorTransparencyMode
を参照してください。 実際のユース ケースで、完全に透明なシーンの Late Stage Reprojection の現実感を高める必要がある場合は、この機能を有効にすることをお勧めします。 不透明と透明が混在するシーンでは、この設定によって、非現実的な再投影動作や再投影アーティファクトが生じることがあります。 このため、一般的なユース ケースにおいて推奨される既定の設定は、このフラグを無効にすることです。 書き込まれる深度値は、カメラに最も近い物体のピクセルごとの深度レイヤーから取得されます。FresnelEffect
: この素材フラグを使用すると、個々の素材に対して付加的なフレネル効果が有効になります。 この効果の外観は、以下で説明する、他のフレネル パラメーターFresnelEffectColor
とFresnelEffectExponent
によって制御されます。
AlbedoColor
: この色には、AlbedoMap
や "vertex カラー" など、その他の色が乗算されます。 素材に対して透明度が有効な場合、アルファ チャネルを使用して不透明度が調整されます。ここで、1
は完全に不透明、0
は完全に透明を意味します。 既定の albedo の色は不透明な白です。Note
色素材には環境が反映されないため、完全に透明な色の素材は非表示になります。 これは、PBR 素材とは異なります。
AlbedoMap
: ピクセル単位の albedo 値の 2D テクスチャ。AlphaClipThreshold
:AlphaClipped
フラグがColorFlags
プロパティに設定されている場合、albedo のアルファ値が のAlphaClipThreshold
の値より小さいすべてのピクセルは描画されません。 アルファ クリッピングは、透明度を有効にしなくても使用でき、レンダリングがはるかに高速になります。 ただし、アルファ クリッピングされた素材は、完全に不透明な素材と比べると、レンダリングは遅くなります。 既定では、アルファ クリッピングは無効になっています。TexCoordMode
: アルベド テクスチャのテクスチャ座標を生成するために使用するモードを定義します。 このマテリアルでテクスチャが使用されていない場合、このモードは無視されます。 既定では、テクスチャ座標はメッシュの入力頂点ストリーム (モードTextureCoordinateGenerationMode.SourceUv0
またはTextureCoordinateGenerationMode.SourceUv1
) からフェッチされ、TexCoordScale
とTexCoordOffset
を経て変換されます。 コードを使用してマテリアルを設定する場合、このモードをTextureCoordinateGenerationMode.PlanarObjectSpace
またはTextureCoordinateGenerationMode.PlanarWorldSpace
に設定すると、構成可能な 2 つの 3D 平面TexCoordPlaneU
とTexCoordPlaneV
に対する頂点距離として座標を生成することもできます。 これは"平面的テクスチャ マッピング" と呼ばれます。TexCoordScale
およびTexCoordOffset
: ソース メッシュからのテクスチャ座標の場合は、追加の線形変換を適用できます。 スケールが UV テクスチャ座標に乗算され、オフセットが追加されます。 テクスチャの伸縮とシフトに使用できます。 既定のスケールは (1, 1) で、オフセットは (0, 0) です。TexCoordPlaneU
およびTexCoordPlaneV
: 平面的マッピング モードでは、u 座標と v 座標のテクスチャ平面をそれぞれ定義します。 平面は標準ノーマル形式 (A,B,C,D) で定義されているため、座標は t = Ax + By + C*z + D として計算されます。ここで、(x,y,z) はワールド空間またはオブジェクト空間の頂点位置です。FresnelEffectColor
: この素材に使用されるフレネルの色。 この素材に対してフレネル効果フラグが設定されている場合にのみ重要です (上記を参照)。 このプロパティによって、フレネル光沢の基本色が制御されます (詳細な説明は「フレネル効果」を参照してください)。 現在は、RGB チャネル値のみが重要であり、アルファ値は無視されます。FresnelEffectExponent
: この素材に使用されるフレネル指数。 この素材に対してフレネル効果フラグが設定されている場合にのみ重要です (上記を参照)。 このプロパティによって、フレネル光沢の拡散が制御されます。 最小値 0.01 の場合、オブジェクト全体にわたって拡散されます。 最大値 10.0 では、光沢が抑制され、最グレージング端にのみ表示されます。VertexMix
:0
と1
の間のこの値は、メッシュの vertex カラーが最終的な色にどれだけ強く影響するかを指定します。 既定値の 1 の場合、vertex カラーは albedo の色に完全に乗算されます。 値が 0 の場合、vertex カラーは完全に無視されます。ColorTransparencyMode
: PBR 素材とは対照的に、色素材では異なる透明度モードが区別されます。Opaque
: 既定のモードでは、透明度が無効になります。 この場合でもアルファ クリッピングは引き続き可能で、これが十分な場合は推奨されます。AlphaBlended
: このモードは、PBR 素材の透明度モードに似ています。 ガラスなどの透明な素材の表示に使用されます。Additive
: このモードは、最もシンプルかつ効率的な透明度モードです。 素材の影響は、レンダリングされるイメージに追加されます。 このモードを使用すると、重要なオブジェクトを強調表示するために使用されるマーカーなど、光彩 (ただし透明) のオブジェクトをシミュレートできます。
変換中の色素材のオーバーライド
色素材のプロパティのサブセットは、素材のオーバーライド ファイルを使用してモデル変換中にオーバーライドできます。 次の表は、上記のランタイム プロパティと、オーバーライド ファイル内の対応するプロパティ名の間のマッピングを示しています。
素材のプロパティ名 | オーバーライド ファイル内のプロパティ名 |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
API ドキュメント
- C# ColorMaterial クラス
- C# RenderingConnection.CreateMaterial()
- C++ ColorMaterial クラス
- C++ RenderingConnection::CreateMaterial()