做三维一张图、数字孪生时,经常会遇到这样的需求:几十 GB 的倾斜摄影、上百 MB 的 BIM 模型,要在浏览器里流畅打开,还要和地图、管线、监测点位叠加在一起。3D Tiles 就是为这类场景设计的数据格式。

3D Tiles 是什么 #

3D Tiles 最初由 Cesium 团队提出,后来成为 OGC(开放地理空间信息联盟)社区标准,用于在网络上流式传输和渲染海量三维地理数据。它的核心思路和二维地图瓦片类似:把大场景切成很多小块,按视距分级加载。离得远只加载粗糙的大块,拉近后再加载更精细的小块。

一套 3D Tiles 数据由两部分组成:

  • tileset.json:描述整棵瓦片树,每个节点记录包围体(boundingVolume)、几何误差(geometricError)和子节点;
  • 瓦片内容文件:1.0 版常见 b3dm(批量模型)、i3dm(实例模型)、pnts(点云);1.1 版可以直接引用 glTF / glb,并支持更完整的元数据。

常见三维数据怎么转成 3D Tiles #

源数据典型格式转换要点
倾斜摄影OSGB(带 metadata.xml)读取原点坐标,按原有 LOD 层级重组瓦片树
BIMIFC、RVT 导出格式简化构件、合并材质,保留构件 ID 与属性
通用模型OBJ、FBX、glTF指定放置位置与朝向,必要时自动生成 LOD
管线数据Shapefile、DXF、GeoJSON按管径、埋深生成圆管或方沟模型,再切片

一般流程是:读取模型 → 确定地理位置(坐标配准)→ 构建 LOD 层级 → 压缩几何与纹理 → 写出 tileset.json 与瓦片文件 → 在三维平台中加载验证。

常见问题与原因 #

模型加载后位置偏了、飘在空中或埋在地下 #

最常见的原因是坐标系或原点没对上。倾斜摄影的 metadata.xml 里记录了投影坐标系和原点,转换时要正确读取;BIM 和通用模型本身多是局部坐标,需要手动指定经纬度、高程和旋转角。高程基准不一致(椭球高与正常高)也会导致整体抬高或下沉几十米。

打开很慢、拖动卡顿 #

通常是几何误差(geometricError)设置不合理或单个瓦片过大。几何误差太小,客户端会过早请求高精度瓦片;单瓦片太大,下载和解析都慢。合理的 LOD 分级加上 Draco 几何压缩,能明显改善加载速度。

纹理模糊或颜色发灰 #

纹理被过度压缩或降采样会变糊;颜色发灰常见于色彩空间处理不一致。可以在压缩率和清晰度之间调整,或者对重点区域保留更高的纹理分辨率。

BIM 模型转换后属性丢了 #

转换时需要把构件 ID 与属性写入瓦片的批量表或元数据中,前端点击构件时才能查到属性。只导出几何的转换方式会丢失这部分信息。

转换前的准备清单 #

  • 确认数据的坐标系、高程基准和原点;
  • 倾斜摄影检查瓦片目录与 metadata.xml 是否完整;
  • BIM 模型先在建模软件里清理无用构件和重复面;
  • 明确目标平台(如 CesiumJS 或基于它的数字孪生平台)支持的 3D Tiles 版本。

常见问题 #

3D Tiles 和 OSGB 有什么区别? #

OSGB 是倾斜摄影生产软件常用的输出格式,主要面向桌面端软件;3D Tiles 是面向网络流式加载的开放标准,浏览器里的三维平台可以直接按需加载。Web 端三维一张图通常需要先把 OSGB 转成 3D Tiles。

3D Tiles 1.0 和 1.1 应该选哪个? #

先看使用的三维平台支持哪个版本。1.1 可以直接使用 glTF 作为瓦片内容,元数据能力更完整;如果平台只支持 1.0,就输出 b3dm 等传统格式。

管线数据能转成 3D Tiles 吗? #

可以。按管径、管底埋深和管线类别生成三维管线与检查井模型,再切成 3D Tiles,就能和倾斜摄影实景在同一个场景里叠加显示。

转换后的 3D Tiles 怎么发布? #

3D Tiles 是静态文件,放到任意 Web 服务器(如 Nginx)或对象存储上,开启跨域访问即可被三维平台加载;内网环境同样适用。

参考标准与文献

  1. OGC 3D Tiles Specification(OGC Community Standard)
  2. ISO/IEC 12113:2022 glTF 2.0

想按你的现场条件聊一聊?

产品选型、实施方案或合作相关的问题,欢迎直接与我们沟通。