Three.js加载.mtl和.obj文件时,物体保持白色

3
我希望能够在不同的位置加载具有不同纹理的对象-因此我查看了three.js提供的示例,网址为https://threejs.org/examples/webgl_loader_obj_mtl.html。虽然该对象已经被加载,但是它没有不同的纹理。
以下是我输入的代码:
   // LOAD TREE Example
    var mtlLoader = new THREE.MTLLoader();
    mtlLoader.setPath("Assets/Objects/Tree_V9_OBJ/");
    mtlLoader.load("Tree_V9_Final.mtl", function(materials){
        materials.preload();
        console.log(materials);
        var objLoader = new THREE.OBJLoader();
        objLoader.setMaterials(materials);
        objLoader.setPath('Assets/Objects/Tree_V9_OBJ/');
        objLoader.load('Tree_V9_Final.obj', function(object){
            console.log(object);
            object.scale.x = 10;
            object.scale.y = 10;
            object.scale.z = 10;
            scene.add(object);
        });
    });

我的文件夹结构:

文件夹结构

结果:

结果

控制台输出:

控制台输出

对象来源:

http://tf3dm.com/3d-model/tree-for-modification-v9-16618.html

我是新手,不知道在哪里寻找错误。

控制台没有抛出任何错误。

我该如何修复这个问题,以便正确加载带有纹理的对象?

1个回答

2

您的代码是正确的。模型有问题(纹理没有在.mtl=材质文件中引用)。

只需将纹理路径添加到Tree_V9_Final.mtl中:

# Blender MTL File: 'Tree_V9_Final.blend'
# Material Count: 4

newmtl bark_tree
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd bark_tree.jpg

newmtl leaves_01
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd leaves_01.jpg

newmtl leaves_02
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd leaves_02.jpg

newmtl leaves_03
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd leaves_03.jpg

注意

您的模型还提供了叶子的法线贴图和透明度贴图。建议您阅读.mtl规范,以便将它们添加到.mtl文件中。


太棒了,它能工作了 - 我永远不会发现那个问题。 - Matthias Herrmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接