Анимировать (ходить) объекты клонирования GLTF из одной позиции в другую - PullRequest
0 голосов
/ 11 февраля 2019

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

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

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

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

1 Ответ

0 голосов
/ 11 февраля 2019

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

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/#api/en/math/Vector3.distanceTo

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

...