【问题标题】:Applying texture to threejs object将纹理应用于threejs对象
【发布时间】:2014-10-16 06:20:29
【问题描述】:

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

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 添加到场景中就可以了,但是当我必须设置网格和纹理时,我得到了一个错误。正确的语法应该是什么?

【问题讨论】:

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

标签: javascript 3d three.js


【解决方案1】:

您的问题可能是 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

【讨论】:

    猜你喜欢
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2012-12-06
    • 1970-01-01
    • 2019-10-21
    • 2016-05-31
    • 1970-01-01
    相关资源
    最近更新 更多