Fog QML Type
指定场景的雾度设置。更多
Import Statement: | import QtQuick3D |
Since: | Qt 6.5 |
Inherits: |
属性
- color : color
- density : real
- depthCurve : real
- depthEnabled : bool
- depthFar : real
- depthNear : real
- enabled : bool
- heightCurve : real
- heightEnabled : bool
- leastIntenseY : real
- mostIntenseY : real
- transmitCurve : real
- transmitEnabled : bool
详细说明
当SceneEnvironment 的fog 属性设置为有效的雾对象时,属性将用于配置雾的渲染。
该类型提供的简单雾由材质实现。它不是一种后处理效果,也就是说,它不涉及使用View3D 的输出对纹理进行处理的额外渲染通 道,而是在片段着色器中为每个具有PrincipledMaterial 或着色CustomMaterial 的可渲染对象(Model 的子网格)实现的。
雾由多个属性配置:
- 常规设置:color 和density
- 深度雾设置:depthEnabled,depthNear,depthFar 、depthCurve
- 高度雾化设置:heightEnabled,leastIntenseY,mostIntenseY 、heightCurve
- 颜色传输设置transmitEnabled,transmitCurve
例如,以下代码段使用默认的雾参数启用了深度雾(但不是高度雾):
environment: SceneEnvironment { backgroundMode: SceneEnvironment.Color clearColor: theFog.color fog: Fog { id: theFog enabled: true depthEnabled: true } }
也可以通过id
引用雾对象,而不是内联定义雾对象。由于ExtendedSceneEnvironment 继承了其父类型SceneEnvironment 的所有内容,因此雾也可用于ExtendedSceneEnvironment :
Fog { id: theFog enabled: true depthEnabled: true } environment: ExtendedSceneEnvironment { fog: theFog }
另请参阅 Qt Quick 3D - 简单雾示例和Qt Quick 3D - 场景效果示例。
属性文档
density : real |
控制雾量,实际上是一个乘数,范围为 0-1。默认值为 1.0。减小该值会降低雾化效果的强度。仅当depthEnabled 设置为 true 时适用。
屏幕上的视觉效果可能会受到ExtendedSceneEnvironment 中其他一些设置的影响,如色调映射或发光和绽放。相同的密度值可能会产生不同的效果,这取决于启用了哪些其他效果以及如何配置这些效果。
密度设置为0.95
的示例场景:
密度降低至0.15
的同一场景:
另请参阅 color 。
depthCurve : real |
depthEnabled : bool |
控制远处是否出现雾气。默认值为 false。
另请参阅 heightEnabled,enabled,depthNear,depthFar 和depthCurve 。
depthFar : real |
与摄像机的最终距离。默认值为 1000.0。仅当depthEnabled 设置为 true 时适用。
注: 场景(包括摄像机和模型)应进行相应设置,以便可以通过depthNear 和 depthFar 等属性定义合理的范围。不要指望在不调整变换的情况下,可以在包含原样导入资产的场景中始终启用雾化。例如,本页中Sponza模型的示例截图就是在balsam
工具从 glTF 源资产生成的实例化 Sponza 组件上手动应用了(100, 100, 100)
的额外缩放比例后生成的。然后,通过调整depthNear 和 depthFar 值,得到了足够的 Z 范围,从而获得了美观的效果。
另请参见 depthNear 和depthEnabled 。
depthNear : real |
与摄像机的起始距离。默认值为 10.0。仅当depthEnabled 设置为 true 时适用。
以这个场景为例,首先使用较高的 depthNear 值。
降低 depthNear 值会使雾气有效地 "靠近 "摄像机,因为它现在从距离摄像机较小的距离开始:
注: 场景(包括摄像机和模型)应进行相应的设置,以便可以通过 depthNear 和depthFar 等属性定义合理的范围。不要指望在不调整变换的情况下,可以在包含原样导入资产的场景中始终启用雾化。例如,本页中Sponza模型的示例截图是在balsam
工具从 glTF 源资产生成的实例化 Sponza 组件上手动应用额外的(100, 100, 100)
缩放比例后生成的。然后,通过调整 depthNear 和depthFar 值,得到了足够的 Z 范围,从而获得了美观的效果。
另请参阅 depthFar 和depthEnabled 。
enabled : bool |
heightCurve : real |
指定高度雾的强度。默认值为 1.0。仅当heightEnabled 设置为 true 时适用。
另请参阅 heightEnabled 。
heightEnabled : bool |
控制是否启用高度雾。默认值为 false。
另请参阅 depthEnabled,enabled,leastIntenseY,mostIntenseY 和heightCurve 。
leastIntenseY : real |
指定雾强度最小的位置(Y 坐标)。默认值为 10.0。仅当heightEnabled 设置为 true 时适用。
注: 默认情况下,该值大于mostIntenseY 。只要该值为真,雾就会从上到下渲染。当此值小于mostIntenseY 时,雾会从下往上渲染。
注: 在Qt Quick 3D 场景中,Y 轴指向上方。
图中是一个启用了高度雾(无深度雾)的场景,并且 leastIntenseY 设置为一个值,因此雾只在 Sponza 场景的底部扩散。
增加 leastIntenseY 的值会使雾气扩散得更高,因为它现在实际上是从场景中更高的 Y 轴位置开始的。(请记住,Y 轴是向上的)
注意: 与深度雾一样,场景也需要进行相应设置,以便通过 leastIntenseY 和mostIntenseY 定义合理的 Y 坐标范围。不要指望在不调整变换的情况下,可以在包含原样导入资产的场景中始终启用雾化。例如,本页中Sponza模型的示例截图是在balsam
工具从 glTF 源资产生成的实例化 Sponza 组件上手动应用额外的(100, 100, 100)
缩放后生成的。
另请参阅 mostIntenseY 和heightEnabled 。
mostIntenseY : real |
指定雾气最浓的位置(Y 坐标)。默认值为 0。仅当heightEnabled 设置为 true 时适用。
注: 默认情况下,该值小于leastIntenseY 。只要该值为真,雾就会从上到下渲染。当此值大于leastIntenseY 时,雾会从下往上渲染。
注: 在Qt Quick 3D 场景中,Y 轴指向上方。
注: 与深度雾一样,场景也需要进行相应设置,以便通过leastIntenseY 和 mostIntenseY 定义合理的 Y 坐标范围。不要指望在不调整变换的情况下,可以在包含原样导入资产的场景中始终启用雾化。例如,本页中Sponza模型的示例截图是在balsam
工具从 glTF 源资产生成的实例化 Sponza 组件上手动应用额外的(100, 100, 100)
缩放后生成的。
另请参阅 leastIntenseY 和heightEnabled 。
transmitCurve : real |
透光效果的强度。默认值为 1.0。仅当transmitEnabled 设置为 true 时适用。
transmitEnabled : 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.