Создать бесконечную анимацию в tween.js

Я создаю анимацию для сферы, движущейся по всем вершинам линии. У меня есть этот код:

var vertices = mesh.geometry.vertices;
var duration = 100;
// Iterate through each vertex in the line, starting at 1.
for (var i = 1, len = vertices.length; i < len; i++) {
 // Set the position of the sphere to the previous vertex.
    sphere.position.copy(vertices[i - 1]);
 // Create the tween from the current sphere position to the current vertex.
    new TWEEN.Tween(sphere.position).to(vertices[i], duration).delay(i * duration).start();

}

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

1 ответ

Решение

У меня был приватный чат с yavg, и работает следующее решение:

var vertices = mesh.geometry.vertices;
var duration = 10;

function startToEnd() {
  var i = 0;
  async.eachSeries(vertices, function(vertice, callback) {
    if (i !== 0) {
      sphere.position.copy(vertices[i - 1]);
      new TWEEN.Tween(sphere.position).to(vertices[i], duration).delay(duration).onComplete(function() {
        callback(null);
      }).start();
    } else {
      callback(null);
    }
    i++;
  }, startToEnd);
}
startToEnd();

Это будет Tween от начала вершины до конца вершины и повторять этот процесс бесконечно. Тем не менее, он использует библиотеку async, чтобы упростить реализацию Tweening от одного вертикаля к другому для меня.

Другие вопросы по тегам