在three.js中改变立方体的颜色

Posted

技术标签:

【中文标题】在three.js中改变立方体的颜色【英文标题】:Changing color of cube in three.js 【发布时间】:2012-12-20 08:05:26 【问题描述】:

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

立方体是这样创建的:

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;

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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 );

【讨论】:

不要实例化新的Color。使用cube.material.color.set( color )【参考方案3】:
cube.material.color 

将为您提供 THREE.Color 对象:

Color

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

【讨论】:

需要在答案中有实际的方法,以防链接失效。 链接失效,正确答案是 color.set(), 'cube.material.color.set(color)'【参考方案4】:

您没有正确指定颜色值。

cube.material.color.setHex( 0xffffff );

【讨论】:

你也可以使用 base-10 整数等值作为 setHex 的参数,就像 JS 中的两个等值一样。

以上是关于在three.js中改变立方体的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Three.js 更改立方体的颜色

Three.js之根据顶点信息绘制立方体并给面设置颜色

Three.js png 纹理 - alpha 呈现为白色而不是透明

在运行时更改使用 Three.js 创建的 3D Cube 的宽度/高度/长度

Three.js 在 100 个立方体动画上崩溃

如何用Three.js改变CubeGeometry的宽度?