Анимировать (ходить) объекты клонирования 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 );
Что касается анимации, я думаю, что вы просто хотите вызвать animation.play() при запуске и animation.stop(), когда доберетесь до места назначения.