3DTiles Next是Cesium发布的下一代3DTiles规范。
元数据
在这一代规范中,更重视元数据(metadata,如建筑物ID或者类型等),通过这些元数据可以对3dtiles进行样式调整或者过滤显示。
关于详细的元数据规范介绍看这里。
下图显示了3DTiles Next中不同粒度实体(tilesets、tiles、contents和groups)之间的关系:
每个纹素的最精细粒度允许元数据比几何图形更频繁地变化。例如,考虑建筑物的一侧可以用两个三角形建模,然后应用元数据纹理来定义什么是玻璃、砖块或石头。它们中的每一个在分析中都会以不同的方式交互,例如射线如何在 RF 传播和渲染中反弹,例如将元数据映射到 glTF 的基于物理的渲染 (PBR) 材料。
3D Tiles Next 旨在以整个世界的数字表示实现游戏般的元宇宙体验。在那个规模上,我们不仅需要代表每座城市、每栋建筑、每个房间、每个门把手和每个对象的元数据,我们还需要知道元数据的语义,以便不同的应用程序知道元数据如何影响交互. 例如,混凝土与草地的摩擦系数会影响车辆的速度,而知道门以何种方式打开会影响人群模拟。
隐式瓦片
3D Tiles Next 优化了空间细分,支持快速空间查询、更快分析以及与 GIS 和模拟生态系统的更高互操作性。
在3dtiles 1.0中,空间细分是在tileset.json中定义的,有KD树、松散四叉树和八叉树等细分方式,子瓦片的内容在空间上要位于父瓦片的边界体积内。
在Next版本里,出现了一个叫3DTILES_implicit_tiling的扩展,无需显式列出瓦片边界体积,允许随机访问显示或分析区域所需的任何图块或任意数量的图块。如果一个瓦片包含了这个扩展,这样的瓦片被称为隐式根瓦片(implicit root tile)。
隐式瓦片简洁地表示了一个 3D tileset 的空间数据结构,包括:
- 八叉树或四叉树细分;
- 根瓦片的几何误差和边界体积,例如,支持全局和局部瓦片集;
- 每个图块的可用性,因此运行时仅请求存在的图块,以及存储在二进制 Morton z - 顺序曲线中的其他每个图块数据;
- 模板 URI 来定义用于随机访问图块的 URI。
与显示瓦片相比,隐式瓦片能够节省存储空间和网络带宽。
新的细分方式-S2
新增了一种新的细分方式,用3DTILES_bounding_volume_S2扩展。它使用隐式和显式瓦片来为S2单元格定义新的边界体积类型。这是基于立方体的全局细分,其中同一级别的每个瓦片具有大致相等的面积,并且极点处的失真最小,特别是与四叉树细分相比,其中靠近极点的瓦片变得非常薄。
S2细分比较适合全球性范围的瓦片数据集,它其实是相当于在地球外面罩一个立方体,根据立方体六个面投影到地球上的范围进行划分。
同类元数据放在同一图层
一个常见的地理空间用例是将具有相同元数据的对象分组到一个图层中,例如高速公路、兴趣点和城市建筑物的图层。然后可以一起对图层进行样式设置、切换等。
使用 3D Tiles Next,3DTILES_multiple_contents可用于通过在图块组中定义层的元数据然后将多个内容(例如 glTF 资产)分配给该组来有效地支持层。
与gltf生态系统集成
使用3DTILES_content_gltf,瓦片现在直接引用 .gltf 或 .glb 文件;而不是引用带有嵌入式 glTF 的 .b3dm 或 .i3dm。