如果我使用以下代码加载一个小铺层文件(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中加载模型,不丢失重要信息的操作吗?
发布于 2017-04-25 19:47:14
我也有过类似的问题,对较大的型号。我建议您以小块(例如,一次1mb )流和加载模型。
问题是,Three.js不支持加载块模型。
我为自己做的就是重写一个加载器来处理数据块,并从块构建内部表示。
另一种方法是将场景导出为较小的片段,然后在加载后重新组合它们。
还有第三种可能性,即模型非常复杂。
编辑:好的,我玩了一下,如果你把文件转换成二进制STL,那么它工作得更好,不会崩溃铬,同时保持相同的顶点计数。我将在这里包含到两个转换文件的链接,其中一个是抽取版本(顶点计数减少70%),另一个是原始文件的转换,它们都为我工作。
https://stackoverflow.com/questions/43368176
复制相似问题