41

我正在尝试根据变量更改立方体的颜色。我创建了两个立方体,我想根据它们之间的距离改变它们的颜色。

立方体是这样创建的:

geometry = new THREE.CubeGeometry( 50, 50, 50 );
material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
cube = new THREE.Mesh( geometry, material );
scene.add( cube );

现在我尝试了这样的事情:

if(distance > 20)
{
cube.material.color = 0xffffff;
}

但它不起作用。我查看了示例,但找不到任何合适的内容。

4

4 回答 4

79

您没有正确指定颜色值。

cube.material.color.setHex( 0xffffff );
于 2013-01-06T14:11:11.010 回答
15
cube.material.color 

将为您提供 THREE.Color 对象:

颜色

它有很多方法可以用来设置颜色。

于 2015-03-11T23:48:54.193 回答
7

我的建议是将函数附加到您的对象,然后您可以在运行时轻松更改对象的颜色。
根据您的代码

geometry = new THREE.CubeGeometry( 50, 50, 50 );
material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
cube = new THREE.Mesh( geometry, material );

//here is the funcion defined and attached to the  object
cube.setColor = function(color){
     cube.material.color.set(color);
}


cube.setColor(0xFFFFFF)  //change color using hex value or
cube.setColor("blue")    //set material color by using color name

scene.add( cube );
于 2016-04-21T14:09:37.593 回答
0

在材料部分,您可以提供一个十六进制颜色值像这样 meshMaterial = new THREE.MeshBasicMaterial({color:0xfffff}) 在下面的代码中,十六进制值(0xffffff)是白色的

于 2021-12-07T13:53:38.110 回答