SpecularGlossyMaterial QML Type

让您使用镜面/光泽度工作流程为 3D 项目定义材质。更多

Import Statement: import QtQuick3D
Inherits:

Material

属性

详细描述

在场景中渲染模型之前,必须至少有一种材质附加到模型上,用于描述网格的着色方式。SpecularGlossyMaterial(镜面光泽材质)是一种 PBR 镜面/光泽度材质,旨在成为一种使用简单、参数极少的材质。除了参数少之外,所有输入值都在 0 和 1 之间严格归一化,并有合理的默认值,这意味着即使不更改任何值,也可以使用该材质为模型着色。有关镜面/光泽材质的不同属性如何影响模型着色的介绍,请参阅 "原理材质 "示例,该示例提供了使用镜面/光泽工作流程的模式。

另外,要使用金属/亮度工作流程,请使用PrincipledMaterial

镜面/亮度工作流程

SpecularGlossyMaterial 提供了一种使用镜面/光泽度类型工作流程创建材质的方法。材料的主要属性由specularglossinessalbedo 属性控制。

镜面反射

specularColor 属性描述了物体表面的镜面反射量和颜色。对于反光材质来说,该属性是主要的颜色来源。

光泽度

材料的glossiness 描述了物体表面的状况。glossiness 值越高,说明物体表面越光滑,因此反光性越好,而glossiness 值越低,反光性越差。

反照率

albedoColor 属性描述了材料的漫反射颜色,与PrincipledMaterial 的基色不同,反照率不包含任何有关材料反射率的信息。这意味着,对于反射表面,反照率的颜色值应设置为黑色色调,因为这样可以让镜面反射颜色发挥作用。

属性文档

albedoChannel : enumeration [since 6.8]

该属性定义了用于从albedoMap 读取反照率颜色值的纹理通道。要使用单一纹理通道作为颜色,必须启用albedoSingleChannelEnabled 。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值

此属性在 Qt 6.8 中引入。


albedoColor : color

该属性用于设置材质的反照率颜色。将漫反射颜色设置为黑色将创建纯镜面材质(如金属或镜面)。

另请参阅 albedoMapalphaMode


albedoMap : Texture

该属性定义了用于设置材质反照率颜色的纹理。

另请参阅 albedoalphaMode


albedoSingleChannelEnabled : bool [since 6.8]

启用此属性后,材质将使用albedoMapalbedoChannel 的单一值作为 RGB 值,并使用 1.0 作为 alpha 值。默认值为 false。

该属性在 Qt 6.8 中引入。


alphaCutoff : real

使用Mask alphaMode 时,alphaCutoff 属性可用于指定截止值。alpha 值低于阈值的片段将被渲染为完全透明(0.0 ,适用于所有颜色通道)。当 alpha 值等于或大于截止值时,颜色不会受到任何影响。

默认值为 0.5。

另请参阅 alphaMode


alphaMode : enumeration

该属性指定如何使用albedoColor 的 alpha 颜色值和albedo map 的 alpha 通道。

注意: alpha 截断测试只考虑反照率颜色 alpha。此处不考虑opacityNode::opacity

注: 对反照率颜色地图采样时,有效 alpha 值是采样 alpha 乘以albedoColor alpha。

常数说明
SpecularGlossyMaterial.Default不进行测试,有效阿尔法值按原样传递。请注意,albedoColoralbedoMap alpha 值小于1.0 并不自动意味着 Alpha 混合,如果没有其他相关属性(如不透明度小于 1、存在不透明度贴图或非默认的blendMode 值)触发将对象视为半透明,则具有该材质的对象仍可能被视为不透明。要确保不考虑任何其他对象或材质属性而进行 alpha 混合,请设置Blend
SpecularGlossyMaterial.Blend该设置不会应用截断测试,但能保证进行阿尔法混合。因此,使用此材质的对象绝不会被渲染器视为不透明。
SpecularGlossyMaterial.Opaque不应用截止测试,渲染对象被假定为完全不透明,这意味着顶点颜色、反照率颜色和反照率颜色贴图中的 alpha 值将被忽略,取而代之的是 1.0 值。该模式并不能保证不发生阿尔法混合。如果相关属性(如不透明度小于 1、不透明度贴图或非默认的blendMode )显示为半透明,那么对象仍会被渲染管道视为半透明,就像Default alphaMode 一样。
SpecularGlossyMaterial.Mask根据alphaCutoff 进行测试。如果有效 alpha 值低于alphaCutoff ,片段将变为全透明并被丢弃(丢弃的所有影响:深度缓冲区不会写入该片段)。否则,alpha 值将变为 1.0,这样片段将变成完全不透明。就 Alpha 混合而言,无论截断测试的结果如何,该模式的行为都与Opaque 相同。这意味着glTF 2 规范的阿尔法覆盖实施说明已得到满足。除非相关属性(如不透明度小于 1、不透明度映射或非默认的blendMode )另有暗示(在这种情况下将无法投射阴影),否则进行了 alpha 截止测试的对象也可以投射阴影,因为它们默认情况下的行为与不透明对象相同。

