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 就能让"公寓黄、高楼青、其余白",城市秒变彩虹。

相关推荐
GoldenSpider.AI4 小时前
一张户型图做成浏览器 3D 漫游:house.json 统一模型、1.2 m 剖切图纸与分阶段验收
ai编程·webgl·three.js·3d漫游·claude code
Solange__4 小时前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
Solange__4 小时前
物流园区怎么用AI生成3D调度预演?从道路底图、车辆转弯到网页评审
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
吃一碗粉只付一碗钱13 小时前
12-给SPA友好的401和403响应
c#·状态模式
言乐61 天前
通过 3D 动画直观演示球形瓶内可滑动半圆机构在倾倒时防粘盖、回正时刮膏体的运动学过程
python·3d·django·virtualenv·pygame
苏州福兰克1 天前
没有3D内容,裸眼3D显示器还能用吗?
3d·计算机外设
sunlifenger1 天前
嵌入式部署,解锁张家港智慧灯杆的“极简组网”密码
科技·状态模式
慧都CAD开发笔记1 天前
汽车零部件检测软件如何用统一接口直读多种 CAD:3D InterOp 的三类数据接入
3d·汽车
苏州福兰克1 天前
长期看裸眼3D显示器容易视觉疲劳吗?
3d·计算机外设
苏州福兰克1 天前
商用裸眼3D显示器和家用款主要差别在哪里?
3d·计算机外设