当我尝试使用库提供的相应加载程序加载非常大的文件时,我的网站选项卡运行在崩溃中。我尝试过实施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