三个js进度加载OBJMTLLoader

时间:2014-10-07 07:20:54

标签: javascript three.js

我想要一个方法来获取.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);
        }); 

但它不起作用。

我搜索了谷歌,但没有找到任何关于。有人能帮助我吗?

提前吃完。

2 个答案:

答案 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 );

});