如何在three.js中为OBJ添加MTL纹理

时间:2016-02-06 21:19:46

标签: javascript 3d three.js

您好我正在尝试弄清楚如何在three.js中将MTL文件添加到我的OBJ中。我装载了OBJ,然后回来解决这个问题。现在,当我使用MTLLoader添加要加载的MTL文件的代码时,它没有被传递mtlLoader.load(url, ....)(因为在添加这段代码之后,现在只有场景被渲染而内部没有任何内容)。我正在使用警报来跟踪代码的进度,并在此声明之前收到警报,但之后没有收到警报。我找到的所有解决方案都包括使用OBJMTLLoader,它不再是当前版本的three.js(r74)的一部分。

1 个答案:

答案 0 :(得分:5)

此代码取自加载obj + mtl:

的官方示例
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setBaseUrl( 'obj/male02/' );
mtlLoader.setPath( 'obj/male02/' );
var url = "male02_dds.mtl";
mtlLoader.load( url, 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 );

});

http://threejs.org/examples/#webgl_loader_obj_mtl

现在通过以下方式将材料分配给OBJ:

objLoader.setMaterials( materials );

如果你想操纵这些材料,mtlLoader在回调中给你的是THREE.MTLLoader.MaterialCreator的一个实例。因此,您可以使用materials.getAsArray()获取材料。请参阅所有可能功能的来源:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js#L138-L417