场景环境
场景环境组件和扩展场景环境
组件定义了如何在全局范围内渲染场景。
注意:场景环境和其在属性
视图中的位置的可用属性根据你所选择的目标 Qt 版本
而变化,当你在创建项目时选择。
注意:扩展场景环境可在使用 Qt 6.5 或更高版本作为目标 Qt 版本
的项目中可用。
将场景环境添加到项目
在创建项目时通过选择合适的预设将场景环境组件添加到项目中。
使用3D
预设创建包含场景环境的View3D
组件项目。如果你需要手动添加,它在组件
> Qt Quick 3D
中可用。
使用扩展 3D
预设创建包含扩展场景环境的三维视图组件项目。它也在组件
> Qt Quick 3D 辅助工具
中可用。
设置场景环境
要为场景环境定义属性,请在导航器
中选中场景环境
,并在属性
视图中指定其属性。
在属性
视图的场景环境
部分设置属性,以指定是否以及如何清除场景的背景,应用后处理效果到场景,定义在场景渲染之前如何色调映射颜色,以及指定雾设置。
清除颜色
属性指定了如果将背景模式
定义为颜色时,将使用哪种颜色来清除场景的背景。使用颜色选择器
选择颜色。
《后台模式》属性定义了场景背景是否应该清除以及清除方式。通过下拉菜单选择可用的模式之一。
后台模式 | 描述 |
---|---|
透明 | 场景被清除为透明,这适用于在另一个项目之上渲染3D内容。当View3D组件使用Underlay或Overlay作为渲染模式时,此模式无效果。 |
颜色 | 场景使用指定的Clear color属性清除颜色。当View3D组件使用Underlay或Overlay作为渲染模式时,此模式无效果。 |
天空盒 | 场景不会被清除,而是渲染一个SkyBox或Skydome。使用Light probe部分中的Image属性定义一个SkyBox(在Qt 5中,在Image-Based Lighting组中找到Light Probe属性)。 |
SkyBoxCubeMap | 场景不会被清除,而是渲染一个使用CubeMapTexture的SkyBox或Skydome。立方体贴图有六个面(X+,X-,Y+,Y-,Z+,和Z-),每个面都是独立的2D图像。选择此模式后,自定义材料和后期处理效果可以在着色器中使用立方体贴图纹理。 |
若要使场景保持未清除状态,请将背景模式设置为Unspecified。
《效果》属性定义对场景应用的后处理效果。使用下拉菜单选择要应用于整个场景的一个效果。效果的顺序很重要,因为每个效果的结果都会被输入到下一个。
《色调映射模式》属性定义在渲染前如何对颜色进行色调映射。选择ToneMapModeLinear应用线性色调映射,进行伽玛校正后将颜色返回sRGB颜色空间。您还可以选择ToneMapModeAces应用学院色彩编码系统,ToneMapModeHejlDawson应用Hejl-Dawson色调映射,或ToneMapModeFilmic应用电影色调映射。
注意:《色调映射模式》属性在Qt 5中不可用。
《雾》属性定义应用于场景的雾设置。当场景环境中的《雾》属性设置为有效的《雾》对象时,使用这些属性来配置雾的渲染。此类提供的简单雾是由材质实现的。使用下拉菜单为您场景选择一个《雾》对象。
应用抗锯齿
使用抗锯齿使屏幕上的曲线更加平滑。在《属性》视图的《抗锯齿》部分,您可以指定抗锯齿的模式和质量,还可以启用临时抗锯齿并定义其强度。
《抗锯齿模式》属性指定在渲染场景时应用的抗锯齿模式。使用下拉菜单选择以下模式之一:
抗锯齿模式 | 描述 |
---|---|
MSAA | 应用多采样抗锯齿。场景以更高分辨率渲染,然后缩小到实际分辨率。 |
NoAA | 不应用抗锯齿。 |
SSAA | 应用超采样抗锯齿。几何体的边缘进行超采样,从而产生更平滑的轮廓。此技术对几何体内部的材质无效。 |
ProgressiveAA | 应用渐进式抗锯齿。当场景内容停止移动时,相机在帧之间轻微抖动,并将每帧的结果与上一帧混合。累积的帧越多,结果看起来越好。 |
抗锯齿质量属性设置应用于场景的抗锯齿级别。将抗锯齿质量定义为
抗锯齿级别 | SSAA中使用的超采样分辨率 | MSAA中每像素的样本数 | ProgressiveAA中最终图像的帧数 |
---|---|---|---|
中等 | 1.2x | 2 | 2 |
高 | 1.5x | 4 | 4 |
非常高 | 2.0x | 8 | 8 |
注意:当
注意:当使用
注意:与
应用环境遮挡
环境遮罩是一种近似全局照明的形式,它使物体靠近时产生非方向性自阴影。您可以在
在
使用
注意:相机裁剪平面之间的大距离可能导致环境遮罩出现问题。如果您看到环境遮罩中的奇怪带状图案,请尝试在场景相机属性中的
偏向 属性定义了一个截止距离,阻止物体在近距离表现出环境光遮蔽。值越高,物体之间在出现环境光遮蔽之前需要保持的距离越大。
注意:如果您在某些应该没有阴影的对象上看到了环境光遮蔽阴影,请略微增加该值以裁剪掉近距离的结果。
注意:在 Qt 5 中,一些环境光遮蔽属性名称略有不同:AO 强度,AO 距离,AO 软度,AO 障碍,和 AO 偏向。
设置基于图像的照明
在 属性 视图中的 基于图像的照明 部分,您可以设置基于图像照明的 HDR 图像,曝光,地平线 和 方向 属性。
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上的深度预扫描。
要为调试场景指定额外的渲染设置,定义调试设置。
要为直接和间接照明定义光照贴图烘焙设置,使用光照映射器属性指定光照映射器对象。这些设置在其他时间不相关,例如在使用已生成的光照贴图渲染场景时。
设置扩展场景环境
除了上述属性之外,在扩展场景环境中,您可以通过将它们定义为属性来对您的场景应用效果。当启用其中一个或多个效果时,结果类似于手动将效果添加到场景环境。
使用扩展场景环境代替场景环境以对场景添加多个和复杂效果。因为扩展场景环境将启用的效果合并在一起,所以渲染遍历次数减少,从而在场景应用个别后处理效果时显著提高性能。
对于扩展场景环境,您还可以定义局部自定义属性。
注意:如果手动将额外后处理效果添加到场景环境中,则这些效果将在扩展场景环境属性中定义的效果之前应用。
在某些Qt许可证下可用。
了解更多信息。