2017-04-27 57 views
0

問題1: 在我的應用程序中,我使用JsonLoader以.js格式加載大約65MB的模型,這需要10秒。對我們來說太長了。有什麼辦法來加載大型模型?或更好的裝載機或更好的格式?在我的情況下,我使用remove()函數從場景中刪除模型,但緩存不會立即在瀏覽器中釋放,它需要超過20秒的空閒時間;而且,我怎麼辦?這是我的代碼:this.scene.remove(i);我是我的模特。在ThreeJs中加載大型模型的最佳方法以及如何在ThreeJs中釋放緩存

回答

0

JSON格式非常繁重。嘗試使用OBJglTF。 THREE.js在它的例子中都有它們的裝載者。

關於內存釋放,這是JavaScript固有的,它使用垃圾回收來釋放內存。 (這是一個MDN article on JavaScript memory management。)就像Java一樣,這種情況「偶爾會發生」,所以您只需等待它發生。

+0

謝謝我會試試你的方式 – JsonS

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時調用它。

+0

記得用'dispose'清除所有的紋理和材質:) – mjanisz1