Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 为什么网格的颜色不变(使用three.js)?_Colors_Three.js_Mesh - Fatal编程技术网

Colors 为什么网格的颜色不变(使用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

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

从代码中可以看出,我尝试用两种方法创建材质。无论我给颜色参数取什么值,在这两种情况下,颜色都不会改变,始终是灰色的。除非我调整不透明度,否则它当然会变暗或变亮。我错过了什么

更新声明之外的颜色后,设置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时,您帮助我发现错误并解决问题。