3D Tiles 的本质是一种开放的、用于流式传输和渲染大规模异构 3D 地理空间数据集的规范格式。
-
目标: 高效地在Web浏览器、移动设备和桌面应用程序中渲染海量城市级甚至全球级的 3D 数据(倾斜摄影模型、点云、建筑BIM/CAD、矢量要素、地形等)。
-
核心思想:
-
空间数据结构: 将数据组织成层次化的空间数据结构(通常是瓦片树,如四叉树、八叉树、KD树)。每个节点是一个瓦片 (
Tile)。 -
细节层次 (LOD): 每个瓦片包含同一空间区域在不同细节层次 (
Level of Detail) 上的数据表示。离相机近时加载高细节瓦片,远时加载低细节瓦片。 -
流式传输: 客户端(如 CesiumJS)根据当前视图(相机位置、方向、视锥体)动态请求和加载所需的瓦片,实现“按需加载”。
-
异构数据: 支持多种数据类型的瓦片规范:
b3dm(Batced 3D Model): 批量模型,如带纹理的建筑、树木等。pnts(Point Cloud): 点云数据。i3dm(Instanced 3D Model): 实例化模型,如重复的电线杆、路灯。cmpt(Composite): 组合瓦片,将其他类型的瓦片组合在一起。vctr(Vector): 矢量数据 (实验性)。geom(Geometry): 简单几何体 (实验性)。
-
-
格式基础: 基于
glTF(GL Transmission Format) 2.0 标准或其扩展(b3dm,i3dm内部本质上是glb文件)。使用 JSON 描述瓦片集 (tileset.json) 的元数据和层次结构。 -
优势: 高效渲染海量数据、支持渐进式加载、支持多种数据类型、平台无关性、开放标准(由 Cesium 团队提出,现已成为 OGC 社区标准)。
-
关键技术: WebGL、空间索引、LOD、异步加载。