2013-01-06 98 views
15

我試圖根據變量更改立方體的顏色。我創建了兩個立方體,我想根據它們之間的距離來改變它們的顏色。在three.js中更改立方體的顏色

立方體創建這樣的:

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

但它不工作。我看了一些例子,但找不到合適的東西。

回答

50

您沒有正確指定顏色值。

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

您還可以使用基10的整數相當於爲setHex參數
,因爲這兩個等同的JS。 – andrewb

6
cube.material.color 

會給你THREE.Color對象:

http://threejs.org/docs/#Reference/Math/Color

其中有一堆你可以用它來設置顏色的方法。

+2

在鏈接死亡的情況下,需要在答案中使用實際方法。 – andrewb

+0

鏈接死了,正確的答案是color.set(),'cube.material.color.set(color)' –

1

我的建議是給你的對象附加一個函數,然後你可以很容易地在運行時改變對象的顏色。基於您的代碼

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 = new THREE.Color(color); 
} 


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

scene.add(cube); 
+1

不要實例化一個新的'Color'。使用'cube.material.color.set(color)'。 – WestLangley