默认材质 QML 类型

允许您使用光泽/光泽度工作流程定义 3D 物理的材质。 更多...

导入语句import QtQuick3D
继承

Material

状态自 6.4 版本以来已弃用

此类型自 QtQuick3D 6.4 版本以来已被弃用。我们强烈建议不要在新代码中使用它。

属性

详细说明

首选使用 PrincipledMaterialSpecularGlossyMaterial

警告:此材料仅提供兼容性原因,不应用于新代码。建议使用SpecularGlossyMaterial创建使用镜面/光泽度工作流程的材料或使用PrincipledMaterial创建使用金属/粗糙度工作流程的材料。

在模型可以在场景中渲染之前,它必须至少有一个与它相同的材料,以描述网格应该如何着色。默认材料是一个易于使用的材料,允许您使用镜面/光泽度类型工作流程来描述您的材料。这个材料有合理的默认值,可以用来自动着色模型而无需更改任何属性。

镜面/光泽度工作流程

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

镜面

镜面反射率描述了物体表面的镜面量和颜色。对于反光材料,主要颜色贡献来自此属性。

光泽度(粗糙度)

表面光泽度取决于表面有多光滑或不规则。平滑的表面将有比粗糙表面更强烈的光反射,其中光反射会更分散。在默认材料中,通过菊roughness属性来控制材料的表面光泽度。

漫反射颜色

漫反射颜色属性描述了材料的基色,而与PrincipledMaterial的基础颜色不同,漫反射颜色不包含任何有关材料反射性质的信息。然而,对于反射表面,漫反射颜色应设置为黑色色调,这样就能允许镜面颜色发挥作用。

属性文档

混合模式枚举

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

常数描述
DefaultMaterial.SourceOver默认混合模式。不透明对象遮挡其后对象。此默认模式本身不保证在着色管道中对使用此材料模型执行alpha混合,而是取决于许多因素:如果对象和材料的总不透明度为1.0并且材料中没有任何半透明像素的纹理贴图,则模型被视为不透明,意味着它将以深度测试和深度写入启用的方式与其它不透明对象一同渲染,禁用混合。否则,模型被视为半透明,并在不透明对象之后与其它半透明对象按照从后向前的顺序根据其中心与相机的距离渲染,启用alpha混合。
DefaultMaterial.Screen使用反转乘法混合颜色,产生更亮的结果。此混合模式是顺序无关的;如果您正在使用半透明对象并遇到跳变(popping),则使用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) ,表示根本没有发射贡献。

注意: 将照明模式设置为 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。当渲染其他类型的几何体,如三角形网格时,此属性不相关。

警告:除了1以外的线条宽度可能在运行时不受支持,这取决于底层的图形API。在这种情况下,更改宽度的请求会被忽略。例如,下面提到的都不能期望支持宽线条: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具有优势,因为它没有限制,并支持所有类型的纹理,包括那些通过sourceItem从Qt 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

当此属性启用时,材料将使用网格的顶点颜色。这些颜色将与为材料指定的任何其他颜色相乘。


© 2024 Qt公司。此处包含的文档贡献版权归各自所有者。此处提供的文档根据自由软件基金会的发布,受GNU自由文档许可协议版本1.3的条款授权。Qt及其相关标志是芬兰和/或其他国家的Qt公司的商标。所有其他商标均为各自所有者的财产。