.obj モデルのマテリアルを動的に変更するにはどうすればよいですか? 各モデルには、テクスチャを含む .obj、.mtl、および .jpg ファイルが含まれています。どうにかして .mtl ファイルを変更する必要がありますか?
以下のコードでは、 .obj の各子メッシュのジオメトリを中央に配置し、テクスチャを与えようとしていますが、コメントされたコードも loader.load もテクスチャを与えていません。
var loader = new THREE.OBJMTLLoader();
loader.addEventListener( 'load', function ( event ) {
object = event.content;
for (var i = 0; i < object.children.length; i++) {
THREE.GeometryUtils.merge(geometry, object.children[i].geometry);
}
THREE.GeometryUtils.center( geometry );
//var materials = new THREE.ImageUtils.loadTexture("/obj/stol.mtl");
//mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( material ) );
var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
mesh = new THREE.Mesh( geometry, material );
mesh.scale.x = 0.25;
mesh.scale.y = 0.25;
mesh.scale.z = 0.25;
mesh.castShadow = true;
scene.add( mesh );
animate();
});
loader.load( '/obj/stol.obj', '/obj/stol.mtl' );
クリックするとテクスチャの変更をトリガーするボタンをページにいくつか配置したいと思います。
$(function(){
$('#txt_01').click(function(){
mesh.textureLoad("/obj/txt_01.mtl");
}
});