Javascript 如何在THREE.js中的粒子系统中沿其轴旋转每个粒子?

Javascript 如何在THREE.js中的粒子系统中沿其轴旋转每个粒子?,javascript,three.js,Javascript,Three.js,我正在制作一个太空场景,其中我使用一个粒子系统来制作一组小行星, 我想旋转每个小行星的轴。我使用下面的代码来创建粒子系统 var asteroidGeometry = new THREE.Geometry(); for(var i=0;i<=10000;i++) { asteroidGeometry.vertices.push( new THREE.Vector3( Math.random()*10000-5000, Math.random()*10000-5000, Math.

我正在制作一个太空场景,其中我使用一个粒子系统来制作一组小行星, 我想旋转每个小行星的轴。我使用下面的代码来创建粒子系统

var asteroidGeometry = new THREE.Geometry();
for(var i=0;i<=10000;i++)
{
    asteroidGeometry.vertices.push( new THREE.Vector3( Math.random()*10000-5000,  Math.random()*10000-5000, Math.random()*10000-5000 ) );

}
var asteroidtexture= THREE.ImageUtils.loadTexture("images/asteroids.png");
var asteroidMaterial = new THREE.ParticleBasicMaterial({color: 'white',size:500,map:asteroidtexture,alphaTest: 0.8});
asteroids = new THREE.ParticleSystem(asteroidGeometry,astroidMaterial);

scene.add(asteroids);

然后这将使整个系统旋转。是否可以在其on轴上旋转每个粒子?

三个
中的单个顶点。几何体
实例可通过其
顶点
阵列访问

我找到了一个解释如何在粒子系统中独立设置粒子动画的工具。下面是
更新
动画循环的相关部分,有一些小的修改

function update() {

    var pCount = particleCount;
    while (pCount--) {

        var particle = particles.vertices[pCount];

        if (particle.position.y < -200) {
            particle.position.y = 200;
            particle.velocity.y = 0;
        }

        particle.velocity.y -= Math.random() * .1;

        particle.position.addSelf(particle.velocity);
    }

    particleSystem.geometry.__dirtyVertices = true;
    renderer.render(scene, camera);
    requestAnimFrame(update);
}
函数更新(){
var pCount=粒子计数;
while(pCount--){
var particle=粒子。顶点[pCount];
if(粒子位置y<-200){
粒子位置y=200;
粒子速度y=0;
}
particle.velocity.y-=Math.random()*.1;
粒子。位置。addSelf(粒子。速度);
}
particleSystem.geometry.\uuu dirty顶点=真;
渲染器。渲染(场景、摄影机);
请求帧(更新);
}

你能设置一个JSFIDLE来重现你的问题吗?我的问题是我想访问粒子系统的每个粒子。可能吗?我对Three.js不太熟悉这就是我不确定的原因。非常感谢。。这肯定会帮助我的!
function update() {

    var pCount = particleCount;
    while (pCount--) {

        var particle = particles.vertices[pCount];

        if (particle.position.y < -200) {
            particle.position.y = 200;
            particle.velocity.y = 0;
        }

        particle.velocity.y -= Math.random() * .1;

        particle.position.addSelf(particle.velocity);
    }

    particleSystem.geometry.__dirtyVertices = true;
    renderer.render(scene, camera);
    requestAnimFrame(update);
}