三个JS:加载大型模型崩溃浏览器

时间:2017-04-12 11:23:18

标签: three.js loader ply-file-format

如果我使用以下代码加载一个小的PLY文件(4-10 MB):

this.loader.load('assets/data/GuyFawkesMask.ply', function (geometry) {
      var bufferGeometry = new THREE.BufferGeometry().fromGeometry( geometry );

      console.log(bufferGeometry);

      // Create object
        let object =
            new THREE.Mesh(bufferGeometry,
            new THREE.MeshPhongMaterial(
                {
                    color: 0xFFFFFF,
                    //vertexColors: THREE.VertexColors,
                    shading: THREE.FlatShading,
                    shininess: 0
                })
            );

        _this.add(object);
    });

一切正常。

如果我加载大型文件50MB +浏览器有时会崩溃,或者如果模型成功加载,则使用轨道控制与对象的交互在某些计算机中会非常慢。

我很欣赏3D模型是复杂的野兽,但是你知道是否有方法可以优化内存使用,在没有抽取文件的情况下在三个js中加载模型,在不丢失重要信息的情况下我不能做的操作?

1 个答案:

答案 0 :(得分:1)

我对较大的型号有类似的问题。我建议你用小块流式传输和加载模型(例如每次1mb) 问题是,Three.js不支持加载分块模型 我为自己做的是重写一个加载器来处理数据块并从块构建内部表示。

另一种方法是将场景导出为较小的片段,然后在加载后重新组合它们。

还有第三种可能性,即模型非常复杂。

编辑:好的,我玩了一下,如果你把文件转换成二进制STL,那么它可以更好地运行并且不会崩溃chrome,同时保持相同的顶点数。 我将在这里包含2个转换文件的链接,其中一个是抽取版本(顶点数减少70%),另一个是原始版本的转换,它们都适用于我。