Cesium 流动管线、管道动画、管线流向仿真,管网、油气、水利孪生高频需求

两种方案对比

  1. 贴图流动材质(本文实现):适合大量管网,GPU 效率高,上万条管线也能跑;管线上面有连续流动色带,可调节流速、颜色、色带宽度;项目首选。

  2. 管线粒子流:沿着管线每隔一段生成 Billboard 粒子,适合需要气泡、油滴效果;管线一多容易卡顿,少量重点管道演示使用。

核心知识点

1. 材质 Shader 原理

materialInput.st:polyline 的纹理 uv,s 沿着管线走向,t 垂直管线;

  • st.s 沿着管线长度方向;
  • czm_frameNumber 基于帧号做时间,不依赖系统时间,暂停相机动画时流动不会变速;
  • fract 实现循环色带;
  • smoothstep 做柔和过渡,避免硬边锯齿。

2. 管线分类设置

  • 地下管线(给排水、燃气) :clampToGround:false,高程低于地表;配合管线埋深属性;
  • 架空管线(油气长输、热力):设置离地高程;
  • 贴地沟渠、明渠 :clampToGround:true;

3. 流速、流向控制

材质 uniform 暴露 speed 和 dir:

  • speed:越大流动越快;0 停止;
  • dir = 1 /-1,一键反转介质流向,管网调度仿真非常常用。

项目高频扩展功能

  1. 多介质多颜色管线
    燃气、水、原油、蒸汽使用不同颜色材质;建立管线分类字典,根据介质类型自动切换材质。
  2. 阀门、泵、节点符号
    在管线拐点添加 Billboard(阀门、泵、流量计、压力表图标);点击节点弹窗展示实时监测数据(对接物联网)。
  3. 爆管 / 故障告警闪烁效果
    故障管线切换闪烁材质,shader 内增加 sin(czm_frameNumber * 0.1) 实现红闪告警。
  4. 管线拾取、弹窗、属性面板
    绑定 description,或者监听 viewer.selectedEntityChanged,选中管线拉取后端实时流量压力数据。
  5. 管线剖面查看
    选中管线,自动提取管线高程序列,绘制纵断面曲线图(距离 - 高程),水利、给排水审图必备。
  6. 粒子流体(气泡 / 油滴效果)
    沿着 polyline 采样等距点位,定时生成半透明小圆点 billboard,沿着管线前进,到达终点销毁;适合重点管道特写展示。
  7. 管线遮挡透明
    管线被建筑 / 地形遮挡时自动半透明,使用 distanceDisplayCondition 或者深度判断 shader。

踩坑清单

  1. ❌ 管线流动方向和管线绘制顺序相反
    ✅ shader 里调整 dir 正负,或者调换管线 positions 数组顺序;
  2. ❌ 管线拐角处纹理拉伸变形
    ✅ polyline 宽度不要过大;管线转角不要过急;复杂管网分段;
  3. ❌ 大量管线之后页面掉帧
    ✅ 材质复用!不要每条管线 new 一个 Material;统一共用一个 material 实例,通过属性分组控制;
  4. ❌ 地下管线被地形盖住看不见
    ✅ 管线高程抬高一点,或者开启地形剖切,剖切盒切出管沟;
  5. ❌ 流动速度在不同电脑快慢不一样
    ✅ 使用 czm_frameNumber(示例方案),不要用 czm_time,czm_time 受帧率影响。
相关推荐
wangxiaoxuan2172 小时前
SLAM 的基本结构:前端、后端、回环与地图优化
前端·机器人·科沃斯八界
总要学点什么3 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界5 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
FungLeo5 小时前
成为全栈·Vue 管理后台篇·编辑器图片上传:从文件选择到文章附件关联
前端·vue.js·编辑器·markdown·文件上传·formdata·附件管理
总要学点什么5 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
某哈压力大5 小时前
SSH 突然 Connection reset?不是密钥坏了,是 OpenSSL 把 sshd 干趴了
前端·node.js·命令行
程序员大阳5 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半5 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
程序员大阳6 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var