场景环境

场景环境组件和扩展场景环境组件定义了如何在全局范围内渲染场景。

注意:场景环境和其在属性视图中的位置的可用属性根据你所选择的目标 Qt 版本而变化,当你在创建项目时选择。

注意:扩展场景环境可在使用 Qt 6.5 或更高版本作为目标 Qt 版本的项目中可用。

将场景环境添加到项目

在创建项目时通过选择合适的预设将场景环境组件添加到项目中。

使用3D预设创建包含场景环境的View3D组件项目。如果你需要手动添加,它在组件 > Qt Quick 3D中可用。

使用扩展 3D预设创建包含扩展场景环境的三维视图组件项目。它也在组件 > Qt Quick 3D 辅助工具中可用。

设置场景环境

要为场景环境定义属性,请在导航器中选中场景环境,并在属性视图中指定其属性。

属性视图的场景环境部分设置属性,以指定是否以及如何清除场景的背景,应用后处理效果到场景,定义在场景渲染之前如何色调映射颜色,以及指定雾设置。

"The Scene Environment properties"

清除颜色属性指定了如果将背景模式定义为颜色时,将使用哪种颜色来清除场景的背景。使用颜色选择器选择颜色。

《后台模式》属性定义了场景背景是否应该清除以及清除方式。通过下拉菜单选择可用的模式之一。

后台模式描述
透明场景被清除为透明,这适用于在另一个项目之上渲染3D内容。当View3D组件使用UnderlayOverlay作为渲染模式时,此模式无效果。
颜色场景使用指定的Clear color属性清除颜色。当View3D组件使用UnderlayOverlay作为渲染模式时,此模式无效果。
天空盒场景不会被清除,而是渲染一个SkyBox或Skydome。使用Light probe部分中的Image属性定义一个SkyBox(在Qt 5中,在Image-Based Lighting组中找到Light Probe属性)。
SkyBoxCubeMap场景不会被清除,而是渲染一个使用CubeMapTextureSkyBox或Skydome。立方体贴图有六个面(X+,X-,Y+,Y-,Z+,和Z-),每个面都是独立的2D图像。选择此模式后,自定义材料和后期处理效果可以在着色器中使用立方体贴图纹理。

若要使场景保持未清除状态,请将背景模式设置为Unspecified

《效果》属性定义对场景应用的后处理效果。使用下拉菜单选择要应用于整个场景的一个效果。效果的顺序很重要,因为每个效果的结果都会被输入到下一个。

《色调映射模式》属性定义在渲染前如何对颜色进行色调映射。选择ToneMapModeLinear应用线性色调映射,进行伽玛校正后将颜色返回sRGB颜色空间。您还可以选择ToneMapModeAces应用学院色彩编码系统,ToneMapModeHejlDawson应用Hejl-Dawson色调映射,或ToneMapModeFilmic应用电影色调映射。

注意:《色调映射模式》属性在Qt 5中不可用。

《雾》属性定义应用于场景的雾设置。当场景环境中的《雾》属性设置为有效的《雾》对象时,使用这些属性来配置雾的渲染。此类提供的简单雾是由材质实现的。使用下拉菜单为您场景选择一个《雾》对象。

应用抗锯齿

使用抗锯齿使屏幕上的曲线更加平滑。在《属性》视图的《抗锯齿》部分,您可以指定抗锯齿的模式和质量,还可以启用临时抗锯齿并定义其强度。

"The antialiasing properties"

《抗锯齿模式》属性指定在渲染场景时应用的抗锯齿模式。使用下拉菜单选择以下模式之一:

抗锯齿模式描述
MSAA应用多采样抗锯齿。场景以更高分辨率渲染,然后缩小到实际分辨率。
NoAA不应用抗锯齿。
SSAA应用超采样抗锯齿。几何体的边缘进行超采样,从而产生更平滑的轮廓。此技术对几何体内部的材质无效。
ProgressiveAA应用渐进式抗锯齿。当场景内容停止移动时,相机在帧之间轻微抖动,并将每帧的结果与上一帧混合。累积的帧越多,结果看起来越好。

抗锯齿质量属性设置应用于场景的抗锯齿级别。将抗锯齿质量定义为中等非常高。所选抗锯齿质量的效果取决于所选的抗锯齿模式,如下表所示。在SSAA模式中,所选质量影响超采样分辨率,在MSAA中确定每像素的样本数,在ProgressiveAA中定义为最终图像的帧数。

抗锯齿级别SSAA中使用的超采样分辨率MSAA中每像素的样本数ProgressiveAA中最终图像的帧数
中等1.2x22
1.5x44
非常高2.0x88

注意:抗锯齿模式设置为无AA时,抗锯齿质量不影响抗锯齿。

时间性AA属性启用时间性抗锯齿。这意味着相机在帧之间轻微颤动,并将每个新帧的结果与前一帧混合。

注意:当使用MSAA模式时,时间性抗锯齿没有效果。

注意:ProgressiveAA模式结合使用时,时间性抗抖动用于动画,一旦动画停止,则使用ProgressiveAA

时间性AA强度属性修改抗锯齿中的时间运动量。当时间性AA属性设置为true时,此属性才可用。

反射AA属性启用反射抗锯齿。反射抗锯齿通常在移动相机时以明亮的点和闪烁的形式可见。

应用环境遮挡

