实用指南:高达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 TilesetLoading in Flight(飞行中加载)Loading in General(一般加载)
Photogrammetry10.0x faster2.0x faster
Point clouds7.1x faster2.8x faster
3D Buildings5.5x faster2.3x faster

以上所有特性在 CesiumJS 1.57 中默认开启。升级你的应用即可直接受益。如果你还未运用 3D Tiles,可以注册一个免费的 Cesium ion 社区账号来切片并托管你的数据。

posted @ 2025-08-25 13:48  wzzkaifa  阅读(24)  评论(0)    收藏  举报