1

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

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 文件不应该足以显示汽车的颜色吗?即使我不设置材料,我不应该看到汽车的颜色吗?难道我做错了什么?

4

1 回答 1

2

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

于 2013-11-04T22:05:37.723 回答