将纹理应用于三个js对象

时间:2014-10-15 16:05:47

标签: 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({
    map: texture
  });
  mesh = new THREE.Mesh( obj, material );

  scene.add( mesh );
});

将obj添加到场景中工作正常,但是当我必须设置网格和纹理时,我得到一个错误。正确的语法应该是什么?

1 个答案:

答案 0 :(得分:0)

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

所以要改变你需要的材料:

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

另外,请查看MTL加载程序。 OBJ / MTL加载器是使用纹理OBJ的常用方法,如示例中所示:http://threejs.org/examples/#webgl_loader_obj_mtl