1

如果我使用以下代码加载一个小的 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 中加载模型而不破坏文件、我无法在不丢失重要信息的情况下进行的操作?

4

1 回答 1

1

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

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

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

编辑:好的,我玩了一下,如果你将文件转换为二进制 STL,那么它会更好地工作并且不会使 chrome 崩溃,同时保持相同的顶点数。我将在此处包含一个指向 2 个转换文件的链接,其中一个是抽取版本(顶点数减少 70%),另一个是原始文件的转换,它们都对我有用。

于 2017-04-25T19:47:14.100 回答