Анимировать (ходить) объекты клонирования GLTF из одной позиции в другую

Я работаю над проектом, в который импортировал гуманоида GLTF с анимацией. Я создаю клоны импортированной модели для отображения на сцене, а не создаю новую каждый раз.

У меня есть анимация ходьбы и холостого хода для загруженной модели. Как я могу оживить клонированных таким образом, чтобы казалось, что они идут от одного местоположения до другого. Например, если клонированная модель находится в положении (10, 20, 0) в момент времени = 1 с, и она будет в положении (13, 20, 0) в момент времени = 2 с, я бы хотел, чтобы это показалось, что модель идет между позициями. Я прочитал новую документацию по системе анимации и много искал, но это не помогло.

Спасибо за вашу помощь.

PS: я не могу поделиться кодом из проекта из-за ограничений.

1 ответ

Вы можете получить направление, вычитая оба вектора и затем нормализуя его.

let direction = new THREE.Vector3().subVectors(destination.position, object.position).normalize();

Затем в вашей функции рендеринга обновите положение объекта на каждом кадре в этом направлении. Значение переменной скорости зависит от вас (по умолчанию 1).

object.position.x += direction.x * speed;
object.position.y += direction.y * speed;
object.position.z += direction.z * speed;

Вам нужно логическое значение, как isMoving или расстояние между объектами, чтобы знать, когда начинать и останавливать.

object.position.distanceTo( destination.position );

https://threejs.org/docs/

Что касается анимации, я думаю, что вы просто хотите вызвать animation.play() при запуске и animation.stop(), когда доберетесь до места назначения.

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