另请参阅 alphaCutoffblendMode


attenuationColor : color

该属性定义了白光在达到衰减距离时由于吸收而变成的颜色。默认值为Qt.White


attenuationDistance : real

该属性定义了介质的密度,即光线在与粒子发生作用之前在介质中移动的平均距离。该值以世界空间为单位。默认值为+infinity


blendMode : enumeration

该属性决定了渲染模型的颜色如何与后面的颜色混合。

常数描述
SpecularGlossyMaterial.SourceOver默认混合模式。不透明物体会遮盖后面的物体。对于使用此材质的模型,此默认模式本身并不保证在渲染管道中进行 alpha 混合,而是取决于一系列因素来决定:如果物体和材质的总不透明度为1.0 ,材质中没有不透明度贴图,且alphaMode 未设置为强制执行 alpha 混合的值,则该模型将被视为不透明,这意味着它将与其他不透明物体一起,在启用深度测试和深度写入的情况下进行渲染,同时禁用混合。否则,模型将被视为半透明对象,并在不透明对象之后与其他半透明对象一起,根据其中心与摄像机的距离,按照前后顺序进行渲染,同时启用阿尔法混合。
SpecularGlossyMaterial.Screen颜色混合使用的是反向乘法,产生的效果较浅。这种混合模式与顺序无关;如果您使用的是半透明物体,并且由于面孔或模型的排序不同而出现 "噼啪 "现象,那么使用屏幕混合是产生无 "噼啪 "效果的一种方法。
SpecularGlossyMaterial.Multiply使用乘法混合颜色会产生较暗的效果。这种混合模式也与阶次无关。

另请参阅 alphaModeQt Quick 3D 架构


clearcoatAmount : real

该属性定义了透明涂层的强度。

默认值为0.0


clearcoatChannel : enumeration

该属性定义用于从clearcoatMap 读取透明涂层数量值的纹理通道。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取的值。

clearcoatFresnelBias : real

该属性会将正面(直视表面)的反射推前,同时保留掠过角度的反射。为了影响材质的变化,您必须启用clearcoatFresnelScaleBiasEnabled 。默认值为0.0


clearcoatFresnelPower : real

该属性可减少迎面反射(直视表面),同时保持掠射角度的反射。默认值为5.0


clearcoatFresnelScale : real

该属性可减少迎面反射(直视表面),同时保持掠射角度的反射。要对材质的变化产生影响,必须启用clearcoatFresnelScaleBiasEnabled 。默认值为1.0


clearcoatFresnelScaleBiasEnabled : real

将该值设置为 true 后,材质将考虑 Clearcoat 菲涅尔刻度和 Clearcoat 菲涅尔偏置。默认值为false


clearcoatMap : Texture

该属性定义了用于确定透明涂层强度的纹理。clearcoatAmount 的值将乘以从该纹理读取的值。


clearcoatNormalMap : Texture

该属性定义了一个纹理,用于确定应用于透明涂层的法线贴图。


clearcoatRoughnessAmount : real

此属性定义透明涂层的粗糙度。默认值为0.0


clearcoatRoughnessChannel : enumeration

该属性定义用于从clearcoatRoughnessMap 读取透明涂层粗糙度值的纹理通道。默认值为Material.G

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

clearcoatRoughnessMap : Texture

