点击查看:最新Cesium可视化系统实战视频课程

202502061910172b3927d481e8e6457d22eca1b2430bc6184Cesium 是一个强大的开源地球可视化引擎,广泛应用于 3D 地球、地图、空间数据的可视化应用。Cesium 提供了丰富的视觉效果与后处理效果(Post-Processing Effects),其中辉光(Bloom)和发光(Glow)效果是非常常见且有用的视觉增强技术。这些效果可以显著提升场景的视觉质量,特别是在强调特定物体或光源时。

在本文中,我们将深入讲解如何在 Cesium 中设置辉光(Bloom)和发光效果,以及如何通过 PostProcessStage 调整不同的参数,以实现理想的视觉效果。

1. 什么是辉光和发光效果?

辉光(Bloom)效果

辉光效果是指当场景中的亮度超过某一阈值时,产生一种光晕的效果。这种效果能够使高亮区域的物体在视觉上看起来有种发光的感觉。它通常应用于光源、发光物体或需要突出显示的对象。

发光(Glow)效果

发光效果通常指物体边缘或特定区域出现光晕的效果,可以赋予物体某种“发光”的属性。它与辉光效果密切相关,但重点在于物体的轮廓和可视化效果,而不仅仅是高亮区域。

2. Cesium 中的辉光与发光设置

Cesium 使用 PostProcessStage 来实现后处理效果(Post-Processing Effects)。通过后处理阶段,可以控制场景渲染完成后的视觉效果。我们可以使用 BloomStage 来设置辉光效果。以下是如何通过 Cesium 设置辉光与发光效果的详细步骤。

2.1 获取 PostProcessStage 对象

首先,我们需要获取 scene 对象的 postProcessStages 属性,它是一个存储所有后处理阶段的集合。通过这个集合,我们可以找到并修改其中的 bloom 阶段,以便启用辉光效果。

javascript
let stages = viewer.scene.postProcessStages;
console.log(stages);

2.2 启用辉光效果

辉光效果通常需要通过设置 enabled 属性来启用。我们可以将 enabled 设置为 true,以便激活辉光效果。

javascript
let bloomStage = stages.bloom;
bloomStage.enabled = true; // 启用辉光效果

2.3 使用 GUI 控制辉光效果

Cesium 支持与 GUI 库(如 dat.GUI)集成,使用户能够交互式地控制各种效果的参数。接下来,我们通过 GUI 控件来调整辉光效果的参数。

javascript
// 创建 GUI 控件
gui.add(bloomStage, 'enabled').name('bloom'); // 显示/隐藏辉光效果

// 控制辉光的颜色、强度、对比度等参数
gui.add(bloomStage.uniforms, 'glowOnly', true, false).name('bloomOnly'); // 是否仅显示辉光
gui.add(bloomStage.uniforms, 'brightness', -1, 3.0).step(0.01).name('bloom强度'); // 辉光强度
gui.add(bloomStage.uniforms, 'contrast', 0.0, 255).step(0.01).name('bloom对比度'); // 对比度调整
gui.add(bloomStage.uniforms, 'delta', 0.0, 1.0).step(0.01).name('delta'); // 辉光影响的阈值
gui.add(bloomStage.uniforms, 'sigma', 0.0, 1.0).step(0.01).name('bloom模糊度'); // 模糊度控制
gui.add(bloomStage.uniforms, 'stepSize', 0.0, 10.0).step(0.01).name('精细'); // 调整效果精细度

javascript

2.4 解释各个参数

在上面的代码中,我们调整了多个辉光效果的参数,下面是每个参数的作用:

  • enabled:是否启用辉光效果。当设置为 true 时,辉光效果被启用。
  • glowOnly:这个选项决定了是否仅显示辉光而不显示原始图像。如果设置为 true,场景中的非亮区将被完全隐藏,只有高亮部分可见。
  • brightness:调整辉光的强度。较高的值会使辉光效果更加明显,较低的值则会使辉光更微弱。
  • contrast:调整场景中亮度的对比度。较高的对比度可以使亮区和暗区之间的差异更为明显,从而增强辉光的效果。
  • delta:影响辉光效果阈值的参数。较高的 delta 值会导致只有极亮的区域才会显示辉光,而较低的值则会使更多区域产生辉光效果。
  • sigma:控制辉光的模糊程度。较高的 sigma 会让辉光看起来更加模糊和柔和,而较低的值则使辉光更加锐利。
  • stepSize:控制渲染精细度。较大的步长值可能会导致渲染质量下降,但可以提高性能;较小的步长值则可以获得更高质量的渲染,但会占用更多计算资源。

3. 总结

通过以上的步骤,我们可以在 Cesium 中轻松实现辉光与发光效果的设置。这些效果不仅可以增加场景的视觉吸引力,还能够帮助突出显示某些特定对象或光源。在实际应用中,辉光和发光效果常常用来增强可视化效果、模拟光照效果,或创造更加引人注目的视觉场景。

调整不同的参数,可以帮助你精细控制辉光和发光效果的强度、模糊度、对比度等,以实现最佳的视觉效果。如果你需要进一步优化性能,可以尝试通过调整步长和渲染精细度来平衡效果与性能之间的关系。

使用 Cesium 的后处理阶段(PostProcessStage)进行这些视觉效果的设置,是增强场景沉浸感和可视化效果的强大工具。在实际开发中,不妨多尝试不同的参数组合,创造出最符合需求的效果。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注