本页内容

SpecularGlossyMaterial QML Type

允许您使用镜面反射/光泽度工作流为 3D 对象定义材质。更多...

Import Statement: import QtQuick3D
Inherits:

Material

属性

详细说明

在场景中渲染模型之前,必须为其附加至少一种材质,以描述网格应如何进行着色。SpecularGlossyMaterial 是一种 PBR 镜面反射/光泽材质,旨在通过极简的参数集提供便捷的使用体验。 除了参数数量少之外,所有输入值均严格归一化在 0 到 1 之间,并具有合理的默认值,这意味着即使不更改任何数值,该材质也能用于为模型着色。 关于 SpecularGlossyMaterial 的不同属性如何影响模型着色的介绍,请参阅“Principled Material”示例,该示例提供了一种使用镜面反射/光泽度工作流的模式。

若要改用金属度/粗糙度工作流,请使用PrincipledMaterial 。

镜面/光泽度工作流

SpecularGlossyMaterial 提供了一种使用镜面反射/光泽度类型工作流创建材质的方法。该材质的主要属性通过specular 、glossiness 和albedo 属性进行控制。

镜面反射

specularColor 属性描述了物体表面的镜面反射强度和颜色。对于反射性材质,其主要颜色贡献来源于此属性。

光泽度

材质的glossiness 描述了物体表面的状态。较高的glossiness 值意味着物体表面光滑,因此其反射能力会强于 值较低的材质。glossiness

反照率

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

属性文档

albedoChannel : enumeration [since 6.8]

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

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理的 A 通道读取值。

该属性在 Qt 6.8 中引入。

albedoColor : color

此属性用于设置材质的反照率颜色。将漫反射颜色设置为黑色调,将生成纯镜面材质(例如金属或镜子)。

另请参阅 albedoMap 和alphaMode 。

albedoMap : Texture

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

另请参阅 albedo 和alphaMode 。

albedoSingleChannelEnabled : bool [since 6.8]

启用此属性后,材质将使用albedoMap 中albedoChannel 的单一值作为RGB值,并将1.0作为透明度值。默认值为false。

该属性自 Qt 6.8 起引入。

alphaCutoff : real

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

默认值为 0.5。

另请参阅 alphaMode 。

alphaMode : enumeration

此属性指定如何使用albedoColor 中的Alpha颜色值以及albedo map 的Alpha通道。

注意: 透明度截断测试 仅考虑漫反射颜色(albedo)的透明度值。opacity 和Node::opacity 在此处不予考虑。

注意:在 采样漫反射颜色贴图时 ,有效透明度值为采样得到的透明度值乘以albedoColor 的透明度值。

常量描述
SpecularGlossyMaterial.Default不进行任何测试,实际透明度值按原样传递。 请注意,如果albedoColor 或albedoMap 的 alpha 值小于1.0 ,并不自动意味着会进行 alpha 混合;如果没有其他相关属性(例如,不透明度小于 1、存在不透明度贴图,或者blendMode 值非默认值)触发将对象视为半透明,则具有该材质的对象仍可能被视为不透明。 若要确保无论其他对象或材质属性如何,都能发生透明度混合,请将Blend 设为1。
SpecularGlossyMaterial.Blend虽然不会应用任何截断测试,但可确保进行 Alpha 混合。因此,使用此材质的对象绝不会被渲染器视为不透明。
SpecularGlossyMaterial.Opaque不进行阈值测试,且渲染对象被视为完全不透明,这意味着顶点颜色、反照率颜色和反照率颜色贴图中的 alpha 值将被忽略,并被 1.0 的值所替代。此模式不能保证不会发生 alpha 混合。 如果相关属性(例如,不透明度小于 1、不透明度贴图或非默认的blendMode )有相应设置,则渲染管道仍会将该对象视为半透明,这与Default alphaMode 的处理方式相同。
SpecularGlossyMaterial.Mask将基于alphaCutoff 进行测试。如果有效透明度值低于alphaCutoff ,则该片段将变为完全透明并被丢弃(丢弃会带来所有相应后果:不会为该片段写入深度缓冲区)。 否则,透明度将调整为 1.0,使该片段完全不透明。在透明度混合方面,无论截断测试结果如何,此模式的行为均与Opaque 完全一致。这意味着glTF 2 规范中关于透明度覆盖的实现说明已得到满足。 具有透明度截断测试的对象也可以投射阴影,因为它们默认表现为不透明对象,除非相关属性(例如,不透明度小于 1、不透明度贴图或非默认的blendMode )表明情况并非如此(在这种情况下将无法投射阴影)。