该属性定义了用于确定清漆层粗糙度的纹理。clearcoatRoughnessAmount 的值将乘以从该纹理读取的值。


emissiveChannel : enumeration [since 6.8]

该属性定义了用于从emissiveMap 读取发射颜色值的纹理通道。要使用单个纹理通道作为颜色,必须启用emissiveSingleChannelEnabled 。默认值为Material.R

常量说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值

此属性在 Qt 6.8 中引入。


emissiveFactor : vector3d

该属性决定了该材质的自发光颜色。如果设置了发射贴图,则 x、y 和 z 分量将分别用作纹理 R、G 和 B 通道的因子(乘数)。默认值为 (0、0、0),表示完全没有发射贡献。

注: 将 lightingMode 设置为 DefaultMaterial.NoLighting 意味着发射因子不会对场景产生影响。


emissiveMap : Texture

该属性设置一个 RGB 纹理,用于指定发射颜色的强度。


emissiveSingleChannelEnabled : bool [since 6.8]

启用此属性后,材质将使用emissiveMapemissiveChannel 的单一值作为 RGB 值。默认值为 false。

该属性在 Qt 6.8 中引入。


fresnelBias : real

该属性将正面反射(直视表面)向前推移,同时保留掠过角度看到的反射。为了影响材质的变化,您必须启用fresnelScaleBiasEnabled 。默认值为0.0


fresnelPower : real

该属性可减少迎面反射(直视表面),同时保持掠射角度的反射。默认值为5.0


fresnelScale : real

该属性可减少迎面反射(直视表面),同时保持掠射角度的反射。要对材质的变化产生影响,必须启用fresnelScaleBiasEnabled 。默认值为1.0


fresnelScaleBiasEnabled(菲涅尔缩放偏置启用): real

将该值设为 true 时,材质将考虑菲涅尔标尺和菲涅尔偏置。默认值为false


glossiness : real

该属性控制灯光产生的镜面反射高光的大小,以及一般反射的清晰度。数值越小,粗糙度越大,镜面反射亮点越柔和,反射越模糊。范围为 [0.0, 1.0]。默认值为1.0


glossinessChannel : enumeration

该属性定义了用于从glossinessMap 读取光泽度值的纹理通道。默认值为Material.A

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

glossinessMap : Texture

该属性定义了一个用于控制材质光泽度的纹理。


heightAmount : real

该属性包含用于修改heightMap 纹理值的因子。该值应介于 0.0 至 1.0 之间。默认值为 0.0,这意味着即使设置了高度贴图,也将禁用高度位移。


heightChannel : enumeration

该属性定义了用于从heightMap 读取高度值的纹理通道。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

heightMap : Texture

此属性定义了一个纹理,用于确定使用视差贴图渲染时纹理移动的高度。数值应为 0.0 至 1.0 的线性范围,其中 0.0 表示无位移,1.0 表示最大位移。


invertOpacityMapValue : real [since 6.8]

该属性可反转opacityMap 的不透明度值。默认值为false

该属性在 Qt 6.8 中引入。


lighting : enumeration

该属性定义了生成该材质时使用的光照方法。

默认值为SpecularGlossyMaterial.FragmentLighting

常量说明
SpecularGlossyMaterial.FragmentLighting为每个渲染像素计算漫反射和镜面光照。某些效果(如菲涅尔或法线贴图)需要SpecularGlossyMaterial.FragmentLighting 才能生效。
SpecularGlossyMaterial.NoLighting不计算光照。这种模式(可以预见)速度非常快,在使用不需要照明阴影的图像贴图时非常有效。除了反照率值、alpha 值和顶点颜色外,所有其他阴影属性都将被忽略。

lineWidth : real

当几何体使用原始类型的线条或线条条时,该属性决定渲染线条的宽度。默认值为 1.0。该属性与渲染其他类型的几何体(如三角形网格)无关。

警告 根据底层图形 API 的不同,运行时可能不支持 1 以外的线宽。在这种情况下,更改宽度的请求将被忽略。例如,以下任何一种系统都不支持宽线条:Direct3D、Metal、带有核心配置文件上下文的 OpenGL。


maxHeightMapSamples : int

