我正在尝试使用aframe创建一个多房间环境。在每个房间中,都会有一些与之交互的对象,这些模型是从glTF或OBJ文件加载的。
在手机上,我们的内存数量非常有限,所以我想在用户传送/移动到另一个房间时清除未使用的模型。但我不知道如何实现这一目标。
我发现了一些建议使用document.querySelector('a-scene').systems.material.textureCache
的相关问题,但我没有在那里找到我的模型(因为它是模型,而不是纹理)。我曾尝试使用THREE.Cache
方法,但有了它,我只能使用一些缓存数据,而不是。
我正在使用这样的模型(创建实体):
<a-gltf-model id="m4_obj" src="/models/m4a1/scene.gltf" position="0.713 1 -5.156" scale="0.1 0.1 0.1" ></a-gltf-model>
所以,我尝试清除缓存: https://i.imgur.com/cYJeegP.png
在加载后拍摄了快照22。
执行document.getElementById("m4_obj").parentNode.removeChild(document.getElementById("m4_obj"));
执行此操作后拍摄了快照24:
for (let elem in THREE.Cache.files){
if (elem.startsWith('/models/m4a1/')){
THREE.Cache.remove(elem)
}
}
/models/m4a1/
- 是一个包含我要删除的模型的文件夹。
但如果我评论这个对象,我的快照就会变成56mb! https://i.imgur.com/lznA3q5.png
那么,我应该如何从场景中正确移除模型,将其完全丢弃?谢谢!