J'essaie de changer la couleur d'un cube en fonction d'une variable. J'ai créé deux cubes et je veux changer leur couleur en fonction de la distance entre eux.
Les cubes sont créés comme ceci:
geometry = new THREE.CubeGeometry( 50, 50, 50 );
material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
cube = new THREE.Mesh( geometry, material );
scene.add( cube );
Maintenant, j'ai essayé quelque chose comme ça:
if(distance > 20)
{
cube.material.color = 0xffffff;
}
Mais ça ne marche pas. J'ai regardé dans les exemples mais je n'ai rien trouvé de approprié.
Vous ne spécifiez pas la valeur de couleur correctement.
cube.material.color.setHex( 0xffffff );
cube.material.color
vous donnera l'objet THREE.Color:
qui a un tas de méthodes que vous pouvez utiliser pour définir la couleur.
Ma suggestion est d'attacher une fonction à votre objet et vous pouvez ensuite changer facilement la couleur de l'objet pendant l'exécution.
Basé sur votre code
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 );