另请参阅 alphaCutoff 和blendMode 。

attenuationColor : color

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

attenuationDistance : real

该属性定义了介质的密度,即光在介质中传播至与粒子发生相互作用前的平均距离。该值以世界坐标系为单位。默认值为+infinity 。

blendMode : enumeration

此属性决定了渲染后的模型颜色与背景颜色如何融合。

常量描述
SpecularGlossyMaterial.SourceOver默认混合模式。不透明物体将遮挡其后方的物体。对于使用此材质的模型,此默认模式本身并不能保证在渲染管道中进行 Alpha 混合,而是将该决定取决于以下几个因素: 如果对象和材质的总不透明度为1.0 ,且材质中没有不透明度贴图,同时alphaMode 未设置为强制进行Alpha混合的值,则该模型将被视为不透明,这意味着它将与其他不透明对象一起,在启用深度测试和深度写入的情况下进行渲染,且混合功能被禁用。 否则,该模型将被视为半透明,并在不透明物体之后渲染,与其他半透明物体一起按其中心点到摄像机的距离从后往前排序,同时启用 alpha 混合。
SpecularGlossyMaterial.Screen颜色使用反相乘法进行混合,产生更浅的结果。这种混合模式与渲染顺序无关;如果您使用半不透明对象,并且在面或模型排序不同时遇到“闪烁”现象,使用“屏幕混合”是避免闪烁的一种方法。
SpecularGlossyMaterial.Multiply颜色采用“乘法”模式进行混合,生成较暗的效果。此混合模式同样与渲染顺序无关。

另请参阅 alphaMode 以及Qt Quick 3D 架构。

clearcoatAmount : real

此属性定义清漆层的强度。

默认值为0.0

clearcoatChannel : enumeration

此属性定义了用于从clearcoatMap 读取清漆量值的纹理通道。默认值为Material.R 。

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
Material.B从纹理的 B 通道读取值。
Material.A从纹理的 A 通道读取值。

clearcoatFresnelBias : real

此属性会增强正对表面方向的反射(即直接观察表面时),同时保留掠射角度下的反射效果。若要修改该材质,必须启用“clearcoatFresnelScaleBiasEnabled ”选项。默认值为“0.0 ”。

clearcoatFresnelPower : real

该属性可减少正向反射(直接观察表面时),同时保持掠射角下的反射效果。默认值为5.0 。

clearcoatFresnelScale : real

此属性会调整正对反射(直接观察表面时)的强度,同时保留掠射角下的反射效果。若要修改该材质,必须启用“clearcoatFresnelScaleBiasEnabled ”选项。默认值为1.0 。

clearcoatFresnelScaleBiasEnabled : real

将该值设置为 true 后,材质将考虑“清漆菲涅尔尺度”和“清漆菲涅尔偏移”参数。默认值为false 。

clearcoatMap : Texture

此属性定义了一种用于确定清漆层强度的纹理。clearcoatAmount 的值将乘以从该纹理中读取的值。

clearcoatNormalMap : Texture

此属性定义了一种纹理,用于确定应用于清漆层的法线贴图。

clearcoatRoughnessAmount : real

此属性定义了清漆层的粗糙度。默认值为0.0

clearcoatRoughnessChannel : enumeration

