2013-01-06 13 views
15

Próbuję zmienić kolor kostki na podstawie zmiennej. Stworzyłem dwie kostki i chcę zmienić ich kolor w zależności od odległości między nimi.Zmiana koloru kostki w three.js

Kostki są tworzone tak:

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

Teraz próbowałem coś takiego:

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

Ale to nie działa. Zajrzałem do przykładów, ale nie znalazłem niczego odpowiedniego.

Odpowiedz

50

Nie określasz poprawnie wartości koloru.

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

Można również skorzystać z całkowitą równowartość base-10 jako parametr dla setHex, jak dwa zrównać w JS. – andrewb

6
cube.material.color 

daje przedmiot THREE.Color:

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

który ma kilka metod, których można użyć, aby ustawić kolor.

+2

Konieczne jest posiadanie aktualnej metody w odpowiedzi w przypadku zgonu tego łącza. – andrewb

+0

Link umarł, prawidłową odpowiedzią jest color.set(), 'cube.material.color.set (color)' –

1

Moja sugestia to dołączenie funkcji do obiektu, a następnie można łatwo zmienić kolor obiektu podczas wykonywania.
podstawie kodu

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

Nie tworzyj nowego "Koloru". Użyj 'cube.material.color.set (color)'. – WestLangley