2017-05-09 171 views
0

我试图简单地将three.js中的一个立方体的颜色更改为随机颜色,我已经搜索并引用了Changing color of cube in three.js,但是即使控制台输出正确并且设置了正确的值,但我的代码仍未能更改立方体的颜色彩色手动例如(cube.material.color.setRGB(100,0,0);)作品!我究竟做错了什么?改变three.js,三个js特质的颜色?

var r = 1; 
var g = 1; 
var b = 1; 

var scene = new THREE.Scene(); 
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 
var renderer = new THREE.WebGLRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 
document.body.appendChild(renderer.domElement); 

var geometry = new THREE.CubeGeometry(1,1,1); 
var material = new THREE.MeshPhongMaterial(); 
var cube = new THREE.Mesh(geometry, material); 

scene.add(cube); 

var directionalLight = new THREE.DirectionalLight('white', 1); 
directionalLight.position.set(1, 0, 1); 
scene.add(directionalLight); 

camera.position.z = 5; 

r = Math.round(Math.random() * (255 - 0) + 0); 
g = Math.round(Math.random() * (255 - 0) + 0); 
b = Math.round(Math.random() * (255 - 0) + 0); 


/* issue, the below console output is correct however the colour is not set. Setting the colour values manually works!! */ 

console.log(r,g,b); 
cube.material.color.setRGB(r,g,b); 

function render() { 

    requestAnimationFrame(render); 
    renderer.render(scene, camera); 

    cube.rotation.x += 0.01; 
    cube.rotation.y += 0.01; 
    //cube.position.z += 0.01; 



} 
render(); 

回答

2

当使用0和1之间

color.setRGB(Math.random(), Math.random(), Math.random()); 
setRGB(r, g, b)方法, rg,和 b取值参见 http://threejs.org/docs/#api/math/Color设置 THREE.Color

three.js r.85

+0

欢迎来到SO。请记住点击复选标记以“接受”答案。谢谢。 – WestLangley