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

前端~三维地图(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);

相关文章:

  • 香橙派/树莓派读取GY39数据
  • QMK键盘编码器(Encoder)(理论部分)
  • 实战案例:采集 51job 企业招聘信息
  • 安卓system/文件夹下的哪些文件夹可以修改为别的设备的
  • SRM电子采购管理系统:Java+Vue,集成供应商管理,实现采购流程数字化与协同优化
  • 麒麟环境下Selenium的使用
  • 如何高效集成MySQL数据到金蝶云星空
  • Spring的 @Validate注解详细分析
  • 力扣-108.将有序数组转换为二叉搜索树
  • idea 启动Springboot项目在编译阶段报错:java: OutOfMemoryError: insufficient memory
  • VS Code 新旧版本 Remote-SSH 内网离线连接服务器方法(版本 ≤ 1.78.x 及 ≥ 1.79.0)
  • 实验五:以太网UDP全协议栈的实现(通过远程实验系统)
  • 代码随想录算法训练营Day58
  • CSP信奥赛新增的算法-马拉车算法(Manacher‘s Algorithm)
  • 初识java
  • git切换分支后需要pull吗
  • cGAS-STING通路
  • 解决 TypeError: unsupported operand type(s) for -: ‘NoneType‘ and ‘float‘ 错误
  • 前端服务器部署分类总结
  • 带直流音量控制的立体声音频功率放大器—D2668
  • 盛和资源海外找稀土矿提速:拟超7亿元收购匹克,加快推动坦桑尼亚项目
  • 前四个月人民币贷款增加10.06万亿元,4月末M2余额同比增长8%
  • 菲律宾中期选举初步结果出炉,杜特尔特家族多人赢得地方选举
  • 安徽省委常委、合肥市委书记费高云卸任副省长职务
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂
  • 费高云不再担任安徽省人民政府副省长