遇到的问题
使用cesiumlab osgb转3dtiles,数据量大约120G,加载到cesium场景后,当视图缩小全图范围后,整个瓦片会一直刷新。
这里使用的是免费的cesiumlab转换,没有使用它的付费功能,顶层重建,顶点压缩和纹理压缩。
desktop 2024-09-26 10-58-12
搜索了一大堆文章,没有搜到写相关问题的,没办法只能自己探索,猜测。
仔细读了官网文档的每个参数,怀疑就是设置这个cacheBytes参数。
百度翻译一下就是:
用于缓存图块的GPU内存量(以字节为单位)。此内存使用量是根据加载的图块的几何体、纹理和批处理表纹理估计的。对于点云,此值还包括每点元数据。
不在视野中的瓷砖会被卸载以强制执行此操作。 如果减小此值会导致卸载图块,则下一帧将卸载图块。
如果需要大小超过cacheBytes的图块来满足当前视图的所需屏幕空间错误(由Cesium3DTileset#maximumScreenSpaceError确定),则加载的图块的内存使用量将超过cacheByte,最多可达maximumCacheOverflowBytes。例如,如果cacheBytes为500000,但需要600000字节的图块来满足屏幕空间错误,则可以加载600000字节图块(如果maximumCacheOverflowBytes至少为100000)。当这些瓷砖消失在视线之外时,它们将被卸载。
总结下来差不多就是,默认的cacheBytes的值为536870912 byte≈0.5GB,加载太大的数据时,0.5GB的缓存不够,当缩放到较高的视角时,达到最大缓存值后就会一直重绘。
我的解决方案是:将cacheBytes调大
cacheBytes: 5368709120, // 5G缓存,超过则会重新刷新,可能会导致显存崩溃
maximumCacheOverflowBytes: 536870912, //允许超过缓存多少
当然,我觉得最好的还是使用cesiumlab的付费功能,重建顶层,顶点压缩和纹理压力,我看了他们使用后的效果,确实提升很大。
倾斜模型OSGB转3dtiles格式,合并索引