我从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文件是否足以显示带有颜色的汽车?即使我没有设置材料,我也不应该看到它的颜色?我做错了吗?
答案 0 :(得分:2)
看看记事本中的mtl文件。列出了图像文件的名称。也许在您创建mtl文件时,当时到其位置的路径仍然在mtl文件中。如果是这样,并且您的mtl与obj位于同一文件夹中,只需重命名mtl中的文件,就好像它们与obj位于同一文件夹中...即不需要路径。您可以在wordpad中编辑文件名。