Three.js JSON运行时更改材质(纹理)

时间:2013-10-31 18:53:25

标签: three.js

我从Blender导出了json。如何更改json模型的某些材质的纹理?

2 个答案:

答案 0 :(得分:2)

美好的一天,一旦模型和后续纹理被加载,它们就会变成THREE.Mesh和THREE.Material bound texture。因此,加载虽然是一个重要线索,但并非必然。要在运行时更改纹理,请捕获网格后加载事件

var loader = new THREE.JSONLoader(), function (geometry) {
    mesh = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial());
};

然后,甚至在上面的加载器中,您可以应用如下自定义纹理:

mesh.material.map = THREE.ImageUtils.loadTexture( 'newTexture.png' );

或者如果您通过THREE.MeshFaceMaterial(材质)有多个材质网格,则需要确定要换出的纹理的索引并使用此模式:

mesh.material.materials[index].map = THREE.ImageUtils.loadTexture( 'newTexture.png' );

现在有很多相关的帖子,关于JSON并不是必需的。但您也可以将这些用作参考Loading Maya model with Three.jsJSONLoader not displaying model

答案 1 :(得分:0)

$('#materialchange').on('click',function(){
  oparcie.material.materials[0].map = THREE.ImageUtils.loadTexture('inne.png');
});

这很好用;) 它虽然看起来像异常嵌套的路径