2014-08-28 131 views
1

jsfiddle here我怎么可以更新THREE.Sprite颜色

我创建了一个材料用默认颜色,在这种情况下0xffffff

然后,我想改变颜色。我不知道在哪里改变它 - particle.color = 0xffffff * Math.random();不起作用。没有particle.color,但有一个particle.material.color,如果我改变给我一个错误。

我是否需要为每个精灵创建新材质?有没有一种方法可以简单地改变THREE.Sprite的颜色?从文档R.73

var material = new THREE.SpriteCanvasMaterial({ 
     color: 0xffffff, 
     program: function (context) { 
      context.beginPath(); 
      context.arc(0, 0, 0.5, 0, PI2, true); 
      context.fill(); 
     } 
    }); 

    for (var i = 0; i < 50; i++) { 

     particle = new THREE.Sprite(material); 
     particle.position.x = Math.random() * 2 - 1; 
     particle.position.y = Math.random() * 2 - 1; 
     particle.position.z = Math.random() * 2 - 1; 
     particle.position.normalize(); 
     particle.position.multiplyScalar(Math.random() * 10 + 450); 
     particle.scale.x = particle.scale.y = 20; 
     particle.color = 0xffffff * Math.random(); 
     scene.add(particle); 
    } 
+1

参考three.js所示例:HTTP:// threejs。组织/例子/ canvas_particles_random.html – WestLangley 2014-08-28 21:55:16

+0

谢谢,他们创建随机颜色。尽管在仔细观察物体之后我发现了它。感谢您的建议! – Jared 2014-08-29 16:40:28

回答

2

particle.material.color = new THREE.Color(0x0066CC);

particle.material.color.set(0x0066CC); Threejs http://threejs.org/docs/#Reference/Math/Color

+2

你真的想创建一个新的对象吗?为什么不'material.color.set(0xff0000)'? – WestLangley 2014-08-29 16:43:09

+0

@WestLangley是不是color.setHex(0xff0000)? – vals 2014-08-29 18:42:36

+0

@vals我的建议无效吗? – WestLangley 2014-08-29 19:00:26