在ThreeJs中加载大型模型的最佳方法以及如何在ThreeJs中释放缓存
问题1: 在我的应用程序中,我使用JsonLoader以.js格式加载大约65MB的模型,这需要10秒。对我们来说太长了。有什么办法来加载大型模型?或更好的装载机或更好的格式?在我的情况下,我使用remove()函数从场景中删除模型,但缓存不会立即在浏览器中释放,它需要超过20秒的空闲时间;而且,我怎么办?这是我的代码:this.scene.remove(i);我是我的模特。在ThreeJs中加载大型模型的最佳方法以及如何在ThreeJs中释放缓存
JSON格式非常繁重。尝试使用OBJ或glTF。 THREE.js在它的例子中都有它们的装载者。
关于内存释放,这是JavaScript固有的,它使用垃圾回收来释放内存。 (这是一个MDN article on JavaScript memory management。)就像Java一样,这种情况“偶尔会发生”,所以您只需等待它发生。
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时调用它。
记得用'dispose'清除所有的纹理和材质:) – mjanisz1
谢谢我会试试你的方式 – JsonS