DefaultMaterial QML Type

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

Import Statement: import QtQuick3D
Inherits:

Material

Status: Deprecated since 6.4

自 QtQuick3D 6.4 起,该类型已被弃用。我们强烈建议不要在新代码中使用它。

属性

详细说明

建议使用PrincipledMaterialSpecularGlossyMaterial 代替。

警告: 此材质仅出于兼容性考虑而提供,不应在新代码中使用。在使用镜面/光泽度工作流程创建材质时,请首选SpecularGlossyMaterial ;在使用金属/粗糙度工作流程创建材质时,请首选PrincipledMaterial

在场景中渲染模型之前,必须至少有一种材质附加到模型上,用于描述网格的着色方式。DefaultMaterial 是一种易于使用的材质,可让您使用镜面/光泽度类型的工作流程来描述您的材质。该材质具有合理的默认值,可用于为模型着色,而无需更改任何属性。

镜面/光泽度工作流程

默认材质提供了一种使用镜面/光泽度类型工作流程创建材质的方法。材质的主要属性通过specularroughnessdiffuse color 属性进行控制。

镜面反射

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

光泽度(粗糙度)

表面的光泽度取决于表面的光滑或不规则程度。光滑表面的光反射会更强烈,而粗糙表面的光反射会更分散。在 Default 材质中,材质的光泽度是通过roughness 属性控制的。

漫反射颜色

diffuse color 属性描述了材质的基本颜色,与PrincipledMaterial 的基本颜色不同,漫反射颜色不包含任何有关材质反射率的信息。不过,对于反射表面,漫反射颜色应设置为黑色色调,因为这将有助于产生镜面反射颜色。

属性文档

blendMode : enumeration

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

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

另请参阅 Qt Quick 3D 架构


bumpAmount : real

该属性控制bumpMapnormalMap 的模拟位移量。默认值为0 ,禁用凹凸效果。范围为 [0,1]。


bumpMap : Texture

该属性定义了一个灰度纹理,用于模拟材料表面的细微几何体位移。较亮的像素表示凸起区域。效果的大小由bumpAmount 属性控制。

注意: 凹凸贴图不会影响模型的轮廓。


diffuseColor : color

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


diffuseLightWrap : real

该属性决定半透明贴图的光包裹量。如果数值为 0,则完全不包裹光线;如果数值为 1,则会将光线包裹在物体周围。


diffuseMap : Texture

此属性定义了应用于材质的纹理。使用带有透明度的纹理还将应用 alpha 通道作为不透明度贴图。


emissiveFactor : vector3d

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

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


emissiveMap : Texture

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

另请参阅 emissiveFactor


fresnelPower : real

该属性可减少正面(直视表面)的反射,同时保持掠过角度的反射。默认值为0 ,禁用菲涅尔效果。


indexOfRefraction : real

该属性控制fresnelPower 影响的反射角度。默认值为1.45 。该值必须大于或等于1.0

注: 世界上没有任何已知材料的反射率远大于3.0


lighting : enumeration

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

默认值为DefaultMaterial.FragmentLighting

使用DefaultMaterial.FragmentLighting 时,会为每个渲染像素计算漫反射和镜面反射光照。某些效果(如菲涅尔或凹凸贴图)需要DefaultMaterial.FragmentLighting 才能实现。

使用DefaultMaterial.NoLighting 时,不计算光照。这种模式(可以预见)速度非常快,在使用不需要照明阴影的图像贴图时非常有效。

常数说明
DefaultMaterial.NoLighting不计算光照。
DefaultMaterial.FragmentLighting计算每个片段的光照。

lineWidth : real

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

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

注: 与大多数其他材质属性不同,线宽是在图形管道对象中嵌入的,与blendMode 类似。因此,如果要改变值,就必须创建一个新的管道对象,如果经常将该属性更改为多个不同值,随着时间的推移,代价可能会很高(性能和资源占用)。例如,可以对该属性进行动画处理,但应避免。


normalMap : Texture

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

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


opacity : real

该属性仅降低该材质的不透明度,与模型无关。默认值为1.0 。范围为 [0.0, 1.0]。


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 没有影响。


roughnessChannel : enumeration

此属性定义用于从roughnessMap 读取粗糙度值的纹理通道。默认值为Material.R

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

roughnessMap : Texture

此属性定义了一个纹理,用于控制材质的镜面粗糙度。如果纹理包含多个通道(RGBA),则可以使用roughnessChannel 属性设置正确的通道。


specularAmount : real

该属性控制镜面反射(高光和反射)的强度。默认值为0 ,禁用镜面反射。范围为 [0.0, 1.0]。

注: 该属性不会影响specularReflectionMap ,但会影响场景的反射量SceneEnvironment::lightProbe

注: 除非您的网格分辨率很高,否则可能需要使用DefaultMaterial.FragmentLighting 才能从场景灯光中获得良好的镜面反射高光。


specularMap : Texture

该属性定义了一个 RGB 纹理,用于调节整个材质表面的镜面反射量和颜色。这些值乘以specularAmount


specularModel : enumeration

该属性决定使用哪些函数来计算场景中灯光的镜面反射高光。

常数说明
DefaultMaterial.Default镜面反射照明使用默认照明模型。
DefaultMaterial.KGGX镜面反射照明使用 GGX 照明模型。

specularReflectionMap : Texture

此属性用于设置材质上用于镜面反射高光的纹理。

它通常用于执行环境贴图:当模型旋转时,贴图将看起来像是从环境中反射出来的。为使其达到预期效果,需要将贴图的mappingMode 设置为 Texture.Environment。镜面反射贴图是一种以相对较低的成本添加高质量外观的简便方法。

注: light probeSceneEnvironment 关联,从而依靠基于图像的照明,可以实现类似的环境反射效果。然而,光探针是一种概念上不同的解决方案,在性能方面可能更加昂贵。每种方法都有自己的特定用途,需要根据具体情况决定使用哪种方法。在将纹理设置为属性时,specularReflectionMap 具有优势,因为它没有任何限制,并且支持所有类型的纹理,包括通过sourceItemQt Quick 子场景获取数据的纹理。

注意: 清晰的图像会使材质看起来非常光亮;图像越模糊,材质看起来就越柔和。

另请参阅 Texture::mappingMode


specularRoughness : real

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


specularTint : color

该属性定义了用于调整镜面反射的颜色。使用白色无效果


translucencyChannel : enumeration

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

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

translucencyMap : Texture

该属性定义了一个灰度纹理,用于控制光线从材料背后穿过的程度。


translucentFalloff : real

该属性根据物体法线与光源的夹角定义透光率的衰减量。


vertexColorsEnabled : bool

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


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