在ThreeJs中加载大型模型的最佳方法以及如何在ThreeJs中释放缓存

时间:2017-04-27 09:38:10

标签: three.js load browser-cache

问题1: 在我的应用程序中,我使用JsonLoader以.js格式加载我的模型大约65MB,这需要10秒。这对我们来说太长了。有没有办法加载大模型?或任何更好的装载机或更好的格式?

问题2: 它是关于threeJs,在我的情况下,我使用remove()函数从场景中删除模型,但缓存不会立即在浏览器中释放,它需要超过20秒才能自由;我怎么办?这是我的代码:this.scene.remove(i);我是我的模特。

2 个答案:

答案 0 :(得分:0)

JSON是一种非常繁重的格式。尝试使用OBJglTF。 THREE.js在其示例中为每个人提供了加载器。

关于内存释放,这是JavaScript固有的,它使用垃圾收集来释放内存。 (这是一个MDN article on JavaScript memory management。)就像Java一样,这种情况偶尔会发生,所以你只需要等待它发生。

答案 1 :(得分:0)

Q1: OpenCTM也是一种不错的压缩格式,但仅限于单个三角网格。所以,你不能用它来存储整个场景。但是也可以选择有损压缩,这导致非常高的压缩率。还有three.js的例子:https://threejs.org/examples/#webgl_loader_ctm

<强> Q2: 如果要真正删除模型,则需要在几何对象上调用dispose()以从内存中移除对象(材质和纹理也有dispose方法)。

文档说:https://threejs.org/docs/index.html#api/core/BufferGeometry

  

.dispose()

     

将对象从内存中处理掉   如果希望在应用程序运行时删除bufferGeometry,则需要调用它。