介绍3D Tiles
3D Tiles是用于流式传输大规模异构3D地理空间数据集的开放规范。为了扩展Cesium的地形和图像流,3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据。
3D Tiles 已经在Cesium中进行,例如,请参考:
3D图形将图形研究,电影行业和游戏行业的技术引入3D地理空间,定义了一种空间数据结构和一组专为3D设计的图块格式,并针对流媒体和渲染进行了优化。3D模型的平铺使用glTF,这是由Khronos开发的WebGL运行时数据格式,Cesium团队为此做出了巨大贡献。
在Cesium中加载3D Tiles就像这样简单:
var viewer = new Cesium.Viewer('cesiumContainer');
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url : '/path/to/3d/tileset' }));
3D Tiles 是
- Open(开放)
- Optimized for streaming and rendering(针对流和渲染进行了优化)
- Designed for 3D(专为3D设计)
- Interactive(交互式互动)
- Styleable(设置样式)
- Adaptable(适应性强)
- Flexible(灵活)
- Heterogeneous(异构的)
- Precise(精确)
- Temporal(时间动态)
Open
3D Tiles是一个开放式规范,在Cesium中具有开源实现。我们希望看到其他3D引擎和转换工具使用3D Tiles。
此外,我们通过发布相关技术文章(例如Cesium中的边界体积优化和平面掩蔽)来帮助推动该领域的发展。
规范和实施的开发正在进行中,我们鼓励在Cesium论坛上进行公开讨论。我们预计它们将在2016年春季稳定下来。
Optimized for streaming and rendering
3D Tiles的主要目的是改善大规模异构数据集的流和渲染性能。3D Tiles的基础是一种空间数据结构,它支持层次结构细节级别(HLOD),因此只有可见的图块才会被流式传输 - 并且只有那些对于给定3D视图最重要的图块。平铺有效载荷可以是二进制和上下文感知压缩的,例如,使用Open3DGC或oct编码。
3D Tiles是由一个从一开始就使用WebGL的团队设计的,而OpenGL在此之前已经使用了很多年。因此,与glTF一样,从接收3D Tile到使用WebGL渲染3DTF的流程简化为快速简单,并最大限度地减少客户端处理。为了减少WebGL绘制调用的数量,可以预先批量处理或批量处理切片。
在剑桥的3D建筑物
稀疏网格布局中切片的边界体积。每个图块都是一个WebGL绘图调用
放大视图看哈佛
缩小的调试视图显示只需要在上面的Harvard Yard视图中呈现Cambridge数据集的子集
Designed for 3D
从头开始,3D Tiles专为真正的3D设计,配备自由漫游相机; 它们不仅限于2.5D视角等案例。
3D Tiles不依赖于2D构造(如缩放级别),而是基于细节级别(LOD)选择的几何误差和可调像素误差。这允许性能/视觉质量调整,并在同一视图中为多个“缩放级别”构建。
在3D Tiles中,边界体积是3D,而不是2D制图范围。在2D中,切片方案通常基于Web墨卡托投影。Web Mercator不适合3D,因为极点投射到无限远,也因为NGA 不推荐使用Web Mercator进行DoD应用。相比之下,在3D平铺中,平铺方案在所有三个维度中都是可适应的,这取决于数据集中的模型及其分布。
传统的地理空间要素(如多边形和折线)可以在表面上方挤出或绘制。但3D Tiles超越了点,折线和多边形,以考虑具有网格,材质和节点层次结构的完整3D模型。
Interactive
3D Tiles支持交互式选择和样式。即使使用WebGL优化(例如批处理),3D Tiles也允许单独的模型交互,例如鼠标悬停时突出显示或移除3D建筑。Tiles可以包含每个模型的元数据以允许其他交互,例如使用建筑物ID查询第三方Web服务。
鼠标悬停突出显示3D Tile交互
Styleable
单个模型的元数据(例如建筑物高度或建造年份)可以在运行时用于着色而无需编写代码。样式可以即时更改。
高度依赖的建筑颜色展示3D瓷砖造型
Adaptable
例如,在TMS中使用的传统四叉树细分对于地图图块和2D是足够的,但是对于3D和非均匀数据集分布而言它是次优的。
3D Tiles在3D中实现自适应空间细分,包括kd树,四叉树,八叉树,网格和其他空间数据结构。转换工具可以自适应地细分数据集,而不是刚性空间细分,例如,基于渲染每个模型的成本和模型的分布,从而产生平衡的数据结构。像Cesium这样的运行时引擎是通用的,适用于所有细分技术。
基于剑桥建筑物分布的自适应四叉树细分
Flexible
使用传统的2D地图图块,当用户放大时,可见的地图图块将被新的更高分辨率的地图图块替换。这称为细化。在某种意义上,相同内容的子集再次下载,但分辨率更高。我们称之为替代改进,它是图像拼贴甚至3D地形的合理解决方案。
但是,其他3D数据集(如建筑物和点云)需要更大的灵活性。例如,在观看者放大时,不是基本上多次下载相同的建筑物,而 是3D Tiles而不仅仅是新建筑物。我们称之为添加剂改进。添加剂细化具有额外的好处,即子图块可以在下载时呈现,而不是替换细化,这需要首先下载所有父项的子项。
3D瓷砖允许更换和添加剂细化。
迈阿密建筑的根瓦包含最“重要”的建筑物
当观察者放大时,使用添加剂细化来流式传输包含下一个最重要的建筑物的子瓦片。根块和最近的子块显示在此处
随着观察者放大得更近,孙子瓷砖被加载(蓝色)。请注意,子图块不会在远处加载
Heterogeneous
3D Tiles是异构的,因为3D数据集没有一个适合所有人的尺寸。批量模型(例如,建筑物)需要来自实例模型(例如,树)的不同表示,其需要来自点云的不同表示,等等。
3D Tiles通过启用自适应细分,灵活细化和可扩展的切片格式集支持异构数据集。
3D Tiles的异构性质允许离散水平的细节与HLOD结合,因此,例如,3D建筑可以是一个LOD上的广告牌和标签,更高LOD的挤压印迹,下一个LOD的3D模型,以及在最高LOD纹理3D模型。
Precise
鉴于Cesium在火箭科学中的根源(字面意思),3D Tiles提供全精度几何,以避免抖动伪像,而无需存储双精度值。
Temporal
Cesium专为时间动态可视化而设计,例如卫星和无人机。下一步是将其扩展到3D Tiles,以便用户可以通过大量时间动态地形和点云来查看地形或积雪随时间的变化。