我使用three.js来创建一些对象:
// it probably does not matter where geom1 or geom2 comes from
var materials = [
new THREE.MeshLambertMaterial( { opacity: 0.2, color: 0x000000, transparent:false, side: THREE.DoubleSide } ),
new THREE.MeshBasicMaterial( { color: 0x445555, wireframe: true } )
];
mesh2 = THREE.SceneUtils.createMultiMaterialObject(geom2,materials);
var material = new THREE.MeshBasicMaterial( {color: 0xEEEEEB, transparent:false, side: THREE.DoubleSide } );
mesh1 = new THREE.Mesh(geom1,material);
mesh1.material.color.setHex( 0xEEEEEB );
正如您从代码中看到的,我尝试以两种方式创建材料。在两种情况下,颜色参数的颜色永不变化(它总是灰色)并不重要。除非我调整不透明度,否则它会变得更暗或更亮。我在这里错过了什么?
答案 0 :(得分:-1)
在声明之外更新颜色后,设置needsUpdate参数
material.needsUpdate = true;
自
new THREE.MeshLambertMaterial( { color: 0x33cc33, side: THREE.DoubleSide } )
显示为灰色/灰色阴影,您可能在场景中没有任何灯光,只需添加一次尝试
scene.add(new THREE.AmbientLight(0xffffff))
或设置LambertMaterial的发光颜色
new THREE.MeshLambertMaterial({color: 0x33cc33, side: THREE.DoubleSide, emissive: 0x33cc33})
让它发出颜色