【发布时间】:2013-08-08 19:23:55
【问题描述】:
如何动态更改 .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");
}
});
【问题讨论】:
-
我在找一个提示未准备好的代码,真的no1可以帮助我吗?
-
你能和我分享一下准备好的代码@Artur Fidelus吗?