Colors 为什么网格的颜色不变(使用three.js)?
我正在使用three.js创建一些对象:Colors 为什么网格的颜色不变(使用three.js)?,colors,three.js,mesh,Colors,Three.js,Mesh,我正在使用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.Mes
// 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 );
从代码中可以看出,我尝试用两种方法创建材质。无论我给颜色参数取什么值,在这两种情况下,颜色都不会改变,始终是灰色的。除非我调整不透明度,否则它当然会变暗或变亮。我错过了什么 更新声明之外的颜色后,设置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})
为使其发出颜色颜色0xEEEB为灰色。。十六进制为红色、绿色、蓝色0xRRGGBB,因此0xff0000为红色,mesh1=新的三个。Meshgeom1,m;-m是未定义的,如果在创建材质后更改材质的颜色,请设置material.needsUpdate=trueOh,即m。我忘了把它的名字改成material。mesh1.MATERY.needsUpdate=实际加工!再次感谢@Derte Trdelnik:。但仍然:为什么即使我在我的MeshLamberMaterial对象上用“0x33cc33”而不是“0x000000”后,mesh2仍然是灰色的,而当我在“新三点”行中将颜色更改为“0x33cc33”。MeshBasicMaterial{颜色:0x44555,线框:true}时,它会更改。奇怪的事情。1我有聚光灯和环境光,向Meshlambert材质添加emissive:0x33cc33不会改变任何东西。2当我将MeshLambertMaterial更改为BasicMeshMaterial时,您帮助我发现错误并解决问题。