cesium后期处理 ·postProcessStage· ▶ 在线运行案例
- 案例合集:三维可视化功能案例(threehub.cn)
- 开源仓库github地址:https://github.com/z2586300277/three-cesium-examples
- 400个案例代码:网盘链接
你将学到什么
- Cesium PostProcessStage 全屏后期管线
效果说明
本案例演示cesium后期处理效果:Cesium后处理阶段示例,该示例演示了如何使用Cesium的后处理效果来增强场景视觉效果;核心用到 Cesium。建议先打开文首在线案例查看动态画面,再对照下方源码逐步理解。
核心概念
- Viewer聚合 Scene、Camera、Clock 与渲染循环,是 Cesium 应用入口。
- Entity面向点线面/模型/标签的高层 API;与 Primitive 相比更适合交互与属性驱动。
- 阅读下方完整源码时,建议从
init/load/animate三条主线入手,再深入 shader 与工具函数。
实现步骤
- 创建 Viewer,配置地形/影像(若案例需要)并设置初始相机
- 在
requestAnimationFrame循环中更新状态并 render(Cesium 为viewer.render或自动渲染) 代码要点
import * as Cesium from 'cesium'import { GUI } from 'dat.gui';
/**
- Cesium后处理阶段示例
- 该示例演示了如何使用Cesium的后处理效果来增强场景视觉效果
- 包括FXAA、Bloom、SSAO、模糊、黑白、夜视、描边、景深和运动模糊等效果
// 获取Cesium容器元素 const box = document.getElementById('box')
// 初始化Cesium Viewer const viewer = new Cesium.Viewer(box, { // 禁用动画控件(左下角仪表) animation: false, // 禁用图层选择器(右上角图层选择按钮) baseLayerPicker: false, // 设置基础影像图层为ArcGIS影像服务 baseLayer: Cesium.ImageryLayer.fromProviderAsync(Cesium.ArcGisMapServerImageryProvider.fromUrl('https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer')), // 禁用全屏按钮(右下角全屏选择按钮) fullscreenButton: false, // 禁用时间轴控件 timeline: false, // 禁用信息框 infoBox: false, })
// 启用地形深度检测,使墙体能够贴合地形 viewer.scene.globe.depthTestAgainstTerrain = true // 隐藏Cesium Logo viewer._cesiumWidget._creditContainer.style.display = "none";
// 获取后处理阶段集合 const stages = viewer.scene.postProcessStages; let myentity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(113.5, 34.5, 0), model: { uri: HOST + '/files/model/car.glb', minimumPixelSize: 100, maximumScale: 300 } }) viewer.zoomTo(myentity) /**
- 清空所有特效
- 禁用内置特效并移除所有自定义后处理阶段
/**
- 应用指定名称的滤镜效果
- @param {string} name - 滤镜名称
// ==================== GUI控制 ====================
/**
- 定义图形绘制操作对象
- 包含各种滤镜效果的触发函数
- @namespace obj
/**
- 创建GUI控制面板
- @type {dat.GUI}
// 默认应用无滤镜效果 applyFilter('none');完整源码:GitHub
小结
- 本文提供cesium后期处理完整 Cesium.js 源码与在线 Demo,建议先运行案例再改 uniform/参数做二次实验
- 更多 Cesium.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库