下一代 3DTiles(Next)-总体介绍

3D Tiles Next 是一组针对下一代 3D Tiles 的新功能,分6个章节对3D Tiles Next进行详解。

下一代 3DTiles(Next)-总体介绍

3D Tiles Next 是一组针对下一代 3D Tiles 的新功能(或者说 3D Tiles 扩展)。

这些新功能目前以 3D Tiles 1.0 的扩展草案呈现,将来可能会合并到 3D Tiles 2.0 中。

3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。

关于瓦片数据内容的扩展(Tile Content)

概述

在 Next 中,glTF 2.0 数据将可以直接作为瓦片的内容,不再使用 1.0 的 b3dmi3dmpntscmpt,提供了与 glTF 生态的互通性。瓦片可以引用单个内容,也可以引用多个内容。

瓦片的内容也可以集合至类似于 2D 地图图层一样的容器组中。

虽然 Next 使用 glTF 作为瓦片文件,不再使用原来的四种瓦片文件格式,但是并不意味着运行时不再使用,这是数据规范版本的区别,而不是运行时立马就要放弃旧规范。

扩展 3DTILES_content_gltf

3DTILES_content_gltf 这项扩展,允许在 Tile.content 属性上直接引用一个 glTF 模型文件(.gltf.glb)。

扩展 3DTILES_multiple_content

3DTILES_multiple_content 这项扩展,允许一个瓦片引用多个内容(瓦片文件)。瓦片实际上就是一块空间范围体,组织起多个瓦片文件是很正常的。

组织形式也多种多样,可以像地图图层一样,也可以随便分组。

通常会与 [3DTILES_metadata]() 扩展所组织的元数据一起用。

隐式瓦片(Implicit Tiling)

概述

隐式瓦片分割,意思就是将瓦片的空间范围和空间索引方式“隐去”,即不显式地记录在瓦片对象中,而这种隐含的空间分割方法和索引方式,则是默认数据生产者和运行时知道的。

其有效地减少了 tileset.json 这个文件的体积,并提高了空间索引的效率,寻找、遍历瓦片的速度更快,射线计算、随机访问、空间查询也更快了。

除了上述优点,还增强了与 2DGIS 中一些地理数据格式/数据库的相互集成,例如 CDB、TMS、WMTS、S2。

扩展 3DTILES_implicit_tiling

启用了 3DTILES_implicit_tiling 扩展的 tileset(瓦片集),瓦片对象有一一对应的 .subtree 文件,它存储了该瓦片的可见性信息,依此,意味着可以在 URI 上通过唯一的数字编码(level、x、y)进行流式传输。

启用了这项扩展的瓦片集,它的空间分割结构(树结构)就是紧凑型的了,这种树结构对遍历算法、射线计算、空间索引有帮助。

总而言之,隐式瓦片这项扩展主要是提升了大规模数据集的空间索引性能。

扩展 3DTILES_bounding_volume_S2

启用 [3DTILES_bounding_volume_S2]() 扩展,意思就是把 S2 几何体 作为瓦片的空间分割方式。

尤其是与 3DTILES_implicit_tiling 扩展一起使用时,S2 分割方式非常合适超大规模(洲际、全球)的数据,其可以最大限度地减少极地附近的失真(瓦片的空间范围长方体与赤道附近的不会大小差异过大)。它最大的特点是,同级别的格子所表示的空间范围大小是差不多的。

S2 所规定的 30 级空间范围细分等级足够精确到世界任意角落,精度达厘米级。

元数据(Metadata)

概述

通过更友好的类型系统、新的编码方式及全粒度支持,3D Tiles Next 中的元数据更加强大了。全粒度是指,元数据可以高层级对象(Tileset、Tile、TileGroup)上记录,也可以在更低层级的单元上记录,比如 glTF 中的几何形状,甚至是单个顶点、单个纹素。

随着 3D Tiles Next 一起提出的 [三维元数据规范(3D Metadata Specification)](),成为 Next 中一切元数据的基础。这个规范提出了模式、属性类型、存储格式、属性的意义等概念,要求元数据得按这样的方式组织。

当前,已经完成在 3D Tiles 和 glTF 2.0 这两个数据规范的元数据扩展,未来其他可能的格式的扩展仍然以扩展的方式来支持。

扩展 3DTILES_metadata

[3DTILES_metadata]() 扩展定义了 Tileset、Tile、TileGroup 三层的元数据如何组织。在其他情况下,元数据又另有别的方式实现,例如在下列两个扩展启用时,元数据是这么组织的:

  • 在 3DTILES_implicit_tiling 中,元数据存储在 .subtree 二进制文件中,方便大规模的瓦片数据进行流式传输;
  • 在 3DTILES_multiple_content 中,某个瓦片所指向的瓦片文件会与某个组进行绑定,那么这个组的元数据也成为了瓦片的元数据,增强了瓦片的内容组织、样式化与过滤。

glTF 2.0 扩展:EXT_mesh_features

[EXT_mesh_features]() 是一个 glTF 2.0 规范的扩展,通常与 3DTILES_content_gltf 一起用。启用后,元数据就可以与瓦片文件(此时就是指 gltf/glb 文件了)中的“三维要素”作用,而且是在各个不同的层级:

  • 在每个 vertex(顶点):与 3D Tiles 1.0 中的批次表一样,顶点可以通过分组来标记属于哪个“三维要素”,从而实现要素级别的元数据;
  • 在每个 texel(纹素):在几何面片不是很复杂的数据中,直接将属性值和三维要素 ID 到纹理上,即通过纹素来区分“要素”,完成元数据与三维数据对象的对应,这是一个很不错的优化手段;
  • 在每个 GPU实例(GPU instance):这个需要配合 [EXT_mesh_gpu_instancing]() 这个 glTF 2.0 的扩展来实现,类似 i3dm 的机制。

上图简略地展示了各层级的元数据如何组织:

  • 高层级的 Tileset、Tile、TileContent(Group) 由 3DTILES_metadata 扩展负责实现
  • “三维要素”级别的元数据,则由 glTF 2.0 规范中的 EXT_mesh_features 扩展实现。

三维元数据规范(3D Metadata Specification)

元数据指的是瓦片这个实体数据的数据,以及瓦片数据文件中的三维要素数据的数据,那么包括上述两个在内,总要有一套规范来灵活接纳各个领域的元数据,这部分虽然不是具体的扩展项,但是也属于 Next 的重要组成部分。

这项规范还提供了一个 三维元数据语义参考(3D Metadata Semantic Reference),用于描述具体某个属性的含义。有些含义可能是通用的,比如“id”、“name”、“description”等,也可能是不通用的,需要具体问题具体分析。

下一代 3DTiles(Next)- 索引

下一代 3DTiles(Next)-总体介绍

下一代 3DTiles(Next)-瓦片数据扩展3DTILES_content_gltf

下一代 3DTiles(Next)-瓦片数据扩展3DTILES_multiple_content

下一代 3DTiles(Next)-瓦片组织扩展3DTILES_implicit_tiling

下一代 3DTiles(Next)-瓦片组织扩展3DTILES_bounding_volume_S2

下一代 3DTiles(Next)-瓦片属性数据组织扩展3DTILES_metadata

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号