r65
你好,
我需要在运行时从简单材质切换到多重材质。但是无法实现。也许我遗漏了一些明显的东西?
我的测试代码如下(jsfiddle: http://jsfiddle.net/plotnik/8RtTy/3/)。对象最初被分配一个简单材质,多重材质在render()调用后被分配以模拟运行时替换。
var geom = new THREE.CubeGeometry(1, 1, 1);
var materialSimple = new THREE.MeshLambertMaterial({color: 0x020202});
// 6-color
var materialMulti = new THREE.MeshFaceMaterial([
new THREE.MeshLambertMaterial( { color: 0xff0000 }),
new THREE.MeshLambertMaterial( { color: 0xffff00 }),
new THREE.MeshLambertMaterial( { color: 0xffffff }),
new THREE.MeshLambertMaterial( { color: 0x00ffff }),
new THREE.MeshLambertMaterial( { color: 0x0000ff }),
new THREE.MeshLambertMaterial( { color: 0x000000 })
]);
var mesh = new THREE.Mesh(geom, materialSimple);
scene.add(mesh);
var render = function () {
requestAnimationFrame(render);
mesh.rotation.x += 0.01;
mesh.rotation.y += 0.01;
renderer.render(scene, camera);
};
render();
// switch to multi-material
mesh.material = materialMulti;
mesh.material.needsUpdate = true;
代码运行结果未达到我预期的效果。看起来仅仅是将materialMulti[0](红色)赋值给整个网格。感谢您的帮助。