环境遮罩是一种近似全局照明的形式,它使物体靠近时产生非方向性自阴影。您可以在属性视图中的环境遮罩部分定义强度距离柔和度采样率偏差属性。

"The ambient occlusion properties"

属性 > 环境遮罩中,选中启用复选框以定义环境遮罩的设置。

使用强度属性设置阴影的强度,该属性定义应用的环境遮罩量。100的值会导致全黑暗阴影,而较低的值会使阴影看起来更亮。0的值完全禁用环境遮罩,从而在牺牲3D场景中渲染的3D物体视觉效果真实性的同时提高性能。除了0以外的所有值都对性能有相同的影响。

距离属性定义环境遮罩阴影从物体向外扩散的大致距离。更长的距离会导致性能影响增加。

柔和度属性指定环境遮罩阴影边缘的平滑程度。属性设置的值必须在0.0到50.0之间。为了提高平滑度(有时会产生明显的图案式伪影),您可以通过选中抖动复选框来分散环境遮罩阴影带的边缘。

注意:相机裁剪平面之间的大距离可能导致环境遮罩出现问题。如果您看到环境遮罩中的奇怪带状图案,请尝试在场景相机属性中的裁剪远字段调整值。

采样率属性指定灰度的阴影数,从而以牺牲性能为代价定义环境遮罩的质量。

偏向 属性定义了一个截止距离,阻止物体在近距离表现出环境光遮蔽。值越高,物体之间在出现环境光遮蔽之前需要保持的距离越大。

注意:如果您在某些应该没有阴影的对象上看到了环境光遮蔽阴影,请略微增加该值以裁剪掉近距离的结果。

注意:在 Qt 5 中,一些环境光遮蔽属性名称略有不同:AO 强度AO 距离AO 软度AO 障碍,和 AO 偏向

设置基于图像的照明

属性 视图中的 基于图像的照明 部分,您可以设置基于图像照明的 HDR 图像曝光地平线方向 属性。

"Image based lighting properties"

HDR 图像 属性定义了一个用于照亮场景的图像,而不是使用标准光源或与其结合。图像最好是高动态范围图像或预生成的立方体贴图。预烘焙在运行时提供了显著的性能提升,因为没有时间用于过滤和米伯生成。如果源是 .hdr 或其他图像,则 GPU 基础预处理在加载图像文件时发生,可能会消耗较多时间,尤其是在嵌入式和移动硬件上。因此,强烈建议最终的生成时间至少预处理 .hdr 图像,如下所述。

注意:在 Qt 6 中,使用 纹理 组件与 图像 > 不支持与该属性组合。在实践中,由于性能影响,通常不太合理对所有米伯级别进行动态 Qt Quick 内容的前过滤。在 Qt 5 中,图像 属性称为 光照探头,它定义了用于用场景的 skybox 覆盖或设置基于图像照明的纹理的纹理。

曝光 属性修改了光照探头的发光量。

当用递增的值定义时,地平线 属性向环境下半部添加黑暗(黑色),从而迫使照明主要从图像顶部(从下半部去除特定反射)进入。此属性对于计算会遮挡光照探头反射的地面平面是很有用的。这个属性是必要的,因为光照探头的贡献是直接从图像中得出的,不考虑场景的内容。您可以设置 地平线 属性的值在 0.0 和 1.0 之间。使用属性的默认值会应用整个光照探测器而无需调整。

注意:地平线 属性只影响材质照明,对 sky box 的渲染没有影响。

注意:在 Qt 5 中,地平线 属性称为 探头地平线

方向 属性定义了光照探头的方向。方向用相对于 x、y 和 z 轴的欧拉角度(度)定义。

Qt 5 中的其他光照探头属性

探头亮度 属性修改了光照探头的发光量。

当启用 快速 IBL(快速基于图像的照明)属性时,会采取更多捷径来近似光照探头的光贡献,但会牺牲一些质量。

探头 FOV 属性的值在将相机作为 IBL 探头使用时设置了图像源视场角度。

高级场景环境设置

您可以通过执行深度测试来优化场景环境。要跳过深度测试,清除启用深度测试复选框。注意,跳过测试可能会导致渲染错误。

要让渲染器将深度缓冲区写入颜色通行部分,清除启用深度预扫描复选框。清除复选框将禁用具有瓦片式渲染架构的任何GPU上的深度预扫描。

要为调试场景指定额外的渲染设置,定义调试设置

要为直接和间接照明定义光照贴图烘焙设置,使用光照映射器属性指定光照映射器对象。这些设置在其他时间不相关,例如在使用已生成的光照贴图渲染场景时。

设置扩展场景环境

除了上述属性之外,在扩展场景环境中,您可以通过将它们定义为属性来对您的场景应用效果。当启用其中一个或多个效果时,结果类似于手动将效果添加到场景环境

使用扩展场景环境代替场景环境以对场景添加多个和复杂效果。因为扩展场景环境将启用的效果合并在一起,所以渲染遍历次数减少,从而在场景应用个别后处理效果时显著提高性能。

对于扩展场景环境,您还可以定义局部自定义属性

"Properties of Extended Scene Environment"

注意:如果手动将额外后处理效果添加到场景环境中,则这些效果将在扩展场景环境属性中定义的效果之前应用。

在某些Qt许可证下可用。
了解更多信息。