Cesium快速入门33:tile3d设置样式

这一节,我们给 3D Tiles 换皮肤------让一栋栋建筑按"类型、高度"自动变色,瞬间把灰白城市变成"彩虹都市"。全程只用官方样式语言,无需写着色器。


一、先看清"建筑长啥样"

打开 Cesium3DTilesInspector 面板,点击任意建筑,Info 里会弹出特征字段:

  • building = apartments / commercial / office

  • cesium#estimatedHeight = 68

    这些字段就是"换皮肤"的判断依据。


二、统一染色:一句话全变黄

复制代码
const osmtile = Cesium.createOsmBuildings();
const osmBuildings = viewer.scene.primitives.add(osmtile);

/* 整片建筑统一刷成黄色 */
osmtile.style = new Cesium.Cesium3DTileStyle({
  show: true,
  color: "color('yellow')",
});

支持三种写法:

  • 颜色名 "yellow"

  • 十六进制 "#FFEB3B"

  • RGBA "rgba(255,255,0,0.5)"


三、按条件变色:公寓黄、高楼青、其余白

官方样式支持 conditions 数组,自上而下匹配,命中即停:

复制代码
osmtile.style = new Cesium.Cesium3DTileStyle({
  show: true,
  color: {
    conditions: [
      // 1. 公寓 = 黄色半透明
      ["${feature['building']} === 'apartments'", "rgba(255, 255, 0, 0.5)"],
      // 2. 估计高度 > 80 米 = 青色半透明
      ["${feature['cesium#estimatedHeight']} > 80", "rgba(2, 255, 255, 0.5)"],
      // 3. 默认 fallback = 白色半透明
      ["true", "rgba(255, 255, 255, 0.2)"],
    ],
  },
});

写规则时记住:

  • 字段名用单引号包裹;

  • 字符串比较用 ===

  • 最后一条必须是 ["true", ...] 作兜底。


四、常用判断字段速查

https://cesium.com/learn/cesiumjs/ref-doc/Cesium3DTileStyle.html?classFilter=3d

字段 含义 示例条件
${feature['building']} 建筑类型 === 'apartments'
${feature['cesium#estimatedHeight']} 估算高度米 > 100
${feature['name']} 名称 === 'Canton Tower'
${feature['addr:country']} 国家 === 'CN'

五、性能提示

  • 条件数组越长越慢,尽量把高概率规则放前面;

  • 只用你需要的字段,多余字段不要写进表达式;

  • 动态修改时直接 osmtile.style = newStyle,无需重建 tileset。


小结

  • 3D Tiles 样式 = Cesium3DTileStyle 对象,支持统一色或条件色。

  • conditions 按顺序匹配,字段名用 ${feature['xxx']} 取值。

  • 会一条 JSON 就能让"公寓黄、高楼青、其余白",城市秒变彩虹。

相关推荐
做cv的小昊13 小时前
结合代码读3DGS&世界模型论文(3)——3DGS & 世界模型新工作GaussianDream论文及代码解读
3d
用户61595868000221 天前
Cesium 入门系列(四):区域高亮显示的两种实现方案
cesium
用户61595868000221 天前
Cesium 入门(三):BaseLayerPicker 底图切换与国产地图接入
cesium
用户61595868000221 天前
Cesium 入门(二):Geocoder 搜索框参数详解与天地图搜索接入
cesium
lilian2331 天前
HarmonyOS 7 新特性(十三)|3DGS 模型加载、交互与性能回退
3d·交互·harmonyos
Highcharts.js1 天前
Highcharts 渲染方式解析:SVG 默认渲染与 Boost 模块的 WebGL 加速,以及它与其他可视化库的不同
svg·webgl·可视化·canvas·highcharts·渲染方式
DolitD1 天前
云流技术深度剖析:单服务器下如何实现3D应用的多实例并发?
java·服务器·前端·3d·云原生·云计算
Liudef061 天前
腾讯混元Hunyuan3D-Part:重新定义3D部件生成的革命性架构
人工智能·3d·架构·腾讯混元hunyuan3d
————A2 天前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式
2601_967659892 天前
大学实训室网络仿真环境搭建:Ranplan 3D射线跟踪双版本技术解析
网络·3d