首页 / 浏览问题 / 三维GIS / 问题详情
cesium包加载倾斜模型报错
12EXP 2023年11月14日

报错信息

控制台报错信息如上图报错,应用情景为:系统通过scene.open加载约90个图层,其中隐藏60个图层,显示30个图层,这30个图层为总计约300平方公里的倾斜三维模型。

当视角较高时离模型较远,模型模糊,加载正常。但当视角逼近某倾斜模型时,模型加载十分精细,极易爆出上图所示错误。请问是否有人曾遇到过?有何解决方案?

已配置:lodRangeScale=1,clearMemoryImmediately=true,shadowType=2

1个回答

加载的数据太多

超出内存极限溢出了,导致的场景界面崩溃现象

如果您的电脑的内存没有溢出的话,建议设置一下浏览器的最大内存占用量
4,151EXP 2023年11月14日

我已经设置了最大内存占用量,并且也知道内存超出时会报上图错误,但问题中所涉及的黑框错误报出时,浏览器缓存、电脑内存和显卡显存均未溢出,所用设备为服务器级工作站。所以应不是内存问题。

您的截图不是已经超出内存上限了吗

您也提到,远距离加载的时候并没有任何问题

所以并不会是前端的包出现问题,也不会是代码出现的问题

结合报错只能是数据的问题或者硬件内存的问题

现已改用超图官网最新的cesium包,再没有问题中的错误TypeError:Cannot set properties of underfined (setting 'next'),全部变成了如上图所示的错误。

现已设置 clearMemoryImmediately = true和LoadingPriority=Cesium.LoadingPriorityMode.Child_Priority_NonLinear

如果是硬件内存问题,麻烦问您一下在64位内存256G、显存48G的电脑上如何配置与内存相关的参数,设置多大较好?

我看了超图有关性能调优的博客,Cesium.MemoryManager.setCacheSize和setMaxMemory这两个参数现应设置多大较好?还有其它参数可以设置吗?

您这个硬件配置肯定没问题,那应该是浏览器的限制了

这个存储完全可以set 1024*8 的内存(这个参数的单位是MB

设置完之后可以设置一下showMemorylnfo和getCacheMemory

方便在控制台查看具体情况

如果您不清楚您的具体内存设置多少,也可以直接按照如下设置:

1、在运行项目时,首先获取浏览器最大可用内存
var maxAvailableMemory = Cesium.MemoryManager.getMaxMemory()

2、再设置浏览器内存为最大可用内存的80%:
Cesium.MemoryManager.setMaxMemory(maxAvailableMemory *0.8)

参考这篇文章https://zhuanlan.zhihu.com/p/567115829?utm_id=0,在设置浏览器的最大内存时也受浏览器本身内存限制,即浏览器最大内存不会超过4G对吧

您好,当我不设置Cache时getCacheSize结果为1024,当我设置setCacheSize(1024*8)后再getCacheSize输出结果为4036,然后再getMaxMemory发现也是4036。

因此是否可以理解为cache和memory受浏览器同一限制均不能超过4G。或者您是否有其它方法能突破浏览器限制或更好调优?

麻烦您回复一下,谢谢
浏览器的限制产品没法去解决

这个需要针对浏览器进行设置这些

前端依托于浏览器肯定是会被浏览器所限制的

或者更换浏览器,或者通过系统设置来解除限制
明白了,所以说当加载数据较少时效果较好,加载数据过多时容易崩溃。谢谢您
...