Как анимировать модель, которая имеет все анимации в одном действии?

#three.js

#three.js

Вопрос:

У меня есть старые анимированные модели, в которых анимация ключевого кадра означает, что все анимации (бездействие, прогулка, атака) находятся в одном действии. Я попытался разделить это на несколько действий в Blender, но я не могу заставить это работать (я не 3D-дизайнер). Итак, мой вопрос заключается в том, как использовать новую систему анимации для воспроизведения только части действия (например, от ключевого кадра 25 до 50), а затем плавно переключаться на следующую анимацию (от ключевого кадра 50 до 75).

У меня есть что-то вроде этого для начала:

 MONSTER_ANIMATION_ALL = monster.animations[0];
action = mixer.clipAction(MONSTER_ANIMATION_ALL);
action.enabled = true;
action.setEffectiveTimeScale( 1 );
action.setEffectiveWeight( 1);
action.time = 0;
action.play();
  

Ответ №1:

На самом деле вы можете разделить один анимационный клип на несколько с помощью AnimationUtils.subclip(). Из документации:

Создает новый клип, содержащий только сегмент исходного клипа между заданными кадрами.

Итак, единственное, что вам нужно знать, это начальный и конечный кадры для каждой анимации. Когда у вас есть анимационный клип на анимацию, можно выполнять плавные переходы, используя интерфейс AnimationAction. Значение fadeIn / fadeOut или crossfade.

Комментарии:

1. Это идеально! Именно то, что мне было нужно. Спасибо!