纹理和材料加载问题与三个.OBJLoader2.WWOBJLoader2.



我正在使用三个.js在我的Web应用程序中包含3D模型(OBJ + MTL格式(。3D模型的大小非常大(35-70MB(,所以我需要使用Web工作者加载它们,以避免冻结网页。我已经尝试了使用 THREE 的基于 Web worker 的方法。OBJLoader2.WWOBJLoader2,但只有一个纹理被应用于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:

渲染结果(红色圆圈显示加载的纹理(

问题出在 THREE 上。OBJLoader2.WWOBJLoader2 库现已解决。有关参考,请访问 https://github.com/mrdoob/three.js/pull/11955

最新更新