该属性定义了使用heightMap 执行 Parallex Occlusion Mapping(平行闭塞映射)时所使用的最大采样数目。maxHeightMapSamples(maxHeightMapSamples)值是与曲面平行时所使用的heightMap 采样数目。默认值为 32。默认值为 32。

每个片段实际使用的样本数将介于minHeightMapSamples 和 maxHeightMapSamples 之间,具体取决于摄像机相对于渲染表面的角度。

注意: 只有在出现不希望看到的伪影的情况下,才可使用heightMap 调整该值,以便对材质进行微调。


minHeightMapSamples : int

该属性定义了使用heightMap 执行 Parallex Occlusion Mapping 时使用的最小样本数。minHeightMapSamples(minHeightMapSamples)值是heightMap 直视表面时(摄像机视角垂直于片段时)使用的样本数。默认值为 8。

每个片段实际使用的样本数将介于 minHeightMapSamples 和maxHeightMapSamples 之间,具体取决于摄像机相对于渲染表面的角度。

注: 只有在出现不希望看到的伪影时,才可使用heightMap 调整该值,以便对材质进行微调。


normalMap : Texture

该属性定义了一个 RGB 图像,用于模拟材质表面的精细几何体位移。RGB 通道表示 XYZ 法线偏差。

注: 法线贴图不会影响模型的轮廓。


normalStrength : real

此属性控制normalMap 的模拟位移量。


occlusionAmount : real

该属性包含用于修改occlusionMap 纹理值的因子。该值应介于 0.0 至 1.0 之间。默认值为 1.0。


occlusionChannel : enumeration

该属性定义用于从occlusionMap 读取闭塞值的纹理通道。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取数值。

occlusionMap : Texture

该属性定义了一种纹理,用于确定材质的不同区域应接收多少间接光。该值应从 0.0 到 1.0 之间呈线性关系,其中 0.0 表示没有间接光照,1.0 表示间接光照的效果保持不变。

另请参阅 occlusionAmount


opacity : real

此属性仅降低此材质的不透明度,与模型分开。


opacityChannel : enumeration

该属性定义了用于从opacityMap 读取不透明度值的纹理通道。默认值为Material.A

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

opacityMap : Texture

该属性定义了一个纹理,用于对材质的不同部分进行不同的不透明度控制。


pointSize : real

当几何体使用原始点类型时,该属性决定渲染点的大小。默认值为 1.0。该属性与渲染其他类型的几何体(如三角形网格)无关。

警告: 运行时可能不支持 1 以外的点尺寸,具体取决于底层图形 API。例如,设置 1 以外的大小对 Direct 3D 没有影响。


specularChannel : enumeration [since 6.8]

该属性定义了用于从specularMap 读取镜面反射颜色值的纹理通道。要使用单个纹理通道作为颜色,必须启用specularSingleChannelEnabled 。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值

此属性在 Qt 6.8 中引入。


specularColor : color

该属性定义镜面 RGB 颜色。如果提供了 alpha 值,该值将被忽略。

默认值为Qt.White


specularMap : Texture

该属性设置一个纹理,用于为材质的不同部分设置镜面反射颜色。只使用 RGB 通道。


specularSingleChannelEnabled : bool [since 6.8]

启用此属性后,材质将使用specularMapspecularChannel 的单个值作为 RGB 值。默认值为 false。

此属性在 Qt 6.8 中引入。


thicknessChannel : enumeration

该属性定义了用于从transmissionMap 读取厚度值的纹理通道。默认值为Material.G

常量说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

thicknessFactor : real

此属性定义了表面下的体积厚度。与SpecularGlossyMaterial 的许多其他属性不同, thicknessFactor 中定义的值是模型坐标空间中从 0.0 到 +infinity 的厚度值。0.0 表示材料是薄壁的。默认值为0.0


thicknessMap : Texture

该属性定义了用于定义材料体积厚度的纹理。thicknessFactor 的值将乘以从该纹理读取的值。


transmissionChannel : enumeration

该属性定义了用于从transmissionMap 读取透射比的纹理通道。默认值为Material.R

常数说明
Material.R从纹理 R 通道读取值。
Material.G从纹理 G 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理 A 通道读取值。

transmissionFactor : real

该属性定义了透过材质表面的光线百分比。默认值为0.0


transmissionMap : Texture

