我怎样才能更新 THREE.Sprite 颜色

Jar*_*red 1 sprite three.js

jsfiddle在这里

我创建了一个具有默认颜色的材质,在本例中为0xffffff

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

我是否需要为每个精灵创建新材质?有没有办法可以简单地更改 THREE.Sprite 的颜色?

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);
    }
Run Code Online (Sandbox Code Playgroud)

Jar*_*red 5

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

或者

particle.material.color.set(0x0066CC); Threejs:R.73

来自文档:http : //threejs.org/docs/#Reference/Math/Color

  • 你真的要创建一个新对象吗?为什么不是`material.color.set(0xff0000)`? (2认同)