共用方式為


色彩材質

色彩材質是 Azure 遠端轉譯 中支援的材質類型之一。 它們用於 不應該接收任何類型的光源的網格 ,而是總是以全亮度顯示。 這可能是「發光」材質的情況,例如汽車儀錶板、燈泡,或已經納入靜態光源的數據,例如透過 攝影測量取得的模型。

色彩材質比 PBR 材質 更有效率,因為其較簡單的底紋模型。 它們也支援不同的透明度模式。

色彩材質屬性

運行時間 API 中會公開下列材質屬性,例如 C# ColorMaterial 類別C++ ColorMaterial 類別

  • ColorFlags:此位掩碼中可以結合其他功能旗標,以啟用下列功能:

    • UseVertexColor:如果網格包含 vertex 色彩,且已啟用此選項,則網格的 vertex 色彩會乘入 AlbedoColorAlbedoMap。 根據預設,會停用 UseVertexColor
    • DoubleSided:如果雙面設為 true,則即使攝影機面向其背面,也會轉譯具有此材質的三角形。 預設會停用此選項。 請參閱 Single-sided rendering
    • AlphaClipped:根據低於 AlphaClipThreshold 值的 alpha 值,在每個像素基礎上啟用硬式剪切 (請參閱下文)。 這也適用於不透明的材質。
    • TransparencyWritesDepth:如果在材質上設定 TransparencyWritesDepth 旗標且材質為透明,則使用此材質的物件也會包含於最終深度緩衝區。 請參閱下一節中的色彩材質屬性 ColorTransparencyMode 。 如果您的使用案例需要更合理完全透明場景的後期重新投影,建議您啟用此功能。 對於混合不透明/透明場景,此設定可能會導致不合理的重新投影行為或重新投影成品。 基於此原因,停用此旗標是一般使用案例的預設和建議設定。 寫入的深度值會取自最靠近攝影機物件的每個像素深度層。
    • FresnelEffect:此材質旗標會啟用個別材質的加法 Fresnel 效果。 效果的外觀是由其他 Fresnel 參數 FresnelEffectColorFresnelEffectExponent 控管,這兩個參數會在下面加以說明。
  • AlbedoColor:此色彩會與其他色彩相乘,例如 AlbedoMapvertex 色彩。 如果在材質上啟用透明度,Alpha 色板會用來以調整不透明度,1 表示完全不透明和 0 表示完全透明。 預設反照率色彩是不透明的白色。

    注意

    由於色彩材質不會反映環境,因此完全透明的色彩材質會變成看不見。 這與 PBR 材質不同。

  • AlbedoMap:每個像素反照率值的 2D 紋理

  • AlphaClipThreshold:如果旗 AlphaClipped 標是在 屬性上 ColorFlags 設定,則albedoAlpha值低於 不會繪製的值 AlphaClipThreshold 的所有圖元。 即使未啟用透明度,也可使用 Alpha 裁剪,而且轉譯速度會更快。 然而,Alpha 裁剪材質的轉譯速度仍會比完全不透明材質還慢。 預設會停用 Alpha 裁剪。

  • TexCoordMode:定義用來產生 Albedo 紋理紋理座標的模式。 如果此材質不使用紋理,則會忽略此模式。 根據預設,紋理座標會從網格的輸入頂點數據流擷取(模式 TextureCoordinateGenerationMode.SourceUv0TextureCoordinateGenerationMode.SourceUv1),然後透過 TexCoordScaleTexCoordOffset轉換。 透過程式代碼設定材質時,此模式也可以設定為 TextureCoordinateGenerationMode.PlanarObjectSpaceTextureCoordinateGenerationMode.PlanarWorldSpace 產生座標,做為兩個可設定的 3D 平面 TexCoordPlaneUTexCoordPlaneV的頂點距離。 這稱為「平面紋理對應」。

  • TexCoordScaleTexCoordOffset:對於來源網格的紋理座標,可以套用額外的線性轉換。 縮放比例會乘入UV紋理座標,並將位移新增至其中。 可用來縮放和移位紋理。 預設比例為 (1, 1),位移為 (0, 0)。

  • TexCoordPlaneUTexCoordPlaneV:對於平面對應模式,這些模式會分別定義 u 座標和 v 坐標的紋理平面。 平面是以標準法線形式定義(A、B、C、D),因此座標會計算為 t = Ax + By + C*z + D,其中 (x,y,z) 是世界或對象空間中的頂點位置。

  • FresnelEffectColor:用於此材質的 Fresnel 色彩。 僅當此材質上已設定 Fresnel 效果旗標時才重要 (請參閱上文)。 此屬性會控制 Fresnel 光亮的基底色彩 (如需完整說明,請參閱 Fresnel 效果)。 目前僅 RGB 色板值重要,並將忽略 Alpha 值。

  • FresnelEffectExponent:用於此材質的 Fresnel 指數。 僅當此材質上已設定 Fresnel 效果旗標時才重要 (請參閱上文)。 此屬性會控制 Fresnel 光亮的散射。 最小值 0.01 會導致散射到整個物件。 最大值 10.0 會將光亮限制為僅可在大部分的掠過邊緣上看見。

  • VertexMix:和 之間的0這個值會指定網格色彩對最終色彩的貢獻程度vertex。1 默認值為 1, vertex 色彩會完全乘入 albedo 色彩。 值為 0 時 vertex ,會完全忽略色彩。

  • ColorTransparencyMode:與 PBR 材質相反,色彩材質會區分不同的透明度模式:

    • Opaque:預設模式會停用透明度。 不過,如果足夠的話,還是可以採用Alpha裁剪。
    • AlphaBlended:此模式類似於 PBR 材質的透明度模式。 它應該用於玻璃等看透材料。
    • Additive:此模式是最簡單且最有效率的透明度模式。 材質的貢獻會新增至轉譯的影像。 此模式可用來模擬發光(但仍透明)物件,例如用於醒目提示重要對象的標記。

注意

雖然 AlbedoColorFresnelEffectColor 的接受值範圍與 PBR 材料相同,但其通道將有效夾在 [0] 中:1] 用於 色彩材質

轉換期間色彩材質覆寫

在模型轉換期間,可以透過材質覆寫檔案覆寫色彩材質屬性的子集。 下表顯示上述執行階段屬性與覆寫檔案中對應屬性名稱之間的對應:

材質屬性名稱 覆寫檔案中的屬性名稱
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

API 文件

下一步