three.js obj + mtl不起作用

时间:2018-05-12 21:38:12

标签: three.js textures

我遇到了three.js obj + mtl loader的问题。 obj仍然没有纹理。任何帮助? :(

    var loader1 = new THREE.OBJLoader();    
    var loader2 = new THREE.MTLLoader();
    loader2,load("models/house1.mtl"), function (materials){
       loader1.load("models/house1.obj ", function(obj) {
          object=obj; 
          object.materials.set( materials );
          object.scale.set(4,4,4); 
          object.position.set(-60,0,30); 
          object.rotation.set(0,0,0); 
          scene.add(object);
       })
   }

1 个答案:

答案 0 :(得分:0)

我认为你错过了预装物质资源。 MTLLoader将返回" MaterialCreator"的实例。解析mtl文件后。您可以使用此对象预加载和准备创建材料所需的资源。有关详细信息,请refer the code

同样@ paulsm4建议,您没有使用正确的语法来加载OBJ + MTL模型。

var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( "models/" ); //Give the path upto the mtl file
mtlLoader.load( "house1.mtl", function( materials ){

    materials.preload();//We can preload the material resources like this.

    var objLoader = new THREE.OBJLoader();
    objLoader.setMaterials( materials );//Set the materials for the objects using OBJLoader's setMaterials method
    objLoader.setPath( "models/" ); //Give the path upto the obj file
    objLoader.load( "house1.obj", function( object ){

        object.scale.set( 4, 4, 4 ); 
        object.position.set( -60, 0, 30 ); 
        object.rotation.set( 0, 0, 0 ); 
        scene.add( object );

    }, onProgress, onError );

} );

您还可以refer this answer