该属性定义了用于从clearcoatRoughnessMap 读取清漆粗糙度值的纹理通道。默认值为Material.G 。

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
Material.B从纹理的 B 通道读取值。
Material.A从纹理的 A 通道读取值。

clearcoatRoughnessMap : Texture

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

emissiveChannel : enumeration [since 6.8]

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

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
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]

启用此属性后,材质将使用emissiveMap 中emissiveChannel 的单一值作为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从纹理的 R 通道读取值。
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不计算任何照明。此模式(不出所料)速度非常快,当使用无需通过照明进行着色的图像贴图时,效果相当显著。除反照率值、透明度值和顶点颜色外,所有其他着色属性都将被忽略。

lineWidth : real

当几何体使用“线”或“线带”作为原始类型时,该属性用于确定渲染线的宽度。默认值为 1.0。在渲染其他类型的几何体(例如三角面片)时,该属性不适用。

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

maxHeightMapSamples : int

该属性定义了使用heightMap 进行视差遮挡映射时所使用的最大采样数。maxHeightMapSamples的值表示当视线与表面平行时,heightMap 中使用的采样数。默认值为32。

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

注意: 仅当出现不希望出现的伪像时,才应调整此 值以微调使用heightMap 的材质。

minHeightMapSamples : int

此属性定义了使用heightMap 进行视差遮挡映射时所使用的最小采样点数量。minHeightMapSamples的值表示当直接观察一个表面时(即摄像机视线与片段垂直时),heightMap 中使用的采样点数量。默认值为8。

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

注意: 仅当出现不希望出现的伪影时,才应调整此 值以微调使用heightMap 的材质。

normalMap : Texture

此属性定义了一张用于模拟材质表面精细几何位移的RGB图像。RGB通道分别表示X、Y、Z方向的法线偏差。

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

normalStrength : real

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

occlusionAmount : real

此属性包含用于调整“occlusionMap ”纹理中值的倍数。该值应在 0.0 到 1.0 之间。默认值为 1.0。

occlusionChannel : enumeration

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

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
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从纹理的 R 通道读取值。
Material.B从纹理 B 通道读取值。
Material.A从纹理的 A 通道读取值。

opacityMap : Texture

此属性定义了一种纹理,用于针对材质的不同部分以不同的方式控制其不透明度。

pointSize : real

当几何体使用“点”作为原始类型时,此属性决定了渲染出的点的大小。默认值为 1.0。在渲染其他类型的几何体(例如三角形网格)时,此属性不适用。

警告: 根据底层图形 API 的不同,运行时可能不支持 1 以外的点 大小。例如,在 Direct 3D 中,设置 1 以外的大小将不起作用。

specularChannel : enumeration [since 6.8]

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

常量描述
Material.R从纹理的 R 通道读取值。
Material.G从纹理的 R 通道读取值。
Material.B从纹理的 B 通道读取值。
Material.A从纹理的 A 通道读取值。

该属性自 Qt 6.8 起引入。

specularColor : color

此属性定义镜面反射的RGB颜色。如果提供了透明度值,则该值将被忽略。

默认值为Qt.White

specularMap : Texture

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

specularSingleChannelEnabled : bool [since 6.8]

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

该属性自 Qt 6.8 起引入。

thicknessChannel : enumeration

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

常量描述
Material.R从纹理的 R 通道读取数值。
Material.G从纹理的 R 通道读取值。
Material.B从纹理的 B 通道读取值。
Material.A从纹理的 A 通道读取值。

thicknessFactor : real

该属性定义了表面下方体积的厚度。与SpecularGlossyMaterial 的许多其他属性不同,thicknessFactor中定义的值是0.0到+无穷大之间的数值,表示模型坐标系中的厚度。值为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]

启用此属性后,材质将使用网格的顶点颜色作为各种属性(例如 Glossiness、OcclusionAmount 等)的蒙版。默认值为 false。

该属性于 Qt 6.8 中引入。

© 2026 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.