SceneEnvironment QML Type
用于配置场景的渲染方式。更多
Import Statement: | import QtQuick3D |
Inherits: | |
Inherited By: |
属性
- antialiasingMode : enumeration
- antialiasingQuality : enumeration
- aoBias : real
- aoDistance : real
- aoDither : bool
- aoEnabled : bool
(since 6.5)
- aoSampleRate : int
- aoSoftness : real
- aoStrength : real
- backgroundMode : enumeration
- clearColor : color
- debugSettings : QtQuick3D::DebugSettings
(since 6.5)
- depthPrePassEnabled : bool
- depthTestEnabled : bool
- effects : List<QtQuick3D::Effect>
- fog : QtQuick3D::Fog
(since 6.5)
- lightProbe : QtQuick3D::Texture
- lightmapper : Lightmapper
- oitMethod : enumeration
(since 6.9)
- probeExposure : real
- probeHorizon : real
- probeOrientation : vector3d
- scissorRect : rect
(since 6.5)
- skyBoxCubeMap : QtQuick3D::CubeMapTexture
(since 6.4)
- skyboxBlurAmount : real
(since 6.4)
- specularAAEnabled : bool
(since 6.4)
- temporalAAEnabled : bool
- temporalAAStrength : real
- tonemapMode : enumeration
(since 6.0)
详细说明
SceneEnvironment 定义了一组场景渲染的全局属性。
注: QtQuick3D.Helpers 模块提供了一种ExtendedSceneEnvironment 类型,它继承自 SceneEnvironment 并在其上添加了许多内置特效。
要使用 SceneEnvironment 或ExtendedSceneEnvironment ,请将View3D 的environment property 与这些类型的实例关联起来。该对象可以内联声明,例如像这样:
View3D { environment: SceneEnvironment { antialiasingMode: SceneEnvironment.MSAA tonemapMode: SceneEnvironment.TonemapModeFilmic backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "panoramic_hdri_background.hdr" } } }
另外,也可以单独定义环境对象。然后,它可以被一个或多个View3D 对象引用。下面是一个示例代码片段,这次使用的是ExtendedSceneEnvironment :
ExtendedSceneEnvironment { id: myEnv vignetteEnabled: true } View3D { width: parent.width / 2 environment: myEnv } View3D { width: parent.width / 2 x: parent.width / 2 environment: myEnv }
功能概述
- 抗锯齿设置。有关此主题的概述,请参阅 "抗锯齿最佳实践"。相关属性为antialiasingMode,antialiasingQuality,specularAAEnabled,temporalAAEnabled,temporalAAStrength 。此外,如果使用ExtendedSceneEnvironment ,还可以通过fxaaEnabled 使用另一种方法。
- 屏幕空间环境遮蔽。相关属性有aoEnabled,aoStrength,aoBias,aoDistance,aoDither,aoSampleRate,aoSoftness 。
- 透明色、天空盒、基于图像的照明。有关 IBL 的更多信息,请参阅使用基于图像的照明。相关属性为backgroundMode,clearColor,lightProbe,probeExposure,probeHorizon,probeOrientation,skyboxBlurAmount,skyBoxCubeMap 。
- 色调映射。tonemapMode 配置色调映射方法,用于在图形流水线末尾将高动态范围色彩值转换为 0-1 范围。ExtendedSceneEnvironment 提供了一些附加属性,如whitePoint 和sharpnessAmount ,可用于调整色调映射计算。
- 深度缓冲区设置。相关属性为depthPrePassEnabled,depthTestEnabled 。
- 后期处理效果。除了ExtendedSceneEnvironment 提供的内置后处理效果外,应用程序还可以通过Effect 类型提供自己的自定义效果。effects 属性是Effect 实例的列表。
- 调试可视化设置,如线框模式或只渲染材料的某些颜色贡献。这由debugSettings 属性引用的DebugSettings 对象控制。当DebugView 项目被添加到场景中时,大多数这些设置也可以通过交互方式进行控制。
- 雾化设置。要启用雾,请在fog 属性中设置一个适当配置的Fog 对象。
- 光贴图烘焙设置。当场景中的某些模型使用预烘焙光贴图时,在lightmapper 属性中设置的Lightmapper 对象将定义烘焙过程中使用的设置。
- 剪刀设置。要应用与视口不同的剪刀,请设置scissorRect 属性。
另请参阅 ExtendedSceneEnvironment 。
属性文档
antialiasingMode : enumeration |
该属性控制渲染场景时应用的抗锯齿模式。
可能的值有
常量 | 说明 |
---|---|
SceneEnvironment.NoAA | 不应用抗锯齿。 |
SceneEnvironment.SSAA | 应用超采样抗锯齿。 |
SceneEnvironment.MSAA | 应用多采样抗锯齿。 |
SceneEnvironment.ProgressiveAA | 应用渐进式抗锯齿。 |
默认值为SceneEnvironment.NoAA
。
超采样
以较高分辨率渲染场景,然后缩放到实际分辨率。
优点高质量。可反差所有场景内容,而不仅仅是几何轮廓。
缺点:通常比 MSAA 更昂贵。会增加视频内存使用量。支持View3D 项目中除 Inline 之外的所有渲染模式,但由于该技术意味着首先要渲染到纹理,因此使用 Underlay 或 Overlay 渲染模式启用 SSAA 会导致使用通常不需要的中间纹理和渲染传递,这意味着性能成本可能会更加明显。建议仅在默认渲染模式为 "离屏 "时使用 SSAA。
多重采样
对几何体的边缘进行超级采样,使轮廓更加平滑。但这种技术对几何体内部的材质没有影响。
优点适用于任何View3D 项目,与渲染模式无关。对几何体轮廓的效果很好,因为在几何体轮廓中混叠现象通常最明显;在快速动画中也能正常工作。性能完全取决于系统(GPU)的能力。
缺点:无助于解决纹理或反射问题。会增加视频内存使用量。在性能较弱的图形硬件上使用可能比较昂贵。可根据 renderMode 控制每个窗口或单个View3D 项目。在使用已应用特效的 Underlay/Overlay 或 Offscreen 时,可为每个View3D 项目控制 MSAA。另一方面,使用不带任何效果的 Underlay/Overlay 或 Inline 会使 MSAA 受控于每个窗口。
注意: 对于View3D 项目,如果使用的renderMode 不是 Underlay/Overlay(带效果的 Underlay/Overlay)或 Offscreen,则只能通过QQuickWindow 或QQuickView 的QSurfaceFormat 启用多重采样。这将影响该窗口中的所有内容,包括 2D 和 3D 内容。
渐进式抗锯齿
该属性用于启用和设置应用于场景的渐进抗锯齿级别。
当场景中的所有内容都停止移动时,摄像机会在帧与帧之间轻微抖动,每个新帧的结果都会与之前的帧混合。累积的帧数越多,效果越好。
优点当场景中的所有内容都静止不动时,效果会很好。
缺点:在发生任何视觉变化时都不会生效。由于需要累积和混合,因此成本较高。增加视频内存使用量。
注意: 渐进式抗锯齿目前不支持多视图渲染,也不应在 VR/AR 应用程序中使用。
有关抗锯齿方法的更多讨论,请参阅 "抗锯齿最佳实践"。
antialiasingQuality : enumeration |
此属性设置应用于场景的抗锯齿级别。行为取决于所使用的antialiasingMode 。当antialiasingMode 属性设置为NoAA
时,该属性不会产生影响。
可能的值有
常量 | 说明 |
---|---|
SceneEnvironment.Medium | SSAA:抗锯齿使用 1.2 倍超采样分辨率。 MSAA:抗锯齿使用每个像素 2 个采样点。 ProgressiveAA:抗锯齿使用 2 帧最终图像。 |
SceneEnvironment.High | SSAA:抗锯齿使用 1.5 倍超采样分辨率。 MSAA:MSAA:抗锯齿技术使用每个像素 4 个采样点。 ProgressiveAA:抗锯齿技术使用 4 帧最终图像。 |
SceneEnvironment.VeryHigh | SSAA:抗锯齿使用 2.0 倍超采样分辨率。 MSAA:MSAA:抗锯齿技术使用每个像素 8 个采样点。 ProgressiveAA:抗锯齿对最终图像使用 8 帧。 |
默认值为SceneEnvironment.High
aoBias : real |
该属性定义了防止物体在近距离显示环境遮挡的截止距离。数值越大,在出现环境遮挡之前物体之间所需的距离就越长。
注意: 如果在本应没有阴影的物体上看到环境遮挡阴影,可稍微增大该值,以消除近距离的效果。
默认值为 0.0。
aoDistance : real |
该属性大致定义了环境闭塞阴影从物体扩散的距离。距离越远,对性能的影响越大。
默认值为 5.0。
图片为默认aoSoftness 和最大aoStrength :
aoDistance 为 5 | aoDistance 为 1 |
---|---|
注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如aoStrength,aoSoftness, aoDistance ,aoDither,aoBias, 和aoSampleRate 。
另请参见 aoStrength 和aoSoftness 。
aoDither : bool |
当启用该属性时,它会分散环境闭塞阴影带的边缘,以提高平滑度(有时可能会产生明显的图案伪影)。
注意: 相机剪辑平面之间的距离过大可能会导致环境光遮蔽出现问题。如果您在环境遮蔽中看到奇怪的条带,请尝试调整相机的clipFar 属性,使其更接近内容。
默认值为false
。
另请参阅 PerspectiveCamera.clipFar 和OrthographicCamera.clipFar 。
aoEnabled : bool |
启用或禁用环境遮蔽。
默认值为false
,表示已禁用环境遮蔽。
注: 如果aoStrength 或aoDistance 为 0,那么将此属性设置为true
也会适当设置这些值,使环境遮蔽有效。
注: 要获得视觉效果良好的屏幕空间环境遮蔽,需要仔细调整一系列相关参数,如aoStrength,aoSoftness,aoDistance,aoDither,aoBias 和aoSampleRate 。
该属性在 Qt 6.5 中引入。
另请参见 aoStrength 和aoDistance 。
aoSampleRate : int |
该属性以牺牲性能为代价定义环境闭塞的质量(更多灰色阴影)。
值必须为 2、3 或 4。默认值为 2。
aoSoftness : real |
该属性定义环境遮蔽阴影边缘的平滑程度。
数值必须在 0.0 和 50.0 之间。默认值为 50.0。
图片为默认值aoDistance 和最大值aoStrength :
软度为 50 | aoSoftness 为 25 |
---|---|
注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如aoStrength, aoSoftness,aoDistance,aoDither,aoBias, 和aoSampleRate 。
另请参见 aoStrength 和aoDistance 。
aoStrength : real |
该属性定义了所应用的环境隐蔽量。环境遮蔽是一种近似全局光照的形式,会在物体靠近时产生非定向的自阴影。值为 100 时,会产生全黑阴影;值越小,阴影越淡。如果数值为 0,则会完全禁用环境光遮蔽,从而提高性能,但会影响场景中 3D 物体渲染的视觉逼真度。
0 以外的所有值对性能的影响相同。
默认值为 0.0。最大值为 100.0。
值为 0 相当于将aoEnabled 设置为 false。
图中为默认的aoSoftness 和aoDistance :
aoStrength 为 0(禁用 AO) | aoStrength 为 100 | aoStrength 为 50 |
---|---|---|
注: 要获得视觉效果良好的屏幕空间环境闭塞效果,需要仔细调整一系列相关参数,如 aoStrength、aoSoftness,aoDistance,aoDither,aoBias 和aoSampleRate 。
另请参见 aoEnabled,aoDistance, 和aoSoftness 。
backgroundMode : enumeration |
该属性控制是否以及如何清除场景背景。
注意: View 3D 背景颜色缓冲区的清除并不总是发生:根据renderMode 属性,View3D 本身可能不会执行任何清除操作,在这种情况下,SceneEnvironment.Transparent
和SceneEnvironment.Color
没有任何作用。只有默认的Offscreen
render mode (渲染到纹理中)才支持所有的清除模式。在Underlay
模式下,使用QQuickWindow::setColor() 或Window.color 控制Qt Quick 场景的清除颜色。SkyBox 的处理方式不同,因为它意味着绘制实际的几何图形,所以在所有渲染模式下都能正常工作。
常量 | 说明 |
---|---|
SceneEnvironment.Transparent | 将场景清除为透明。这对于在另一个项目上渲染 3D 内容非常有用。当View3D 使用 Underlay 或 Overlay 渲染模式且未启用任何后期处理时,此模式不会产生任何影响。 |
SceneEnvironment.Color | 使用clearColor 属性指定的颜色清除场景。当View3D 使用 Underlay 或 Overlay 渲染模式且未启用任何后期处理时,该模式不起作用。 |
SceneEnvironment.SkyBox | 场景不会被清除,但会渲染一个 SkyBox 或 Skydome。SkyBox 是使用lightProbe 属性中定义的 HDRI 贴图定义的。 |
SceneEnvironment.SkyBoxCubeMap | 场景不会被清除,但会渲染一个 SkyBox 或 Skydome。SkyBox 是使用skyBoxCubeMap 属性中定义的立方体贴图定义的。 |
默认值为SceneEnvironment.Transparent
以下面的示例为例。苏珊娜模型应使用balsam
工具进行预处理,并来自glTF 示例模型库。
import QtQuick import QtQuick3D import QtQuick3D.Helpers Item { width: 1280 height: 720 View3D { id: v3d anchors.fill: parent environment: ExtendedSceneEnvironment { backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" } glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } DirectionalLight { } Suzanne { scale: Qt.vector3d(50, 50, 50) z: -500 } PerspectiveCamera { id: camera } WasdController { controlledObject: camera } } }
除了使用DirectionalLight 之外,我们还使用了基于图像的照明,并将探针纹理用作天空盒,结果如下:
如果没有光探测器会发生什么?
backgroundMode: SceneEnvironment.Transparent
这里的背景不是由View3D 提供的,而是由托管 2D 和 3D 场景的QQuickWindow 或QQuickView 提供的。照明仅基于DirectionalLight 。
使用固定的透明色:
backgroundMode: SceneEnvironment.Color clearColor: "green"
另请参阅 lightProbe,QQuickWindow::setColor(),Window::color, 和View3D 。
clearColor : color |
debugSettings : QtQuick3D::DebugSettings |
该属性指定了一个DebugSettings
对象,用于配置渲染器的调试工具。在构建过程中,SceneEnvironment 会自动创建一个与自身相关的DebugSettings 对象,因此通常不需要设置自定义的DebugSettings 。
启用线框模式渲染场景的示例:
可视化网格的法向量:
可视化镜面光照贡献:
该属性在 Qt 6.5 中引入。
另请参阅 DebugSettings 。
depthPrePassEnabled : bool |
启用该属性后,渲染器会对不透明对象执行 Z-prepass(Z-prepass)处理,这意味着渲染器在渲染不透明对象时会禁用简单着色器和颜色写入功能,以便在为主要渲染处理发出绘制调用之前预先填充深度缓冲区。
这可以根据场景内容提高性能。通常情况下,有大量重叠对象和昂贵片段着色的场景会从中受益。同时,值得注意的是,渲染器会对不透明对象执行前后排序,这本身就有助于减少不必要的片段着色,因此 Z-prepass 并不总能带来显著的改善。
在使用平铺渲染架构(这在移动和嵌入式系统中很常见)的 GPU 上,建议将其设置为false
。
默认值为false
。
注意: 禁用深度测试时,此属性不会产生任何影响。
depthTestEnabled : bool |
默认值为true
。默认情况下,渲染器会将场景中的对象分类为opaque
或semi-transparent
。首先渲染opaque
列表中的对象(具有相关材质的子模型),并启用深度测试和深度写入,从而为没有半透明区域的典型 3D 物体提供最佳的 Z 剔除效果。semi-transparent
列表中的物体将在禁用深度写入的情况下进行渲染,但仍会启用深度测试(针对不透明物体进行测试),并按照从后向前的顺序(根据中心点与摄像机的距离排序)进行渲染。这样就可以正确混合("透视")三维物体的表面半透明区域,这些半透明区域可能是由于node opacity ,也可能是由于材质中的某些颜色或纹理贴图。
将此属性设置为false
时,Z 缓冲区不会被写入并进行测试,深度测试也会被跳过,所有物体(包括完全不透明的物体)都会按从前到后的顺序一次性渲染。
将此属性设置为false
应该很少需要。在一些场景中,使用两轮渲染的好处不大,因为不透明对象很少,或者这些对象的变换方式使得从后往前排序的单次渲染效果更好,这时就需要使用该属性。
注意: 将此属性设置为false
可能会在某些场景中导致渲染错误。此外,如果不启用深度缓冲区,自定义材质和特效中的阴影、环境闭塞、SCREEN_TEXTURE
和DEPTH_TEXTURE
等某些功能将无法正常运行。
注意: 该标记无法控制深度或深度模板缓冲区的存在。即使将其设置为false
,仍可能分配此类缓冲区。
effects : List<QtQuick3D::Effect> |
此属性包含将应用于整个视口的后处理效果列表。每种效果的结果都会反馈给下一种效果,因此顺序非常重要。
注意: 由于技术原因,不支持在列表中多次添加相同的Effect 节点,这样会产生意想不到的结果。
fog : QtQuick3D::Fog |
lightProbe : QtQuick3D::Texture |
该属性定义了用于场景照明的图像,可以代替标准灯光,也可以作为标准灯光的补充。
图像最好是高动态范围图像或预生成的立方体地图。由于无需在滤波和生成立方体贴图上花费时间,预制图像在运行时可大大提高性能。如果源文件是 .hdr 或其他图像,基于 GPU 的预处理会在加载图像文件后的运行时进行,这可能会耗费大量时间,尤其是在嵌入式和移动硬件上。因此,强烈建议应用程序最迟在构建时对 .hdr 图像进行预处理,如此处所述。
注意: 不支持将纹理与sourceItem 结合使用。由于性能影响,对动态Qt Quick 内容的所有 mip 级别进行预过滤在实践中通常是不合理的。
有关基于图像的照明的更多信息,请参阅使用基于图像的照明。
注: 当光探针纹理属性设置为有效纹理时,该纹理将用于照明,与backgroundMode 无关。但是,当backgroundMode 设置为SceneEnvironment.SkyBox
时,该纹理也将用于将场景背景渲染为天空盒。
下面的示例是通过改变以下场景环境中的backgroundMode 生成的。该场景没有 DirectionLight、PointLight 或SpotLight 。所有照明均基于全景 HDRI 图像。
import QtQuick import QtQuick3D import QtQuick3D.Helpers Item { width: 1280 height: 720 View3D { id: v3d anchors.fill: parent environment: ExtendedSceneEnvironment { backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" } tonemapMode: SceneEnvironment.TonemapModeFilmic sharpnessAmount: 0.4 glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } Node { scale: Qt.vector3d(100, 100, 100) Sponza { } Suzanne { y: 1 scale: Qt.vector3d(0.5, 0.5, 0.5) eulerRotation.y: -90 } } PerspectiveCamera { id: camera y: 100 } WasdController { controlledObject: camera } } }
上述环境下的结果:
将backgroundMode 切换为SceneEnvironment.Transparent
会得到以下结果:
在这里,三维场景的照明与之前相同,这意味着材质在照明计算中使用光探针的方式与之前相同,但没有渲染天空盒。背景是白色的,因为这是托管 2D 和 3D 场景的QQuickWindow 的默认透明色。
将 lightProbe 属性值设回默认的空值是有效的。这样就取消了之前关联纹理的分配。例如,让我们使用 Delete 键在基于图像的天空盒照明和不基于图像的背景固定透明色照明之间进行动态切换:
environment: ExtendedSceneEnvironment { id: env backgroundMode: SceneEnvironment.SkyBox lightProbe: iblTex tonemapMode: SceneEnvironment.TonemapModeFilmic sharpnessAmount: 0.4 glowEnabled: true glowStrength: 1.25 glowBloom: 0.25 glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive } Texture { id: iblTex source: "00455_OpenfootageNET_field_low.hdr" } focus: true Keys.onDeletePressed: { if (env.backgroundMode == SceneEnvironment.SkyBox) { env.backgroundMode = SceneEnvironment.Color; env.clearColor = "green"; env.lightProbe = null; } else { env.backgroundMode = SceneEnvironment.SkyBox; env.lightProbe = iblTex; } }
按下 Delete 键的结果如下。请记住,这里使用的场景没有灯光,因此所有 3D 模型看起来都是全黑的。
虽然 lightProbe 通常与从图像文件(通常为 .hdr 或 .ktx)中获取数据的纹理实例结合使用,但它也可以与使用内存procedurally generated image data 的纹理实例结合使用。一个典型的例子就是纹理,其中的图像数据由ProceduralSkyTextureData 从QtQuick3D.Helpers 模块生成:
backgroundMode: SceneEnvironment.SkyBox lightProbe: Texture { textureData: ProceduralSkyTextureData { } }
这样我们就得到了一个程序化生成的 HDR 天幕纹理,它现在既可用作天幕,也可用于基于图像的照明:
另请参阅 backgroundMode,使用基于图像的照明,预生成 IBL 立方体地图,probeExposure,probeHorizon,probeOrientation, 和ProceduralSkyTextureData 。
lightmapper : Lightmapper |
当此属性设置为有效的 Lightmapper 对象时,烘焙光贴图时将考虑该对象指定的设置。
默认值为空,这意味着所有与烘焙相关的设置都将使用默认值。
有关如何烘焙光贴图的更多信息,请参阅Lightmapper 文档。
如果光照贴图与应用程序无关,且从未生成烘焙光照,则该属性和相关对象在实践中没有任何作用。
另请参阅 Model::usedInBakedLighting,Model::bakedLightmap,Light::bakeMode, 和Lightmapper 。
oitMethod : enumeration |
该属性包含 "阶独立透明度 "方法。将此属性设置为有效的 OIT 方法会使呈现器按照正确的深度顺序呈现透明像素。
可能的值有
常量 | 说明 |
---|---|
SceneEnvironment.OITNone | 关闭 OIT。 |
SceneEnvironment.OITWeightedBlended | 近似于独立于顺序的透明度。 |
默认值为None
,阶次独立透明度关闭。
加权混合
近似于阶次无关透明。透明片段被渲染到屏幕外的缓冲区,同时根据每个片段到摄像机的距离对其进行加权。然后在对每个像素去重后,将该缓冲区与后缓冲区混合。这种方法并不遵循所有片段的源过合成规则,因此结果与正确的结果不同,但这种方法也适用于较旧的硬件,而且比其他更严格的方法更快。
注意: 独立于顺序的透明性只适用于源过混合模式。如果场景中包含使用其他混合模式的对象,则会禁用 OIT。
此属性在 Qt 6.9 中引入。
probeExposure : real |
该属性可修改光探针发出的光量。色调映射的一部分是曝光映射,该属性调整光探针中的光值如何进行色调映射。
默认情况下,曝光值设置为 1.0。
注意: 当tonemapMode 设置为SceneEnvironment.TonemapModeNone
时,此属性不会产生影响。
另请参阅 lightProbe,probeHorizon, 和probeOrientation 。
probeHorizon : real |
该属性定义为递增值时,会在环境的下半部分增加黑暗(黑色),迫使照明主要来自图像的顶部(并消除下半部分的特定反射)。该属性可用于考虑地平面,因为地平面会遮挡探针从地面反射的光线。这是必要的,因为光探头的贡献直接来自图像,而不考虑场景的内容。
probeHorizon 属性的预期值范围在 0.0 和 1.0 之间。任何超出此范围的值都将被箝制在预期范围内。
默认情况下,probeHorizon 设置为 0.0,这意味着使用整个光线探针而无需调整。
注意: probeHorizon 属性只影响材质照明,对天空框的渲染没有影响。
另请参阅 lightProbe,probeExposure, 和probeOrientation 。
probeOrientation : vector3d |
该属性用于定义探针的方向。方向是以 x、y 和 z 轴上的欧拉角为单位定义的。
注: 该值将与lightProbe 纹理上设置的任何纹理旋转和偏移相结合,增强lightProbe 纹理的采样方式。
另请参阅 lightProbe,probeHorizon, 和probeExposure 。
scissorRect : rect |
该属性在视图坐标中定义了一个剪刀矩形,其左上角位于 [0, 0] 处。
此属性在 Qt 6.5 中引入。
skyBoxCubeMap : QtQuick3D::CubeMapTexture |
当背景模式为SkyBoxCubeMap
时,该属性定义了用作天空盒的立方体地图。
该属性在 Qt 6.4 中引入。
skyboxBlurAmount : real |
当SceneEnvironment.SkyBox
用于backgroundMode 属性时,该属性决定天空盒的模糊程度。默认值为0.0
,表示不模糊。
可接受的值范围在 0.0 和 1.0 之间,所有其他值将被箝制在此范围内。
该属性在 Qt 6.4 中引入。
specularAAEnabled : bool |
启用该属性后,镜面反射将得到缓解。镜面反差通常以亮点的形式出现,在移动摄像头时可能会闪烁。
默认值为 false。
禁用镜面反差 | 启用镜面反差修正 |
---|---|
此属性在 Qt 6.4 中引入。
temporalAAEnabled : bool |
启用该属性后,将使用时态抗锯齿。
摄像机会在帧与帧之间轻微抖动,每个新帧的结果都会与前一帧混合。
注: 当antialiasingMode 为 MSAA 时,时间抗锯齿不会产生影响。
注: 当与 ProgressiveAAantialiasingMode 结合使用时,在场景动画播放时使用 TemporalAA,而动画停止后则使用 ProgressiveAA。
优点由于摄像机的抖动,它可以找到原本丢失的真实细节;对性能影响较小。
缺点:快速移动的物体会造成单帧重影。
注意: 多视图渲染目前不支持时态抗锯齿,也不应在虚拟现实/增强现实应用中使用。
temporalAAStrength: real |
该属性可修改时间移动量(抗锯齿)。只有当temporalAAEnabled 属性为 true 时才会生效。
另请参阅 temporalAAEnabled 。
tonemapMode : enumeration |
该属性定义了在渲染前如何对颜色进行色调映射。Qt Quick 3D 中的所有渲染都是在线性色彩空间中进行的,在很多情况下会产生无法显示的色彩值。tonemapMode 决定了用于将颜色重新映射到可显示范围的技术。
默认值为SceneEnvironment.TonemapModeLinear
常量 | 说明 |
---|---|
SceneEnvironment.TonemapModeNone | 绕过所有色调映射。该模式在执行后期处理效果时非常有用。 |
SceneEnvironment.TonemapModeLinear | 应用线性色调映射。颜色经过伽玛校正,并以 sRGB 色彩空间返回。 |
SceneEnvironment.TonemapModeAces | 应用学院色彩编码系统色调映射。 |
SceneEnvironment.TonemapModeHejlDawson | 应用 Hejl-Dawson 色调映射。 |
SceneEnvironment.TonemapModeFilmic | 应用胶片色调映射。 |
有关这些不同模式的示例,请参阅ExtendedSceneEnvironment 。
注: 使用后期处理特效时,大多数特效都需要未调色的线性色彩数据。对于应用程序提供的、通过Effect 类型实现的自定义特效,重要的是要知道,从 Qt 6.5 开始,特效可以安全地假定它们使用线性色彩数据工作,并且色调映射会在链中最后一个特效的输出上自动执行。如果需要完全自定义色调映射,可考虑设置SceneEnvironment.TonemapModeNone
值来禁用内置色调映射,并在链中最后一个特效的颜色值上执行适当的调整。这不适用于ExtendedSceneEnvironment 的内置特效,因为无论环境中启用了何种内置特效组合,这些特效都会自动进行适当的色调映射。
此属性在 Qt 6.0 中引入。
© 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.