我想要一个方法来获取.obj和.mtl文件在three.js中的加载进度。
在以前的版本中(作为r53)我用:
loader = new THREE.OBJMTLLoader();
loader.addEventListener('progress', function ( item ){
console.log( item.loaded, item.total, item );
});
但现在,使用版本r67,我无法使用此代码。
我尝试:
var loader = new THREE.OBJMTLLoader();
loader.load( 'obj/inicial/modelo.obj', 'obj/inicial/modelo.mtl', function(object){
scene.add( object );
}, function(item){
console.log(item);
});
但它不起作用。
我搜索了谷歌,但没有找到任何关于。有人能帮助我吗?
提前吃完。答案 0 :(得分:0)
装载管理器和onProgress回调都应该/很快就可以在dev和master中使用。
对于onProgress,OBJMTLLoader中的onError https://github.com/mrdoob/three.js/pull/5423
对于LoadingManager支持 https://github.com/mrdoob/three.js/pull/5463
答案 1 :(得分:0)
不推荐使用OBJMTLLoader类,而最新的three.js(r78)使用MTLLoader和OBJLoader,代码如下所示:
var onProgress = function ( xhr ) {
if ( xhr.lengthComputable ) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log( Math.round(percentComplete, 2) + '% downloaded' );
}
};
var onError = function ( xhr ) { };
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( 'obj/male02/' );
mtlLoader.load( 'male02_dds.mtl', function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'obj/male02/' );
objLoader.load( 'male02.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
});