该属性定义了一个纹理,用于确定透过材料表面的光线百分比。transmissionFactor 的值将乘以从该纹理读取的值。


vertexColorAlphaMask : enumeration [since 6.8]

此属性定义用于指定遮罩的顶点颜色 alpha 通道。该值是一个以位为单位的标志组合。默认值为SpecularGlossyMaterial.NoMask

常量说明
SpecularGlossyMaterial.NoMask.
SpecularGlossyMaterial.GlossinessMask.
SpecularGlossyMaterial.NormalStrengthMask.
SpecularGlossyMaterial.ClearcoatAmountMask.
SpecularGlossyMaterial.ClearcoatRoughnessAmountMask.
SpecularGlossyMaterial.ClearcoatNormalStrengthMask.
SpecularGlossyMaterial.HeightAmountMask.
SpecularGlossyMaterial.OcclusionAmountMask.
SpecularGlossyMaterial.ThicknessFactorMask.
SpecularGlossyMaterial.TransmissionFactorMask.

此属性在 Qt 6.8 中引入。


vertexColorBlueMask : enumeration [since 6.8]

此属性定义顶点颜色的蓝色通道,用作指定遮罩。该值是一个以位为单位的标志组合。默认值为SpecularGlossyMaterial.NoMask

常量说明
SpecularGlossyMaterial.NoMask.
SpecularGlossyMaterial.GlossinessMask.
SpecularGlossyMaterial.NormalStrengthMask.
SpecularGlossyMaterial.ClearcoatAmountMask.
SpecularGlossyMaterial.ClearcoatRoughnessAmountMask.
SpecularGlossyMaterial.ClearcoatNormalStrengthMask.
SpecularGlossyMaterial.HeightAmountMask.
SpecularGlossyMaterial.OcclusionAmountMask.
SpecularGlossyMaterial.ThicknessFactorMask.
SpecularGlossyMaterial.TransmissionFactorMask.

此属性在 Qt 6.8 中引入。


vertexColorGreenMask : enumeration [since 6.8]

该属性定义了用作指定遮罩的顶点颜色绿色通道。该值是一个以位为单位的标志组合。默认值为SpecularGlossyMaterial.NoMask

常量说明
SpecularGlossyMaterial.NoMask.
SpecularGlossyMaterial.GlossinessMask.
SpecularGlossyMaterial.NormalStrengthMask.
SpecularGlossyMaterial.ClearcoatAmountMask.
SpecularGlossyMaterial.ClearcoatRoughnessAmountMask.
SpecularGlossyMaterial.ClearcoatNormalStrengthMask.
SpecularGlossyMaterial.HeightAmountMask.
SpecularGlossyMaterial.OcclusionAmountMask.
SpecularGlossyMaterial.ThicknessFactorMask.
SpecularGlossyMaterial.TransmissionFactorMask.

此属性在 Qt 6.8 中引入。


vertexColorRedMask : enumeration [since 6.8]

该属性定义了用作指定遮罩的顶点颜色红色通道。该值是一个以位为单位的标志组合。默认值为SpecularGlossyMaterial.NoMask

常量说明
SpecularGlossyMaterial.NoMask.
SpecularGlossyMaterial.GlossinessMask.
SpecularGlossyMaterial.NormalStrengthMask.
SpecularGlossyMaterial.ClearcoatAmountMask.
SpecularGlossyMaterial.ClearcoatRoughnessAmountMask.
SpecularGlossyMaterial.ClearcoatNormalStrengthMask.
SpecularGlossyMaterial.HeightAmountMask.
SpecularGlossyMaterial.OcclusionAmountMask.
SpecularGlossyMaterial.ThicknessFactorMask.
SpecularGlossyMaterial.TransmissionFactorMask.

此属性在 Qt 6.8 中引入。


vertexColorsEnabled : bool [since 6.5]

启用此属性后,材质将使用网格的顶点颜色。这些颜色将乘以为材质指定的任何其他颜色。默认值为 true。

此属性在 Qt 6.5 中引入。


vertexColorsMaskEnabled : bool [since 6.8]

启用此属性后,材质将使用网格中的顶点颜色作为各种属性(如光泽度、闭塞量......)的遮罩。默认值为 false。

此属性在 Qt 6.8 中引入。


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.