Javascript 将纹理应用于threejs对象

Javascript 将纹理应用于threejs对象,javascript,3d,three.js,Javascript,3d,Three.js,我无法将纹理应用于导出的对象。我的代码如下所示: var loader = new THREE.ObjectLoader(); var texture = THREE.ImageUtils.loadTexture('models/mountain/mountain.png'); loader.load("models/mountain/mountain.json", function (obj) { var material = new THREE.MeshPhongMaterial({

我无法将纹理应用于导出的对象。我的代码如下所示:

var loader = new THREE.ObjectLoader();
var texture = THREE.ImageUtils.loadTexture('models/mountain/mountain.png');

loader.load("models/mountain/mountain.json", function (obj) {

  var material = new THREE.MeshPhongMaterial({
    map: texture
  });
  mesh = new THREE.Mesh( obj, material );

  scene.add( mesh );
});

只需将obj添加到场景中就可以了,但是当我必须设置网格和纹理时,会出现错误。正确的语法应该是什么?

您的问题可能是ObjectLoader返回的obj实际上只是一个Object3D。包含实际几何体和材质的对象是此obj的子对象

因此,要更改材质,您需要:

for(var i = 0; i < obj.children.length; i++)
{
    obj.children[i].material = new THREE.PhongMaterial...
}

另外,请查看MTL加载器。OBJ/MTL loader是使用纹理OBJ的常用方法,如示例所示:

尝试MeshBasicMaterial。嘿,gaitat,感谢您的回复。MeshBasicMaterial产生相同的结果。我的山仍然没有纹理,我感觉我没有正确地调用纹理。但仍在修补它。