Javascript THREE.js在加载时更改纹理
我们正在加载在Blender中创建的对象,我们希望更改纹理,而不必更改加载对象时引用的.mtl文件Javascript THREE.js在加载时更改纹理,javascript,three.js,textures,Javascript,Three.js,Textures,我们正在加载在Blender中创建的对象,我们希望更改纹理,而不必更改加载对象时引用的.mtl文件 //load in all pieces var board = this; var loadComplete = 0; this.loader.load('myobj1.obj', 'myobj1.mtl', function (object){ board.obj2 = object; board.loader.load('myobj2.obj', 'myobj2.mtl',
//load in all pieces
var board = this;
var loadComplete = 0;
this.loader.load('myobj1.obj', 'myobj1.mtl', function (object){
board.obj2 = object;
board.loader.load('myobj2.obj', 'myobj2.mtl', function(object){
board.obj2 = object;
board.obj2.material = new THREE.ImageUtils.loadTexture( 'Models/textures/blackmarble1.jpg' );
board.loader.load('myobj3.obj', 'myobj3.mtl', function(object){
board.obj3 = object;
});
});
});
所以在这张卡片中,我们试图改变obj2的纹理。但是,它只加载mtl中的任何内容。这是我们在某些场景中需要的,但在其他场景中不需要
同样,尝试这些方法也不会产生任何效果:
var blackTex = THREE.ImageUtils.loadTexture('Models/textures/blackmarble1.jpg');
obj2.material = new THREE.MeshLambertMaterial({ map: blackTex});
obj2.material.uniforms.texture = blackTex;
我明白了。加载程序对网格进行子对象化
piece.children[0].children[0].material = new THREE.MeshLambertMaterial({ map: blackTex});