【发布时间】:2016-03-04 11:14:51
【问题描述】:
我正在使用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 );
从代码中可以看出,我尝试以两种方式创建材料。在这两种情况下,我给颜色参数赋予什么值都没有关系,颜色永远不会改变(它总是灰色)。除非我调整不透明度,否则它当然会变得更暗或更亮。我在这里想念什么?
【问题讨论】:
-
color 0xEEEEEB 是灰色.. 十六进制是红色,绿色,蓝色 0xRRGGBB 所以 0xff0000 是红色,
mesh1 = new THREE.Mesh(geom1,m);- m 是未定义的,如果你在创建后更改材质的颜色设置material.needsUpdate = true -
哦,那个米。我忘了把它的名字改成材料。
mesh1.material.needsUpdate = true工作!再次感谢@Derte Trdelnik:)。但仍然:为什么即使在我的 MeshLamberMaterial 对象上放置 '0x33cc33' 而不是 '0x000000' 后,mesh2 仍然是灰色的,而当我将颜色更改为 '0x33cc33' 行'new THREE.MeshBasicMaterial({颜色:0x445555,线框:真} )' 它改变了。