javascript - Three.js 加载 .mtl 和 .obj - 对象保持白色

标签 javascript three.js .obj

我想在不同的地方加载一个具有不同纹理的对象 - 所以我查看了 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);
        });
    });

我的文件夹结构:

Folder Structure

结果:

The Result

控制台输出

Console output

对象的来源:

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

我是 three.js 的新手,所以我不知道我必须在哪里搜索错误。

控制台中没有抛出错误。

我该如何解决这个问题,以便对象正确加载纹理?

最佳答案

您的代码是正确的。模型已损坏(.mtl = Material 文件中未引用纹理。)

只需将纹理路径添加到 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

注意事项

您的模型还为叶子提供法线贴图和 alpha 贴图。我建议你阅读 .mtl specification因此您可以将它们添加到 .mtl 文件中。

关于javascript - Three.js 加载 .mtl 和 .obj - 对象保持白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470030/

相关文章:

javascript - ThreeJS 中的 RGB 颜色

javascript - Three.js OBJExporter - 导出多种 Material ?

javascript - 如何向 Three.js 场景添加 2D 实时动态文本?

javascript - 如何通过Angular方法返回数据库结果

javascript - 如何选择在 ajax 请求中显示的内容?

javascript - 需要在 React Native 中将对象转换为 FlatList 的数组

javascript - Three.js中如何把 `object1`改成 `object2`添加?

3d - 使用 three.js 设置 Material (obj + mtl)后网格消失

iOS 将 .obj 文件导入模型 I/O,无需复制顶点

javascript - 使用用户输入搜索数组