为什么网格颜色不会改变(使用three.js)?

时间:2015-11-30 18:04:02

标签: colors three.js mesh material

我使用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 );

正如您从代码中看到的,我尝试以两种方式创建材料。在两种情况下,颜色参数的颜色永不变化(它总是灰色)并不重要。除非我调整不透明度,否则它会变得更暗或更亮。我在这里错过了什么?

1 个答案:

答案 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})

让它发出颜色