當我嘗試使用庫提供的相應加載程序加載非常大的文件時,我的網站選項卡運行在崩潰中。我嘗試過實施Worker類,但它似乎不起作用。繼承人發生了什麼:Three.js加載大型模型
在主JavaScript文件,我有:
var worker = new Worker('loader.js');
當用戶選擇可用的模型我檢查的延伸和傳遞文件的URL /路徑工人之一:在這種情況下(一個PCD文件)
worker.postMessage({fileType: "pcd", file: file});
現在loader.js有相應的包括是必要的,使其工作:
importScripts('js/libs/three.js/three.js');
importScripts('js/libs/three.js/PCDLoader.js');
並且在onmessage方法中,它根據文件擴展名使用合適的加載器。
var loader = new THREE.PCDLoader();
loader.load(file, function (mesh) {
postMessage({points: mesh.geometry.attributes.position.array, colors: mesh.geometry.attributes.color.array});
});
數據成功傳遞迴主javascript,並將其添加到場景中。至少對於小文件 - 大文件,就像我說的那樣,花費太長時間,瀏覽器決定出現錯誤。現在我認爲工人班應該異步工作,那麼這裏的交易是什麼?
你得到了什麼樣的錯誤?你用什麼瀏覽器? – Alexus
我很懷疑每個說法都是錯誤的。非常大的模型文件導致JavaScript THREE對象中的非常大的數組。根據模型的大小,通過將非常大的模型分解爲多個文件,在許多模型中分配這些點,正常,材質索引,UV和麪陣列可能會有所幫助。此外,使用bufferGeometry還可以提高運行時性能:請參閱http://threejs.org/docs/api/core/BufferGeometry.html – Radio
@Alexus我嘗試了Chrome,Opera,Firefox和IE。除IE以外的所有內容都給出了一個非常無用的錯誤(網站崩潰,哦,快速等)。 IE只是凍結。 – VID44R