2015-04-17 3 views
0

Я пытаюсь получить некоторые орбитальные объекты, чтобы оставить след. Для этого я создал систему частиц, которая состоит из трех геометрии, три PointCloud, и ТРИ PointCloudMaterial:THREE.js Частицы/PointCloud

particleMaterial = new THREE.PointCloudMaterial({ 
    color: 0xFFFFFF, size: 1, sizeAttenuation: false 
}); 
particles = new THREE.Geometry; 
particles.verticesNeedUpdate = true; 
particles.dynamic = true; 
particleSystem = new THREE.PointCloud(particles, particleMaterial); 
scene.add(particleSystem); 

Чтобы генерировать вершины для геометрии, чтобы сформировать след, я создаю их в живой петли и копирование позиции от объекта они, чтобы обеспечить путь для на тот момент времени:

function animate() { 
if (nodesArray.length > 0) { 
    for (var i = 0; i < nodesArray.length; i++) { 
     nodesArray[i].position.x = Math.sin(nodesArray[i].counterX) * 50; 
     nodesArray[i].position.z = Math.cos(nodesArray[i].counterZ) * 50; 
     nodesArray[i].position.y = Math.cos(nodesArray[i].counterY) * 50; 
     nodesArray[i].counterX += .01; 
     nodesArray[i].counterZ += .01; 
     nodesArray[i].counterY += .01; 

     var particle = new THREE.Vector3(); 
     particle.copy(nodesArray[i].position); 
     particles.vertices.push(particle); 
     particles.verticesNeedUpdate = true; 
    } 
} 

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

Вот jsfiddle: http://jsfiddle.net/jayfield1979/184kbyLr/

Первая вершина для каждого объекта добавляется в правильном положении , Но последующие вершины не зарегистрированы.

Я делаю это правильно, если да, то что сломано? Или есть лучший способ?

ответ