Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js模型加载导致浏览器暂时冻结_Javascript_Three.js - Fatal编程技术网

Javascript Three.js模型加载导致浏览器暂时冻结

Javascript Three.js模型加载导致浏览器暂时冻结,javascript,three.js,Javascript,Three.js,在过去的几周里,我一直在使用Three.JS lib加载动画3d模型。 模型和纹理源文件最初是.obj和.mtl,大小约为60 MB 正如你所想象的,装载时间相当长,而且装载导致了冻结。 为了加快速度,我将模型转换为二进制,对象大小现在为15MB~。装载时间现在更快了,但仍然冻结 到目前为止,我试图解决冻结问题: 网络工作者——似乎不是这样 转换为JSON并使用本机加载程序 转换为二进制 进度条-没有任何帮助 这是代码的加载部分: this.loader = new THRE

在过去的几周里,我一直在使用Three.JS lib加载动画3d模型。 模型和纹理源文件最初是.obj和.mtl,大小约为60 MB

正如你所想象的,装载时间相当长,而且装载导致了冻结。 为了加快速度,我将模型转换为二进制,对象大小现在为15MB~。装载时间现在更快了,但仍然冻结

到目前为止,我试图解决冻结问题:

  • 网络工作者——似乎不是这样
  • 转换为JSON并使用本机加载程序
  • 转换为二进制
  • 进度条-没有任何帮助
这是代码的加载部分:

        this.loader = new THREE.BinaryLoader();
        this.showPreloader();
        this.loader.load(jsPath, function (geometry, material) {
            var object = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(material));
            this.scene.add(object);
            this.hidePreloader();

            if (typeof cb === 'function') {
                cb();
            }
        }.bind(this));

有什么想法吗?

您可以使用Chrome CPU评测来查看主线程中是否有任何JavaScript方法被阻塞:我没有代码,所以我不会给出完整的答案,但我知道这已经成功地在WebGL中用于显著缩小模型大小。它们从85MB.obj变为1.5MB.ctm如果你不调用
this.showPreload()
?@Leeft,OpenCTM blender插件不再受支持,OpenCTM在ubuntu更新版本下似乎也无法编译。。您知道其他转换方法吗?从modern.ie获取windows虚拟机(它们在3个月后过期,然后您需要重建或恢复首次启动前创建的快照),并以这种方式在windows上运行?(假设您没有访问windows框的权限)。