尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Cesium 动态围墙(简易版)教程

Cesium 动态围墙(简易版)教程
📅 发布时间:2026/6/26 22:31:50

动态围墙(简易版) ·dynamicWall Simple· ▶ 在线运行案例

  • 案例合集:三维可视化功能案例(threehub.cn)
  • 开源仓库github地址:https://github.com/z2586300277/three-cesium-examples
  • 400个案例代码:网盘链接

你将学到什么

  • Scene / Camera / Renderer 标准渲染管线搭建
  • 案例完整源码结构与可复用初始化模板

效果说明

本案例演示动态围墙(简易版)效果:创建动态围墙效果。建议先打开文首在线案例查看动态画面,再对照下方源码逐步理解。

核心概念

  • Viewer聚合 Scene、Camera、Clock 与渲染循环,是 Cesium 应用入口。
  • 阅读下方完整源码时,建议从init/load/animate三条主线入手,再深入 shader 与工具函数。

实现步骤

  • 创建 Viewer,配置地形/影像(若案例需要)并设置初始相机
  • 在requestAnimationFrame循环中更新状态并 render(Cesium 为viewer.render或自动渲染)
  • 代码要点

    import * as Cesium from 'cesium'

    // 获取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 positions = [ 115.6434, 28.76762, 115.6432, 28.76762, 115.6432, 28.76756, 115.6434, 28.76756, 115.6434, 28.76762, ]

    // 设置相机视角,定位到围墙位置 viewer.camera.setView({ // 相机目标位置(经度、纬度、高度) destination: Cesium.Cartesian3.fromDegrees(115.6433, 28.7674, 30), orientation: { // 偏航角(朝向),正北为0度 heading: Cesium.Math.toRadians(0), // 俯仰角,-90度为垂直向下看 pitch: Cesium.Math.toRadians(-45), // 翻滚角,0为不翻滚 roll: 0 } }) // 调用函数创建动态围墙 addWalls(positions, 10) /**

    • 创建动态围墙效果
    • @param {Array >} positionLonLat - 围墙顶点的经纬度坐标数组
    • @param {number} height - 围墙的高度
    */ function addWalls(positionLonLat, height) {

    // 自定义着色器代码,实现动态流动效果 const mySource =czm_material czm_getMaterial(czm_materialInput materialInput) { czm_material material = czm_getDefaultMaterial(materialInput); vec2 st = materialInput.st; // 通过时间变量czm_frameNumber实现动态流动效果 vec4 colorImage = texture(image, vec2(fract(st.trep - speedczm_frameNumber0.005), st.trep)); material.alpha = colorImage.a * color.a; material.diffuse = colorImage.rgb; return material; }// 创建围墙几何体实例 const wallInstance = new Cesium.GeometryInstance({ geometry: new Cesium.WallGeometry({ // 将经纬度坐标数组转换为笛卡尔坐标 positions: Cesium.Cartesian3.fromDegreesArray(positionLonLat), // 围墙顶部高度数组,所有顶点使用相同的最大高度值 maximumHeights: new Array(positionLonLat.length / 2).fill(height), // 围墙底部高度数组,所有顶点使用相同的最小高度值 minimumHeights: new Array(positionLonLat.length / 2).fill(0), }), })

    // 创建围墙材质外观 const wallAppearance = new Cesium.MaterialAppearance({ material: new Cesium.Material({ fabric: { // 材质参数配置 uniforms: { // 围墙颜色设置为橙红色 color: new Cesium.Color.fromCssColorString("rgba(238, 85, 34, 1)"), // 流动效果使用的纹理图片路径 image: HOST + "files/images/colors.png", // 动画流动速度 speed: 3, // 纹理重复次数 rep: 4, }, // 使用自定义着色器代码 source: mySource, }, }), })

    // 创建围墙图元对象 const primitive = new Cesium.Primitive({ // 关联几何体实例 geometryInstances: wallInstance, // 设置外观材质 appearance: wallAppearance, // 保留几何体实例数据,以便后续可能的重用 releaseGeometryInstances: false, })

    // 将围墙添加到场景中 viewer.scene.primitives.add(primitive) }

    完整源码:GitHub

    小结

    • 本文提供动态围墙(简易版)完整 Cesium.js 源码与在线 Demo,建议先运行案例再改 uniform/参数做二次实验
    • 更多 Cesium.js 实战案例见 three-cesium-examples 合集 与 GitHub 开源仓库

相关新闻

  • 油层物理——3. 油气藏烃类的相态和汽液平衡
  • 云原生技术21-边缘计算+云原生:让计算力“下沉“到最后一公里,K3s/KubeEdge:在树莓派上跑Kubernetes是什么体验
  • 到底需要多少算力?

最新新闻

  • Navicat Premium Mac无限试用终极指南:告别14天限制的完整解决方案
  • 华为MetaERP Oracle EBS 标准采购流程,对你描述的场景进行详细的分录和金额分析。基础数据计算表格项目 计算 金额PO数量 — 1,000单价(不含税) — 10不含税金
  • ncmdump:音乐格式解密专家,5分钟掌握NCM转换全流程
  • 钢铁牌号中字母的含义,收藏起来~
  • Vue KeepAlive 原理深度解析:从使用到底层实现
  • 番茄小说下载器:解决数字阅读三大痛点的终极方案

日新闻

  • 单节点跑业务稳如泰山 扩容高可用集群反而频繁卡死 复盘完整连接交互揪出深层根因
  • Boss直聘批量投递工具:5倍效率提升的求职价值重构指南
  • 3分钟解锁VLC点击暂停插件:让视频控制变得如此简单!

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号