Симуляция груди в Unreal Engine: то, о чём вы не просили, но явно заслужили)
Сразу скажу: это дешёвый по производительности метод и не всегда самый лучший.
мой тг канал про анимацию итд
Итак, перейдём в ABP нашего персонажа.
Animation Blueprint — это блюпринт, который управляет анимацией персонажа в реальном времени, то есть в игре — здесь мы задаём условия, по которым проигрывается наша анимация.
Закинем для теста анимацию из Asset Browser. Важно: анимация не будет работать, если её не подключить в Output Pose.
Вызовем Spring Controller.
Левой кнопкой мыши по ноде и выбираем кость груди (для каждой груди нужно будет создать по своей ноде Spring Controller).
Spring Bone — какую кость двигает (в нашем случае ) chest_r).
Max Displacement — максимальное смещение кости от исходной позиции (ограничивает амплитуду, чтобы не “улетала”).
Spring Stiffness — жесткость пружины: чем больше, тем сильнее и быстрее кость стремится вернуться в целевое положение (более “упруго”).
Spring Damping — затухание: чем больше, тем меньше раскачка/колебания и быстрее стабилизация (более “вязко”).
Limit Displacement — включает/выключает кламп смещения по Max Displacement (если включено — смещение жёстко ограничено).
Ставим Translate — ротейты не работают) важно понимать, что эта нода работает только по транслейтам. И самое главное: вы можете сразу в ABP увидеть, как работает динамика.
Теперь настраиваем Damping и Stiffness, чтобы не было вот так (тут видео).
Мои настройки — вы можете заметить, что я уменьшил значение Alpha до 0.3, так как в игре были баги в виде дрожания грудей, если регулировать только Stiffness и Damping.
Усе, наши груди готовы)
Дочитали до сюда ? вот вам небольшое видео для отдыха какой референс я использовал под эту анимацию
Теперь сделаем хвост, для этого потребуется: вызвать ноду AnimDynamics — это процедурная симуляция вторички прямо в AnimGraph.
Simulation Space — в каком пространстве считать симуляцию.
Bound Bone — тут указываем нашу стартовую кость хвоста. Chain End — указываем последнюю кость хвоста.
Gravity Scale — множитель гравитации для симуляции- на сколько наш хвост будет опускатся под гравитацией - у меня стоит 3.
Num Solver Iterations Pre Update
Больше итераций → стабильнее, меньше дрожи, лучше держит ограничения. Но дороже по производительности.
Num Solver Iterations Post Update Сколько итераций после апдейта (дополнительная стабилизация).
В общем, параметры отвечающие на то, насколько симуляция дрожит или нет.
Вот результат
Вы можете заметить что анимация хвоста работает относительно анимации персонажа - и не реагирует на повороты персонажа в пространстве с помощью кода
Чтобы хвост реагировал не только на анимацию но и смещение самого персонажа в пространстве нужно поставить в Simulate Space World