Cesium实现渐变面

一、效果图

二、实现思路 

        使用着色器,通过纹理坐标和其他参数计算出材质的颜色和透明度。通过给定的颜色、漫反射强度和透明度,计算出最终的反射颜色和透明度,并且根据给定的中心点位置和当前像素的纹理坐标,计算出距离中心的距离用来做透明度的参考值,然后计算得到的颜色加载到对应的材质上。

三、完整代码

<template><div><button @click="handlePolygon()">渐变面</button><CesiumViewer /></div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import CesiumViewer from "./components/cesiumViewer.vue";let viewer;
onMounted(() => {viewer = window.cesiumViewer;
});const updateResolutionScale = (viewer) => {//判断是否支持图像渲染像素化处理if (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {viewer.resolutionScale = window.devicePixelRatio;}
};const PolyGradientMaterial = `uniform vec4 color;
uniform float diffusePower;
uniform float alphaPower;
uniform float globalAlpha;
uniform vec2 center;czm_material czm_getMaterial(czm_materialInput materialInput) {czm_material material = czm_getDefaultMaterial(materialInput);float time = czm_frameNumber/600.;float per = fract(time);vec2 st = materialInput.st;float alpha = distance(st, center);material.alpha = color.a * alpha * alphaPower * globalAlpha;material.diffuse = color.rgb * diffusePower;return material;
}`;let index = 0;
const arrColor = ["rgb(18,76,154)","rgb(15,176,255)","#40C4E4","#42B2BE","rgb(51,176,204)","#8CB7E5","rgb(0,244,188)","#139FF0",
];const getColor = () => {return arrColor[++index % arrColor.length];
};let totalLabel = 0;const addPolygon = (positions, color, name) => {const polygonOptions = {extrudedHeight: 1000,polygonHierarchy: new Cesium.PolygonHierarchy(positions),};const geometry = new Cesium.PolygonGeometry(polygonOptions);const geometryInstance = new Cesium.GeometryInstance({geometry: geometry,id: "chinaocean",});const material = new Cesium.Material({fabric: {source: PolyGradientMaterial,uniforms: {color: Cesium.Color.fromCssColorString(color),diffusePower: 1.8,alphaPower: 1.2,center: new Cesium["Cartesian2"](0.5, 0.5),globalAlpha: 0x1,},},translucent: true,});const primitive = new Cesium.Primitive({releaseGeometryInstances: false,asynchronous: false,geometryInstances: [geometryInstance],appearance: new Cesium.EllipsoidSurfaceAppearance({material: material,}),});// const removeListener = viewer.scene.postRender.addEventListener(() => {//   if (!primitive.ready) {//     return;//   }//   totalLabel += 1;//   const position = primitive._boundingSpheres[0].center;//   viewer.entities.add({//     position,//     label: {//       text: name,//       font: "32px 楷体",//       fillColor: Cesium.Color.WHITE,//       outlineColor: Cesium.Color.BLACK,//       style: Cesium.LabelStyle.FILL_AND_OUTLINE,//       outlineWidth: 2,//       disableDepthTestDistance: 1000000000,//       scale: 0.5,//       pixelOffset: new Cesium.Cartesian2(0, -10),//       backgroundColor: new Cesium.Color.fromCssColorString(//         "rgba(0, 0, 0, 0.7)"//       ),//       backgroundPadding: new Cesium.Cartesian2(10, 10),//       verticalOrigin: Cesium.VerticalOrigin.BOTTOM,//     },//   });//   removeListener();// });viewer.scene.primitives.add(primitive);
};const handlePolygon = () => {updateResolutionScale(viewer);viewer.scene.skyBox.show = false;var mapOptions = {scene: {center: {lat: 30.037072,lng:   91.091762,alt: 1600000.0,heading: 160000.0,// 视角heading: 355,pitch: -88,},},};viewer.camera.flyTo({orientation: {heading: Cesium.Math.toRadians(mapOptions.scene.center.heading),pitch: Cesium.Math.toRadians(mapOptions.scene.center.pitch),},destination: Cesium.Cartesian3.fromDegrees(mapOptions.scene.center.lng,mapOptions.scene.center.lat,mapOptions.scene.center.alt),duration: 0,});Cesium.GeoJsonDataSource.load("https://geo.datav.aliyun.com/areas_v3/bound/540100.json").then((dataSource) => {const entities = dataSource.entities.values;// 遍历所有实体entities.forEach((entity, index) => {if (entity.polygon) {const positions = entity.polygon.hierarchy._value.positions;addPolygon(positions, getColor(index), entity.name);}});});
};
</script>
<style scoped></style>

*注:<CesiumViewer/>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(一)kafka实战——kafka源码编译启动

前言 本节内容是关于kafka消息中间键的源码编译&#xff0c;并通过idea工具实现kafka服务器的启动&#xff0c;使用的kafka源码版本是3.6.1&#xff0c;由于kafka源码是通过gradle编译的&#xff0c;以及服务器是通过scala语言实现&#xff0c;我们要预先安装好gradle编译工具…

每日一练 找无重复字符的最长子串

我们来看下这个题目&#xff0c;我们要统计的是不重复的子串&#xff0c;我们可以使用“滑动窗口法”&#xff0c;其实我们很容易就能想到思路。 我们的左窗代表我们目前遍历的开始&#xff0c;即我们遍历的子串的开头&#xff0c;右窗从左窗开始进行遍历&#xff0c;每次遍历…

【C语言终章】预处理详解(上)

【C语言终章】预处理详解&#xff08;上&#xff09; 当你看到了这里时&#xff0c;首先要恭喜你&#xff01;因为这里就是C语言的最后一站了&#xff0c;你的编程大能旅途也将从此站开始&#xff0c;为坚持不懈的你鼓个掌吧&#xff01; &#x1f955;个人主页&#xff1a;开敲…

04-MySQL数据库-权限管理

一、查看权限 1&#xff0c;查看系统所有权限 mysql> show privileges; 权限字段介绍 privileges #权限名称 context #对象&#xff0c;表示可以对数据库&#xff0c;那些资源、进行哪些操作&#xff1b; comment #描述&#xff0c;备注解释说明&#xff1b; Grant…

Caddy之静态站点应用场景

一、背景与介绍 无意之中看到公司部门的软件介质下载站点不是使用Nginx部署&#xff0c;而是使用Caddy。就比较好奇了&#xff0c;这个Caddy是个什么东西? 为啥他们没用Nginx呢&#xff0c;带着好奇心搜索了一下相关资料。 官方解释: Caddy is a powerful, extensible platfo…

Redis 事务 与 管道

redis事务 谈到事务大家可能就会想起mysql中的事务 注意这里的事务不是指的是事务的四大特性acid 持久性 原子性 隔离性 一致性 事务的概念就是 一组命令,串行化执行而不被打断 这里redis的事务和mysql的事务就不太一样 传统关系型数据库的事务主要强调的是一个没有执行完成就…

neo4j使用详解(六、cypher常用函数语法——最全参考)

Neo4j系列导航&#xff1a; neo4j及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 4.常用函数 主要包括谓词函数&#xff08;断言函数&#xff09;、标量函数、聚合函数、字符串函数以及集合函数 4.1.谓词函数&#…

数据结构--循环链表(C语言实现)

一.循环链表的设计 typedef struct CNode{ int data; struct CNode* next; }CNode ,*CList; 2.循环链表的示意图: 3.循环链表和单链表的区别: 唯一区别,没有空指针,尾节点的后继为头,为循环之意. 二.循环链表的实现 //初始化return true; }//返回key的前驱地址&#xff0c;如果…

Lazarus远控组件NukeSped分析

静态信息&#xff1a; 样本md5&#xff1a;9b656f5d7e679b94e7b91fc3c4f313e4 由此可见为假的Adobe Flash Player 的攻击样本 样本分析 通过五个函数&#xff0c;内部调用sub_40159D函数动态获取API函数 利用IDA python解密字符串。。 完整python代码 Python> idc.get_…

MongoDB副本集环境搭建(以单机Windows为例)

前言 近期有搭建MongoDB副本集的需求,简单记录一下搭建过程(以本地Windows环境为例)。 一、副本集选型 1 Primary节点、1 Secondary 节点、1 Arbiter节点模式副本集环境搭建。 二、搭建过程 1. 安装MongoDB服务 下载地址:https://www.mongodb.com,如下图所示: 选择…

基于Springboot旅游网站管理系统设计和实现

基于Springboot旅游网站管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

7.卷积神经网络与计算机视觉

计算机视觉是一门研究如何使计算机识别图片的学科&#xff0c;也是深度学习的主要应用领域之一。 在众多深度模型中&#xff0c;卷积神经网络“独领风骚”&#xff0c;已经被称为计算机视觉的主要研究根据之一。 一、卷积神经网络的基本思想 卷积神经网络最初由 Yann LeCun&a…

UE4_碰撞_自定义碰撞检测通道

效果如图&#xff1a; 1、项目设置中新建追踪检测通道weapon&#xff0c;默认值为忽略。 2、新建几个actor作为枪&#xff0c;碰撞预设全部设为自定义&#xff0c;把新建的检测响应weapon设为阻挡。 3、角色进行射线检测 运行效果如下&#xff1a; 发现有些物体碰不到&#xff…

GetSystemTimes:获取CPU占用率(WIN API)

原文链接&#xff1a;https://blog.csdn.net/qq_28742901/article/details/104960653 GetSystemTimes函数&#xff1a; BOOL WINAPI GetSystemTimes(__out_opt LPFILETIME lpIdleTime, // 空闲时间__out_opt LPFILETIME lpKernelTime, // 内核进程占用时间__out_opt LPFILETI…

蓝桥杯 本质上升序列

题目描述: 小蓝特别喜欢单调递增的事物。 在一个字符串中&#xff0c;如果取出若干个字符&#xff0c;将这些字符按照在字符串中的顺序排列后是单调递增的&#xff0c;则成为这个字符串中的一个单调递增子序列。 例如&#xff0c;在字符串 lanqiao 中&#xff0c;如果取出字符…

模型训练----将pth模型转换为onnx

目录 1 安装需要的环境2、模型转换3、测试onnx模型 Github代码 1 安装需要的环境 需要在虚拟环境中安装onnx和onnxruntime&#xff08;GPU&#xff09;&#xff0c;环境和自己的cuda版本要对应上查询链接 激活环境&#xff0c;查看环境的cuda版本,我是cuda11.6 cudnn8302&a…

AI预测福彩3D第22弹【2024年3月31日预测--第5套算法开始计算第4次测试】

今天&#xff0c;咱们继续进行本套算法的测试&#xff0c;今天为第四次测试&#xff0c;仍旧是采用冷温热趋势结合AI模型进行预测。好了&#xff0c;废话不多说了。直接上结果~ 仍旧是分为两个方案&#xff0c;1大1小。 经过人工神经网络计算并进行权重赋值打分后&#xff0c;3…

开源翻译大模型

开源翻译大模型 1 简介 在开发过程中&#xff0c;会遇到定制化翻译工具的需要&#xff0c;开源的翻译模型可以解决相应的问题。其中英语转中文的比较好的开源项目有&#xff1a; 序号组织模型地址备注1赫尔辛基大学语言技术研究小组&#xff08;Language Technology Researc…

如何使用Axure RP制作网页原型并结合IIS服务实现公网访问本地HTML网页

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

SSH免密登录——linux

SSH免密登录——linux 方法一一、用 ssh-key-gen 在本地主机上创建公钥和密钥二、用 ssh-copy-id 把客户端公钥追加到远程主机的 .ssh/authorized_key 上三、直接登录远程主机 方法二一、将生成的客户端公钥id_rsa.pub内容追加至目标主机.ssh/authorized_key 中参考链接 SSH免密…