news 2026/7/4 14:36:52

Cesium快速入门34:3dTile高级样式设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cesium快速入门34:3dTile高级样式设置

这一节,我们把“3D Tiles 样式”再升一级——按“距离中心”做渐变圆
以广州塔为圆心,离得越近颜色越红,越远越淡,甚至直接隐藏,全程只用官方样式语言,不动顶点、不写 GLSL。


一、思路:把“距离”算出来,再当条件用

3D Tiles 样式支持内联表达式,可调用distance()直接算经纬度平面距离。
步骤:

  1. defines先算好距离,存成变量;

  2. show用距离裁掉外围建筑;

  3. color用距离做渐变色。


二、定义中心点 & 距离变量

const osmtile = Cesium.createOsmBuildings(); const osmBuildings = viewer.scene.primitives.add(osmtile); /* 广州塔经纬度(vec2 格式) */ const center = [113.31914, 23.109]; osmtile.style = new Cesium.Cesium3DTileStyle({ defines: { distance: "distance(vec2(${feature['cesium#longitude']}, ${feature['cesium#latitude']}), vec2(113.31914, 23.109))", }, /* 距离 > 0.02° 的直接隐藏 */ show: "Number(${distance}) < 0.02", /* 距离渐变:越近越红,越远越淡 */ color: { conditions: [ [ "${distance} !== undefined && ${distance} !== null && Number(${distance}) < 0.01", "rgba(255, 0, 0, 0.9)", // 内圈:鲜红 ], [ "${distance} !== undefined && ${distance} !== null && Number(${distance}) < 0.02", "rgba(0, 255, 255, 0.5)", // 外圈:青半透明 ], ["true", "rgba(255, 255, 255, 0.2)"], // 兜底:淡白 ], }, });
  • distance()返回的是“弧度”单位,0.01 ≈ 1 km,按需调阈值;

  • 先做!== undefined && !== null判断,避免空特征报错;

  • 条件数组从上到下匹配,命中即停,最后一条必须是兜底。


三、点击 InfoBox 报错?给 iframe 开 sandbox

鼠标点建筑时,Cesium 默认用iframe 内嵌 InfoBox,如果里层脚本被拦截,就会报 “Sandbox” 错。
解决:事后给 iframe 加权限即可。

/* 允许 iframe 里执行脚本、弹窗、表单 */ const iframe = document.getElementsByClassName("cesium-infoBox-iframe")[0]; iframe.setAttribute( "sandbox", "allow-scripts allow-same-origin allow-popups allow-forms" );

刷新后再点建筑,信息窗乖乖弹出,再无红色报错。


四、常用“距离”玩法速记

场景关键表达式说明
圆环渐变distance(vec2(lon, lat), vec2(cx, cy))平面距离,单位弧度
球形遮挡acos(dot(normalize(pos), normalize(center)))立体角,可做“地平线”遮挡
高度分层${feature['cesium#estimatedHeight']}按楼高染色

五、小结 & 预告

  • defines里先算好距离,后面show / color直接复用,避免重复计算。

  • 条件写法 = “先判空 + 再比大小 + true 兜底”,顺序别反。

  • 点击报错 = 给 InfoBox iframe 开 sandbox,一句话解决。

下节课,我们让“距离圆”随时间脉冲,再给楼顶加“夜间霓虹”,完成真正的“动态雷达圈”城市皮肤!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 8:37:28

物流路线智能规划:多目标优化算法在TensorRT上求解

物流路线智能规划&#xff1a;多目标优化算法在TensorRT上求解 在大型物流中心的调度大厅里&#xff0c;每秒都有成百上千个订单涌入系统。一辆配送车刚出发&#xff0c;客户又临时追加了三个新地址&#xff1b;城市主干道突发拥堵&#xff0c;原定路线瞬间失效——面对这种高频…

作者头像 李华
网站建设 2026/6/26 10:22:13

STM32下I2C中断方式通信实现深度剖析

深入STM32的I2C中断通信&#xff1a;从原理到实战的完整工程实践在嵌入式系统开发中&#xff0c;我们常常面临这样的窘境&#xff1a;主控芯片已经跑得飞快&#xff0c;但只要一接上几个传感器&#xff0c;整个系统就像被“卡住”了一样——按键不灵、界面卡顿、数据延迟。问题…

作者头像 李华
网站建设 2026/7/4 2:57:41

组织架构优化建议:协同效率评估由TensorRT数据驱动

组织架构优化建议&#xff1a;协同效率评估由TensorRT数据驱动 在AI系统日益复杂的今天&#xff0c;一个看似无关组织管理的技术工具——NVIDIA TensorRT&#xff0c;正悄然成为企业提升研发协同效率的“隐形标尺”。我们常认为组织架构优化依赖于流程再造或绩效考核&#xff…

作者头像 李华
网站建设 2026/7/4 4:31:19

培训课程内容生成:专业知识拆解通过TensorRT智能组织

培训课程内容生成&#xff1a;专业知识拆解通过TensorRT智能组织 在AI模型越来越复杂、部署场景越来越多元的今天&#xff0c;一个训练好的深度学习模型从实验室走向生产线&#xff0c;往往要经历一场“性能炼狱”——推理延迟高、吞吐量低、显存占用大。特别是在边缘设备上跑大…

作者头像 李华
网站建设 2026/6/26 8:37:29

并购尽职调查助手:风险点排查借助TensorRT全面覆盖

并购尽职调查助手&#xff1a;风险点排查借助TensorRT全面覆盖 在一场百亿级企业并购案中&#xff0c;法务团队需要在72小时内审阅超过两万页的合同、协议与合规文件。传统方式下&#xff0c;这几乎是一项不可能完成的任务——人工阅读不仅效率低下&#xff0c;还极易因疲劳导致…

作者头像 李华
网站建设 2026/7/3 5:51:32

跨平台CubeMX安装对比:Windows/Linux/IDE配置差异解析

深入解析 STM32CubeMX 跨平台安装&#xff1a;从 Windows 到 Linux&#xff0c;再到多 IDE 协同实战你有没有遇到过这样的情况&#xff1f;在公司用 Windows Keil 开发得好好的项目&#xff0c;回家想在自己的 Linux 笔记本上继续调试&#xff0c;结果 CubeMX 启动失败、生成代…

作者头像 李华