【问题标题】:OBJMTLLoader: mtl file ignoredOBJMTLLoader:mtl 文件被忽略
【发布时间】:2013-11-15 00:44:26
【问题描述】:

我从turbosquid 下载了一个免费模型。它包含一个 obj 和 mtl,以及纹理(镜面反射、凹凸贴图等)。现在我只对 mtl 和 obj 文件感兴趣。所以我下载了一个免费模型from here(它是一辆车)。然后我使用以下代码加载模型:

var loader= new THREE.OBJMTLLoader();
loader.load("./L200-Obj/L200-Obj.obj","./L200-Obj/L200-Obj.mtl",function(object) {
    scene.add(object);
}

我已经检查了路径并且它们没问题(我尝试记录object,它是一个有效且有效的对象)。现在的问题是我看到黑屏,原因是 mtl 文件以某种方式“不考虑”。如果我尝试添加材料:

object.traverse(function(child) {
    child.material= someMaterial;
});

然后我看到了我设置的材料的汽车,汽车的形状很好。我还尝试加载纹理:

var map= THREE.ImageUtils.loadTexture("./L200-Obj/truck_color-silver.jpg");
var bumpMap= THREE.ImageUtils.loadTexture("./L200-Obj/truck_bump.jpg");
var specularMap= THREE.ImageUtils.loadTexture("./L200-Obj/truck_spec.jpg");
var material= new THREE.MeshPhongMaterial({
    map: map,
    specularMap: specularMap,
    bumpMap: bumpMap
});
// Set it as material with the above code

它们很好,汽车看起来不错,但问题是:obj 和 mtl 文件不应该足以显示汽车的颜色吗?即使我不设置材料,我不应该看到汽车的颜色吗?我做错了吗?

【问题讨论】:

  • 您链接的汽车模型被描述为使用 Quads...我认为不是由 THREE.js 处理的?

标签: javascript three.js


【解决方案1】:

看一下记事本中的 mtl 文件。列出图像文件的名称。也许当您创建 mtl 文件时,到其位置的路径仍然在 mtl 文件中。如果是这样,并且您的 mtl 与 obj 位于同一文件夹中,只需将 mtl 中的文件重命名为就好像它们与 obj 位于同一文件夹中一样...即不需要路径。您可以在写字板中编辑文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2011-12-12
    • 2012-09-18
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多