返回项目列表
03 · PROJECT / 3D GIS

Cesium 三维校园场景:3D Tiles 与地形集成

2026 年 4 月 25 日CesiumJS3D TilesglTFobj2gltfGitHub ↗

项目简介

在二维校园地图之上做的三维版本:无人机倾斜摄影 + 楼栋分层白模 + 管线,统一加载进 Cesium 场景,支持飞行漫游与单体化点击。

功能

  • 倾斜摄影模型(OSGB → 3D Tiles)流畅加载,LOD 自动调度;
  • 建筑白模按楼层"单体化",点击高亮并显示属性;
  • 地下半透明模式展示管线网络;
  • 预设相机路径漫游(校门 → 图书馆 → 体育场)。

技术过程

模型生产链路

无人机航飞 (大疆精灵4 RTK)
  → ContextCapture 重建 OSGB
  → osgb2tiles / 3dtiles 转换
  → Cesium Ion 或自托管

白模部分:shp 拉伸(ArcGIS Pro 导出 multipatch)→ obj2gltf -i building.obj -o building.glbgltf-pipeline 转 b3dm,配 batchTable 承载属性,实现单体化。

关键配置

const tileset = await Cesium.Cesium3DTileset.fromUrl('./tiles/campus/tileset.json');
viewer.scene.primitives.add(tileset);
viewer.zoomTo(tileset);

// 地形
viewer.terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(
  'https://your-cdn.com/terrain'
);

单体化点击

3D Tiles 本身没有"要素"概念,靠 batchTable 属性 + viewer.scene.pick 返回的 batchId 反查楼栋信息。

效果与经验

  • 首屏加载控制在 3s 内(第一级 LOD 很小 + 视锥裁剪);
  • 倾斜摄影与白模不要叠在同一位置,透明度切换打架;
  • Cesium 的 token/ion 服务在国内不稳定,最终全部资源自托管 + Nginx。

后续计划

  • 接入实时数据(教室占用、能耗)做轻量数字孪生;
  • 加载校园 InSAR 形变监测结果做三维叠加展示(与研究工作联动)。