我使用three.js在我的web应用程序中包含3D模型(OBJ + MTL格式)。3D模型的大小非常大( 35-70MB ),所以我需要使用web工作者来加载它们,以避免冻结网页。我尝试了基于worker的方法,使用了THREE.OBJLoader2.WWOBJLoader 2,但是只有一个纹理被应用到3D模型中。我试过使用不同的3D模型,结果是一样的。
reader.addEventListener( 'load', function ( event ) {
var uint8ArrayNew = new Uint8Array(event.target.result);
objBuffer = uint8ArrayNew;
initPostGL();
prepData = new THREE.OBJLoader2.WWOBJLoader2.PrepDataArrayBuffer(
workerInput.obj, // overall model name
objBuffer, // OBJ file as arrayBuffer
workerInput.path, // Texture path
mtlString // MTL as string
);
objectGroup = new THREE.Group();
objectGroup.name = workerInput.obj;
prepData.setSceneGraphBaseNode( objectGroup );
prepData.setStreamMeshes( true );
wwObjLoader2.setDebug(false);
wwObjLoader2.prepareRun( prepData );
wwObjLoader2.run();
}, false );
reader.readAsArrayBuffer( objectAsBuffer );
这里是指向OBJ文件的链接: https://www.dropbox.com/s/95l3cwv68a0r5hi/SampleObjMtlModel.zip?dl=0
发布于 2017-10-01 11:05:02
问题是TREE.OBJLoader2.WWOBJLoader 2库已经解决了。如需参考,请访问https://github.com/mrdoob/three.js/pull/11955
https://stackoverflow.com/questions/45682075
复制相似问题