实用指南:高达10倍更快的3D Tiles流式传输 – Cesium
作为我们持续优化Cesium以带来更流畅用户体验的一部分,我们很高兴宣布:3D Tiles的流式传输性能迎来重大提升。结合近期对 WebP 的支持以及最新的 CesiumJS 1.57 版本,3D Tiles 现在总体上搭建了加载速度提升约 2x 至 10x,并且平均加载的 tiles 数量减少约 27% 至 53%!
CesiumJS 能充分利用当前与未来的素材采集趋势,包括更高分辨率、更高频率和时间动态的采集。这些改动让从 photogrammetry 到 point clouds 的所有内容,在从手机到高端桌面的各类设备上都能更顺畅地流式传输。要使用这些新特性,只需升级到最新的 CesiumJS 1.57。如果你希望进一步手动调优参数,请参见 1.57 的发行说明。
减少不必要的 tiles 加载(忽略或延后非必要请求)。就是我们通过两点让 3D Tiles 加载更快:一是重排 tile 请求顺序以优先加载视觉上更重要的 tiles,二
Reordering tile requests(重排 tile 请求顺序)
最显著的改进之一是 tiles 的加载顺序。我们更新了 Cesium 的 3D Tiles 请求管线,以根据 tiles 对场景的重要性进行更好的优先级排序。这样可大幅降低感知加载时间,因为场景会先加载视觉上最重要的 tiles。这意味着即使远处地平线的细节仍在流式传输,你也能立即看到关键内容。
为判断一个 tile 的优先级,我们会综合考虑多个指标,例如在 tileset 中的深度、与屏幕中心的距离以及与相机的距离。

根据接近屏幕中心的程度对 tiles 着色。这是由 Nearmap 采集的纽约市 3D tileset。
Camera flight destination preloading(相机飞行目的地预加载)
由于大家通常知道相机即将飞向何处,因此可以在抵达前就开始预加载该区域的 tiles。实际效果是:现在可以利用飞行动画的时长来“隐藏”最终视图的加载时间。比如,若飞行时长为 2 秒,而在最终目的地加载全部 tiles 也需要 2 秒,那么当相机到达时,所有 tiles 都已准备就绪。
通过预加载飞行目的地(右)意味着相机一到达就能够立即显示对应 tiles。

渐进式分辨率:先加载满足 screen space error 的较低分辨率 tiles。

加载时间对比示例,按热力图着色。右侧为更新后的系统。蓝色与紫色表示较早加载,黄色表示最后加载。
更新后的优先级系统可让场景各部分更快出现可见内容:大约用时减半即可在全场景中渲染出内容,且屏幕中心附近的 tiles 也能以约一半时间达成细节解析。
Loading fewer tiles(加载更少的 tiles)
我们还增加了多项更新,以节约带宽并剔除非必要请求。这些更新可在相机运动期间提高流式传输效率,移除那些已不再需要的 tile 请求。
Camera movement request culling(相机运动期间的请求剔除)
当相机移动时,某个 tile 可能仍在等待网络请求结果,但它已不在视野中。此时我们会取消该请求。同时我们也会预测哪些 tiles 很可能不需要请求——也就是说,在请求完成时很可能已经离开视野的 tiles。
Foveated screen space error deferral(“中心凹”式 screen space error 延后)
在虚拟现实中,屏幕边缘区域不需要以与中心相同的高保真度渲染,因为人眼的视觉敏锐度会从视场中心飞快衰减。借鉴这一理念,我们根据“离中心”的测度来调整所需的细节级别。屏幕边缘区域的细节级别请求会被延后处理,也就是在相机静止一段时间后再请求。

黄色 tiles 表示被延后请求。
就总体加载时间而言,这些系统在特定但常见的场景(例如相机飞行目的地预加载)中能起到很大作用,而请求剔除系统在所有场景中都能带来协助。同样,新的优先级系统能更快地解析屏幕中重要区域,同时也能改善最不利情况下的表现(如带宽较慢、存在屏幕分辨率缩放)。在所有数据类型中,我们都观察到 3D Tiles 加载时间的显著改善。
性能对比(示例)
| 3D Tileset | Loading in Flight(飞行中加载) | Loading in General(一般加载) |
|---|---|---|
| Photogrammetry | 10.0x faster | 2.0x faster |
| Point clouds | 7.1x faster | 2.8x faster |
| 3D Buildings | 5.5x faster | 2.3x faster |
以上所有特性在 CesiumJS 1.57 中默认开启。升级你的应用即可直接受益。如果你还未运用 3D Tiles,可以注册一个免费的 Cesium ion 社区账号来切片并托管你的数据。

浙公网安备 33010602011771号