当前位置: 首页 > ds >正文

前端~三维地图(cesium)动态材质飞线

自定义飞线材质 FlyLineMaterial.ts
import * as Cesium from "cesium";// 修改:新增流动区域颜色和速率参数
const FlyLineShaderSource = `
uniform vec4 color;
uniform vec4 flowColor; 
uniform float percent;
uniform float speed;czm_material czm_getMaterial(czm_materialInput materialInput) {vec4 outColor = color;czm_material material = czm_getDefaultMaterial(materialInput);vec2 st = materialInput.st;float time = fract(czm_frameNumber * speed / 144.0);float startPosition = time;if(st.s > startPosition - percent && st.s < startPosition) {float value = (st.s - (startPosition - percent)) / percent;outColor.rgb = mix(color.rgb, flowColor.rgb, value);}material.diffuse = czm_gammaCorrect(outColor.rgb);material.alpha = outColor.a;return material;
}`;type FlyLineOptions = {color: Cesium.Color; // 线主体颜色flowColor: Cesium.Color; // 流动线颜色percent: number; //流动区域占整个线段的比例(0~1)speed: number; //流动速度
};export class FlyLineMaterial extends Cesium.Material {constructor(options: FlyLineOptions) {const { color, flowColor, percent, speed } = options; // 解构参数super({translucent: false,fabric: {type: "FlyLine",uniforms: {color,flowColor, // 新增:流动区域颜色percent,speed, // 新增:流动速度},source: FlyLineShaderSource, // 使用抽离的着色器代码},});}
}
使用飞线材质
 const positions = Cesium.Cartesian3.fromDegreesArray([125.321753, 43.810582, 126.554969, 43.834361,]);// 创建几何const geometry = new Cesium.PolylineGeometry({positions: positions,width: 1,});const instance = new Cesium.GeometryInstance({geometry: geometry,});const appearance = new Cesium.PolylineMaterialAppearance({material: new FlyLineMaterial({color: Cesium.Color.fromCssColorString("#2d7367"),flowColor: Cesium.Color.fromCssColorString("#2ddcab"),percent: 0.1,speed: 0.5,}),});const primitive = new Cesium.Primitive({geometryInstances: instance,appearance: appearance,});viewer.scene.primitives.add(primitive);
http://www.xdnf.cn/news/6318.html

相关文章:

  • nacos:服务无法注册到nacos服务中心
  • Linux 动静态库详解
  • JS 中 Object.keys() 和 Object.values() 的深度解析与应用
  • 蓝桥杯 17. 修改数组
  • 【Linux高级IO】多路转接之epoll
  • Linux——mysql主从复制与读写分离
  • 人工智能+ERP:政策新规下企业智能化转型路径
  • 【vue】axios网络请求介绍
  • 【2025版】Spring Boot面试题
  • C语言_自定义类型:结构体
  • (4)python开发经验
  • (十七)Java日期时间API全面解析:从传统Date到现代时间处理
  • Ros2 - Moveit2 - DeepGrasp(深度抓握)
  • golang -- 如何让main goroutine等一等
  • 数智驱动——AI:企业数字化转型的“超级引擎”
  • FreeRTOS学习笔记
  • 【Java学习笔记】finalize方法
  • 前后端分离博客 Weblog 项目实战
  • 【AI大模型】赋能【传统业务】
  • Java基础语法之数组
  • Windows下Docker安装portainer
  • 64. 最小路径和
  • Shell 脚本中的通道号(文件描述符)
  • maven项目, idea右上角一直显示gradle的同步标识, 如何去掉
  • 计算机网络:什么是计算机网络?它的定义和组成是什么?
  • 开源Heygem本地跑AI数字人视频教程
  • python使用matplotlib画图
  • IDEA编辑器设置的导出导入
  • why FPGA喜欢FMC子卡?
  • Vue3学习(组合式API——计算属性computed详解)