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