三个js进度加载OBJMTLLoader

Three js Progress loading OBJMTLLoader

本文关键字:加载 OBJMTLLoader js 三个      更新时间:2023-09-26

我想要一个方法来获取three.js.中.obj和.mtl文件的加载进度

在以前的版本(作为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);
        }); 

但它不起作用。

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

提前感谢。

LoadingManager和onProgress回调应该/将很快在dev和master中可用。

对于onProgress,OBJMTLLoader中的onErrorhttps://github.com/mrdoob/three.js/pull/5423

用于LoadingManager支持https://github.com/mrdoob/three.js/pull/5463

OBJMTLLoader类已被弃用,而最新的三个.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 );
});