Я пытаюсь получить некоторые орбитальные объекты, чтобы оставить след. Для этого я создал систему частиц, которая состоит из трех геометрии, три 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/
Первая вершина для каждого объекта добавляется в правильном положении , Но последующие вершины не зарегистрированы.
Я делаю это правильно, если да, то что сломано? Или есть лучший способ?