cesium 动态线效果

ops/2024/10/18 23:27:52/

一、扩展材质

function PolylineTrailMaterial(options) {options = Cesium.defaultValue(options, Cesium.defaultValue.EMPTY_OBJECT);this._definitionChanged = new Cesium.Event();// 变量初始化this.color = Cesium.defaultValue(options.color && new Cesium.Color.fromCssColorString(options.color), Cesium.Color.RED);this.image = options.image || '';this.duration = options.duration || 1000;this.time = (new Date()).getTime();}// 材质类型PolylineTrailMaterial.prototype.getType = function (time) {return "PolylineTrail";};// 这个方法在每次渲染时被调用,result的参数会传入glsl中。PolylineTrailMaterial.prototype.getValue = function (time, result) {if (!Cesium.defined(result)) {result = {};}result.color = Cesium.Property.getValueOrClonedDefault(this.color, time, Cesium.Color.WHITE, result.color);result.image = Cesium.Property.getValueOrClonedDefault(this.image);result.time = (((new Date()).getTime() - this.time) % this.duration) / this.duration;return result;};PolylineTrailMaterial.prototype.equals = function (other) {return this === other ||other instanceof PolylineTrailMaterial && Cesium.Property.equals(this.color, other.color) && Cesium.Property.equals(this.image, other.image) && Cesium.Property.equals(this.duration, other.duration);};Object.defineProperties(PolylineTrailMaterial.prototype, {isConstant: {get: function get() {return false;}},definitionChanged: {get: function get() {return this._definitionChanged;}},color: Cesium.createPropertyDescriptor('color'),image: Cesium.createPropertyDescriptor('image'),duration: Cesium.createPropertyDescriptor('duration'),});Cesium.Material._materialCache.addMaterial("PolylineTrail", {fabric: {type: "PolylineTrail",uniforms: {color: new Cesium.Color(1, 1, 0, 1.0),image: '',duration: 1,time: 0},source:`czm_material czm_getMaterial(czm_materialInput materialInput)\n\{\n\czm_material material = czm_getDefaultMaterial(materialInput);\n\vec2 st = materialInput.st;\n\vec4 colorImage = texture2D(image, vec2(fract(st.s - time), st.t));\n\material.alpha = colorImage.a * color.a;\n\material.diffuse = color.rgb;\n\return material;\n\}`},translucent: function translucent() {return true;}});// 写到Cesium对象上,就可以像其他MaterialProperty一样使用了Cesium.Material.PolylineTrailType = 'PolylineTrail'Cesium.PolylineTrailMaterialProperty = PolylineTrailMaterial

二、调用

viewer.entities.add({name: 'polyline',polyline: {positions: Cesium.Cartesian3.fromDegreesArray([113.394743, 38.090979,113.395422, 38.091654,]),width: 10,material: new Cesium.PolylineTrailMaterialProperty({color: '#f00',image: './image/trailLinkBlue.png'})}});

 


http://www.ppmy.cn/ops/10448.html

相关文章

Rx.Net 第四章

哇,你在这一章学到了很多。你应该为自己感到骄傲。本章所涵盖的内容几乎会在你创建的每个可观察对象管道中用到:所有可观察对象都实现IObservable接口。 不鼓励通过手动实现IObservables接口来创建可观察对象。相反,使用一个内置的创建操作符。 …

直播预告:拥抱AI-探索AI大模型在邮件反钓鱼检测的应用

随着ChatGPT的问世,生成式AI技术迅速渗透到我们生活的各个角落,以ChatGPT为代表的生成式AI技术,依托其强大的AI模型和海量数据,赢得了广泛的欢迎。 然而,生成式AI的不断演进也带来了新的挑战。大型语言模型&#xff08…

从0到1:社区论坛小程序开发笔记

背景 论坛小程序:为用户提供了一个社交互动的平台,使用户可以分享经验、交流观点、解决问题,促进社区成员之间的互动和交流。 用户可以在论坛小程序上发布有关各种话题的帖子,分享自己的知识、经验和见解,帮助其他用户…

机器学习|决策树|如何计算信息增益|方法总结

如是我闻 :那你说决策树这块还能考点啥呢,也就是算算属性的信息增益(Information Gain)了, 信息增益是一种评估特征(属性)在分类任务中重要性的方法,它基于熵的概念来计算。熵是一个…

第八周学习笔记DAY.1-异常

本课目标 了解异常概念 理解Java异常处理机制 会捕捉异常 会抛出异常 了解Java异常体系结构 什么是异常 异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序 生活中,根据不同的异常进行相应的处理,而不会就此中断…

目标检测算法——YOLO-Word——算法详解

一、概述 1、是什么 是一个目标检测器,通过结合CLIP文本编码器,拥有了开放检测(推理时识别训练时没有的目标)的能力。作者实验证明ap 指标上 zero shot能力YOLO-world L接近专门训练过的YOLOv6-8 S 模型的能力,finetune 后YOLO-world 均能提升8个点左右。 2、亮点 将文章…

如何在 Vim 中剪切、复制和粘贴

目录 ⛳️推荐 如何在 Vim 编辑器中复制文本 如何在 Vim 编辑器中剪切文本 如何在 Vim 编辑器中粘贴文本 如何通过选择文本来剪切和复制文本 通过选择文本复制 在 Vim 中选择文本来剪切文本 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&#…

Leetcode 28. 找出字符串中第一个匹配项的下标

心路历程: 两个字符串匹配的问题基本都可以用动态规划解决,递推关系就是依次匹配下去 注意的点: 1、注意边界条件是匹配串needle到头,但是haystack不一定需要到头 2、这道题按照从i开始的字符串而不是从i结束的进行DP建模 解法…