这种与3D Tiles构建的集体经验,加上3D地理空间数据(尤其是语义元数据)持续增长,以及用户对数字孪生和元宇宙的兴趣增长,共同促成了下一代3D Tiles规范的诞生。
3D Tiles Next 的核心仍然是大规模流媒体互动 3D。3D Tiles Next 是一组扩展,旨在让开发者社区能够更好地:
-
高效流式语义元数据,
-
通过空间索引进行大规模模拟和分析,
-
与GLF软件及扩展生态系统集成。
-
在线打开3D Tiles
3D Tiles Next 的扩展使得游戏式地理空间体验能够跨设备流式传输到开放元宇宙,包括当今和未来的 VR 和 AR 可穿戴设备。3D Tiles Next 利用 5G 以及边缘和云端计算技术,旨在提升开放且互作生态系统中 3D 地理空间体验的标准。在开发3D Tiles Next时,我们与Maxar紧密合作,确保它能够满足建模和仿真社区对高效运行时地形的训练、仿真和运维需求。
高效流式语义元数据
在《3D Tiles Next》中,我们非常重视元数据,因为元数据的可用性不断增加且用户需求日益增加。正如当今车辆、传感器、计算和摄影测量趋势使我们能够以不断提升的几何和纹理分辨率捕捉现实世界一样,如今的人工智能算法也越来越富含语义元数据,以增强3D模型。
从3D瓷砖开始,我们就意识到需要超越可视化,通过存储这些元数据(如建筑编号或点分类),以及几何和纹理。这些元数据常用于样式设计和过滤,例如应用基于分类的颜色斜坡以区分植被与建筑物,以及用户交互,如通过鼠标悬停显示建筑物的楼层数。
3D Tiles Next 引入了以下元数据扩展:
-
定义良好的类型系统和更多编码选项,如二进制或JSON;
-
更多的存储粒度选项,如每像素和每瓦片;以及
-
语义意义被添加到元数据中,促进了领域特定语义扩展的生态系统。
类似于 3D Tiles 1.0 使用批处理表高效存储元数据,3D Tiles Next 实现了 3D Tiles 最显著的性能优势之一:批处理。许多逻辑特征,如单个建筑及其元数据,可以在图形API运行时预批处理成一个网格和一个绘制调用,但它们仍可唯一识别,从而减少每瓦片的运行时处理量和低CPU开销。
元数据类型系统
新的3D元数据规范定义了类型系统模式和元数据编码方法。
3D Tiles 1.0 依赖于 JSON 的类型系统;3D Tiles Next 的类型更强,包括类、向量和矩阵的类型。元数据可以编码:
-
以二进制形式存在,例如当同一网格中不同顶点的每个顶点存储时,或者
-
在 JSON 中,比如当它可以用于每个瓦片时,或者
-
在栅格中实现细粒度的每像素粒度。
不同粒度的元数据
利用3DTILES_metadata和EXT_mesh_features(一种glTF扩展),3D Tiles Next旨在高效存储不同粒度的元数据:
-
每个瓦片集
-
每个瓦片或瓦片内容组
-
每个功能
-
每个GPU实例
-
每个顶点
-
每像素
每像素的最细粒度允许元数据比几何形状更频繁地变化。例如,考虑一栋建筑的一侧,可以用两个三角形建模,然后应用一个元数据纹理来定义什么是玻璃、砖块还是石头。这些在分析中会有不同的交互作用,比如射线在射频传播中的反射,以及渲染方面,比如将元数据映射到glTF的物理基础渲染(PBR)材料。
元数据语义规范
3D Tiles Next 旨在实现数字化的元宇宙体验,呈现整个世界的数字表现。在这个尺度上,我们不仅需要表示每一座城市、每栋建筑、每个房间、每一个门把手和每个对象的元数据,还需要了解元数据的语义含义,以便不同应用了解元数据如何影响交互。例如,混凝土与草地的摩擦系数会影响车辆的速度,而知道门的开启方向会影响人群模拟。
3D Tiles Next 提供了元数据基础,促进一个生态系统,使领域专家能够创建 3D Tiles 扩展,定义领域特定元数据及每个属性语义的词典。例如,土方工程施工可能为堆积中的材料(如石材或粘土)定义语义,并定义预先计算的参数以加速运行时的体积和面积计算。
通过空间索引进行大规模模拟和分析
3D Tiles Next 优化了空间细分,实现快速的空间查询、更快的分析,并增强与 GIS 和仿真生态系统的互作性。
自3D Tiles 1.0以来,我们看到越来越多的人关注在真实世界3D模型中运行大量智能体的大规模仿真,以及在类似环境中进行分析(如视距或射频传播)的应用。3D Tiles Next 的空间数据结构不仅优化了可视化的流媒体,还优化了大规模的仿真和分析,其中光线追踪和最近邻搜索等算法从空间细分中受益。
3D 瓷砖能扩展到如此庞大的模型,正是因为这种空间细分。模型被划分为许多可流式的部分,称为图块,然后创建一个由低细节瓦片组成的层级结构,以实现基于云端视图的流式传输,采用一种称为核心层级细节层级的技术。
在3D Tiles 1.0中,空间细分在一个或多个定义空间数据结构的tileset.json文件中明确定义,即每个图块的边界体、内容和子图块,递归地传递到叶片瓦片。
这种设计比传统的全局四叉树二维地图铺砌更通用。三维瓦片方法允许灵活创建各种空间数据结构,从而开发多种不同的三维瓦片流程,以生成针对给定输入的优化三维瓦片集。例如,由挤出足迹定义的城市模型和LIDAR收集的同一城市模型,可能根据各自模型的数据密度有不同的细分。在这两种情况下,只要细分遵循空间一致性规则:子图块的内容需要在空间上位于父图块的边界体内,生成的3D瓦片集都可以由同一个3D Tiles运行时引擎进行流式传输。这是3D Tiles生态系统的关键推动力:3D Tiles运行时引擎可以从任何来源流式传输3D Tiles。
通过 3D Tiles Next,3DTILES_implicit_tiling 扩展引入了对 3D 瓦片集中已知空间索引的支持,无需显式列出瓦片边界体。允许对任意图块或显示或分析区域所需的任意数量瓦片进行随机访问,这支持以下优化:
-
在单一服务器或多个计算单元上运行的大规模模拟代理,其中高效的k个最近邻和距离查询非常有利
-
基于光线追踪、光线行进和空间查询的分析,其中统一的空间索引能够提升效率
-
部分更新适用于仅需更新3D瓷砖集子集的部分,比如建筑工地的库存,或城市模型中的新建筑
新的运行时流算法,如针对穿越城市的代理优化流;对于一个随时间变化的建筑工地数字孪生;或者飞行模拟器。这些示例都受益于对瓦片的随机访问,从而实现了针对用例的特定算法,区别于通用的自上而下层级细节。
隐式铺砖简洁地表示了三维瓷砖集的空间数据结构,包括:
-
八叉树或四叉树细分;
-
根图块的几何误差和包围体积,例如支持全局和局部图块集;
-
每个瓦片的可用性,因此运行时只请求存在的瓦片,以及存储在二元Morton阶曲线中的其他瓦片数据;以及
-
模板URI来定义随机访问图块的URI。
当然,隐式铺砖相比显式铺砌在tileset.json上也能节省存储空间和网络带宽。体积的节省是有益的,但隐式镶嵌的真正动机在于它允许对3D镶嵌集中的任意镶嵌进行随机访问,并确保镶嵌集具有统一的细分,这两点都支持了上述提到的新优化。
除了支持新算法外,我们设计隐式铺砖时还考虑了互作性。我们希望通过CDB、WMTS和TMS等开放规范,实现与二维GIS及传统建模与仿真生态系统的集成。隐式铺砌可以表示这些规范及其他规范中使用的细分。
S2分区
3D Tiles Next 还包含 3DTILES_bounding_volume_S2 扩展,该扩展同时处理隐式和显式铺砌,为 S2 单元格定义新的包围体类型。这是一个基于立方体的全局细分,同一层级的每个瓦片面积大致相等,极点处的变形极小,尤其是与四叉树细分相比,四叉树细分中极点附近的瓦片变得非常薄。
