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

Cesium 透明渐变墙 解决方案

闭合路径修复

通过增加额外点确保路径首尾相接

透明渐变效果

使用RGBA颜色模式实现从完全不透明到完全透明的平滑渐变

参数可调性

提供多个可调参数,轻松自定义颜色、高度和圆环尺寸

完整代码实现

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://cesium.com/downloads/cesiumjs/releases/1.95/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.95/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head>
<body><div id="cesiumContainer" style="width: 100%; height: 100vh;"></div><script>var viewer = new Cesium.Viewer('cesiumContainer');// 生成闭合圆形路径(修复缺口)var center = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var tangentPlane = new Cesium.EllipsoidTangentPlane(center);var east = tangentPlane.xAxis;var north = tangentPlane.yAxis;var radius = 1000;var numPoints = 64;var positions = [];// 闭合路径:多生成一个点连接首尾for (var i = 0; i <= numPoints; i++) {var angle = (i / numPoints) * Math.PI * 2;var x = radius * Math.cos(angle);var y = radius * Math.sin(angle);var point = Cesium.Cartesian3.add(center,Cesium.Cartesian3.add(Cesium.Cartesian3.multiplyByScalar(east, x, new Cesium.Cartesian3()),Cesium.Cartesian3.multiplyByScalar(north, y, new Cesium.Cartesian3()),new Cesium.Cartesian3()),new Cesium.Cartesian3());positions.push(point);}// 创建透明渐变材质(绿色渐变到透明)var canvas = document.createElement('canvas');canvas.width = 1;canvas.height = 256;var ctx = canvas.getContext('2d');var gradient = ctx.createLinearGradient(0, 0, 0, 256);// 使用RGBA颜色模式gradient.addColorStop(0, 'rgba(0, 255, 0, 1)');   // 底部不透明绿色gradient.addColorStop(1, 'rgba(0, 255, 0, 0)');   // 顶部完全透明ctx.fillStyle = gradient;ctx.fillRect(0, 0, 1, 256);var gradientMaterial = new Cesium.ImageMaterialProperty({image: canvas,transparent: true,  // 启用透明通道color: Cesium.Color.WHITE.withAlpha(0.8)  // 叠加颜色透明效果});// 创建墙实体var wallEntity = viewer.entities.add({position: center,wall: {positions: positions,minimumHeights: positions.map(() => 0),maximumHeights: positions.map(() => 50),material: gradientMaterial}});viewer.zoomTo(wallEntity);</script>
</body>
</html>

关键技术点

1. 路径闭合算法

通过将循环次数从 i < numPoints 改为 i <= numPoints,生成65个点而非64个,确保首尾相接。

2. 透明渐变实现

使用RGBA颜色模式 (rgba(0, 255, 0, 1) → rgba(0, 255, 0, 0)) 实现平滑过渡。

3. 材质优化

启用材质透明通道 transparent: true,并通过color属性叠加整体透明度效果。

参数调整指南

颜色修改

修改gradient.addColorStop中的颜色值改变基础色。

高度调整

调整maximumHeights改变墙高度。

尺寸控制

修改radius改变圆环直径。

平滑度优化

调整numPoints改变圆环平滑度(推荐≥64)。

预期效果预览

http://www.lryc.cn/news/2387481.html

相关文章:

  • 网络原理与 TCP/IP 协议详解
  • day022-定时任务-故障案例与发送邮件
  • 新增 git submodule 子模块
  • List优雅分组
  • Linux 使用 Docker 安装 Milvus的两种方式
  • AR眼镜+AI视频盒子+视频监控联网平台:消防救援的智能革命
  • 编程技能:字符串函数10,strchr
  • 使用tunasync部署企业内部开源软件镜像站-Centos Stream 9
  • c/c++的opencv像素级操作二值化
  • C++----Vector的模拟实现
  • Mac redis下载和安装
  • [25-cv-05718]BSF律所代理潮流品牌KAWS公仔(商标+版权)
  • 【PhysUnits】9 取负重载(negation.rs)
  • 深度思考、弹性实施,业务流程自动化的实践指南
  • UWB:litepoint获取txquality里面的NRMSE
  • VUE npm ERR! code ERESOLVE, npm ERR! ERESOLVE could not resolve, 错误有效解决
  • IoT/HCIP实验-1/物联网开发平台实验Part1(快速入门,MQTT.fx对接IoTDA)
  • DMA STM32H7 Domains and space distrubution
  • 洪水危险性评价与风险防控全攻略:从HEC-RAS数值模拟到ArcGIS水文分析,一键式自动化工具实战,助力防洪减灾与应急管理
  • Gemini Pro 2.5 输出
  • SQL Server 和 MySQL 对比
  • Leetcode 3269. 构建两个递增数组
  • 三轴云台之积分分离PID控制算法篇
  • 【Elasticsearch】scripted_upsert
  • uv - 一个现代化的项目+环境管理工具
  • 经典密码学和现代密码学的结构及其主要区别(2)维吉尼亚密码—附py代码
  • Elasticsearch 节点角色详解及协调节点请求策略
  • 视频逐帧提取图片的工具
  • 数据结构第1章编程基础 (竟成)
  • 互联网大厂Java求职面试:AI大模型与云原生架构融合中的挑战