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

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

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

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

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

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

依赖于

3D Tiles 1.0;

本说明文档还用到了隐式瓦片分割扩展和元数据扩展,详见 3DTILES_implicit_tiling、3DTILES_metadata。

可选与必需

如果在瓦片中引用了多个数据文件作为内容,那么这项扩展必须同时出现在 extensionsUsedextensionsRequired 数组中,即“必需的”。

概述

这项扩展对单个瓦片提供了引用多个数据文件的支持。这多个数据文件,可以是 b3dm、pnts 或者 1.0 中瓦片格式中的任意类型。

上图表示瓦片与内容(数据文件)的关系。

多数据文件(即多内容)让 Tileset 的结构更加灵活。例如,某个瓦片可以引用 b3dm 和 pnts 两种瓦片,都表示同一个建筑物的表面,而运行时则可以选择性地只加载点云的数据。

当此扩展与 3DTILES_metadata 扩展一起使用时,可以把内容(数据文件)打组,每个组可以共享同一份自己的元数据,如下图所示:

上图有三组,红色组分布在左边两个瓦片,代表小车;绿色分布在上面和左下三个瓦片中,代表树木;灰色以此类推。

分组的好处见上图:过滤不想显示的内容,减少带宽使用。

多内容扩展可以与 3DTILES_implicit_tiling 一起使用,是兼容的。见下文。

概念

3DTILES_multiple_contents 扩展作用于 Tile 对象。模式定义见文末。

举例:

在 root 瓦片的 extensions 属性内,记录了一个 3DTILES_multiple_content 对象,这个对象就记录了两个 content(作为数组)。可以看到这里的多个数据文件组合了 b3dm 和 i3dm,意味这块瓦片的区域内,有建筑模型,也有树木模型。

注意,若启用此扩展,Tile 对象的 tile 属性将不再使用。

而且,content 数组中任意一个 content,将不能指向外部 Tileset。

元数据组

本扩展项可以与 3DTILES_metadata 组合使用,将具体的元数据绑定至对应的瓦片数据文件上。

观察得知,root 瓦片使用了 3DTILES_multiple_contents 扩展,故这里有两个 content,一个指向 buildings.b3dm 文件,一个指向 trees.i3dm 文件。

对于 buildings.b3dm 这个 content,使用 3DTILES_metadata 扩展,绑定“buildings”元数据组;

对于 trees.i3dm 这个 content,使用 3DTILES_metadata 扩展,绑定“trees”元数据组。

往上看 tileset 中的 extensions.3DTILES_metadata 对象,在 schema 中定义了一个 class,layer,每个 layer 元数据包括 color、order 两个属性。

而在 group 中,就刚好对应上面两个 content 所用到的元数据组,“building”元数据组和“trees”元数据组。

瓦片隐式分割

本扩展项可以与 3DTILES_implicit_tiling 扩展组合使用,为 tileset.extensions.3DTILES_multiple_content.content 这个数组下的每一个 content 提供 contentAvailability 属性以判断瓦片内容的可用性。

注意,这两个属性搭配使用时,顶层的 contentAvailability 需要忽略。

如上图所示,3DTILES_implicit_tiling 与 3DTILES_multiple_contents 组合使用。

3DTILES_multiple_contents 中 content 的 uri 是模板,而 3DTILES_implicit_tiling 指定瓦片的空间分割(瓦片对象索引)结构是 QUADTREE(四叉树),对应瓦片的 subtree 文件的 uri 模板写在 subtrees.uri 属性。

取一份 subtree 文件的 JSON 如下所示:

在其 extensions.3DTILES_multiple_contents 对象中,contentAvailability 数组就记录了对应 content 的可用性信息(存储在 bufferView 对应的 buffer,详见 subtree 文件的规定与隐式瓦片分割的相关扩展项)。

在隐式分割的瓦片中的元数据组

如果同时使用 3DTILES_implicit_tiling 和 3DTILES_metadata 扩展,那么可以向模板 URI 给到一个元数据组。

本例将元数据组和瓦片隐式分割组合在一起:

  • 3DTILES_implicit_tiling 负责组织瓦片空间结构
  • 3DTILES_multiple_content 则负责在瓦片的空间范围内组织三维数据
  • 3DTILES_metadata 则负责在瓦片组级别组织元数据

附 模式定义

3DTILES_multiple_content 模式定义

subtree 文件中的 3DTILES_multiple_content 模式定义

下一代 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号