求大佬帮助。我项目里展示好多个模型,经过我压缩之后每个有十几M,需求是点击不同按钮渲染不同的模型。目前的办法是:1,点击一个按钮加载对应的模型,清理掉上一个模型,但是每次都重新加载,都得转loading,效果不好2,先加载完默认显示的模型渲染,再加载其他模型,其他模型保存在数组或对象里,visible=false,等要显示的时候再展示。但是十来个模型都在内存里,浏览器会报内存不足,一下就崩了
大佬们求个思路
查看更多
看我的免费插件资源管理器用了都说好
你一次性把资源全部加载完
发布 问题
分享 好友
手机 浏览
回到 顶部
太牛了虎哥,这都分享了,我没注意到更新了这个,,,
虎哥,我看了一下源码和tresjs的useLoader方法,发现思路差不多,匹配对应的加载器,然后加载模型,保存在某个对象里。
我也这么做的,我还额外做了更多的处理,在模型列表的循环里用new Promise和await强行让它逐个加载,免得多个模型并发加载解码导致内存突增;记录DRACOLoader产生的worker,加载完成后清理掉。
我发现内存还是会溢出。我十来个模型总共36M,都是我用blender配合PS极限压缩后的。但是面数多,加起来五百万个面+。
我怀疑是不是模型解码之后会变得很大,导致内存溢出了,,,
没有办法了。我又限制了DRACOLoader的线程数setWorkerLimit,改了3或者更小,非常勉强,偶现内存溢出。
我还有个想法,DRACOLoader没有给设置延迟解码之类的方法,但是我可以想办法先加载2进制数据,需要的时候解码,但是比较麻烦