Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine
Это короткая выжимка из моей лекции для аниматоров ,геймдизайнеров ид во общем всех людей которые только начали работать в Unreal
Цель рассказать как можно ломать анимацию в Unreal
Разберём на примере Unreal Engine такие системы, как:
Motion Warping, Look At, IK, Motion Matching, Additive Layers, Locomotor, процедурные походки, Physical Animation , Stride Warping— и посмотрим, как всё это влияет на анимацию
Ссылка на телеграмм про анимацию и unreal
Motion Warping :
Motion Warping это когда UE во время проигрывания root motion animation чуть “пересчитывает” движение root, чтобы персонаж точно попал в нужную точку/поворот.
Root Motion это когда движение персонажа берется из самой анимации, из движения root bone, а не двигается кодом.
In-Place Animation. персонаж “бежит на месте”, а по миру его двигает код
Пример: есть анимация удара вперед на 2 метра, а враг стоит на 2,4 м.
Без Motion Warping персонаж не достанет до цели.
С Motion Warping движок сжимает, растягивает или поворачивает Root Motion так, чтобы в конце нужного участка анимации персонаж оказался у цели.
Типичные применения:
- достать ударом до врага;
- синхронизовать персонажа и препятствие при перелезании персонажа через объект ;
- синхронизация одного персонажа с другим с врагом.
одна и та же анимация для препятствий разной высоты
дотягивание персонажа до цели
Самое удобное :
Мы можем изменять анимацию только в конкретном участке времени
Лучше всего применять в прыжке или на резких ударах и давать достаточно времени на отработку.
Главная идея:анимация остаётся той же, но её Root анимация адаптируется под конкретную цель в мире.
И что это нам даёт?Уменьшение количества анимаций.
Важно: всё это работает с Root Motion-анимацией, и это отдельный плагин, который нужно включать.
Материалы :
Документация от эпиков Motion Warping
Моя статья на DTF
Contextual Animation and Motion warp обзор
Что такое Root Motion от epic games
Статья на DTF Анимация в Unreal: шпаргалка для новичков :
Contextual Animation
это система в Unreal Engine для синхронной анимации персонажей и объектов в конкретной ситуации - работает в связки с motion warp
Physical Animation\ Physics Control ( более новая версия )
Physical Animation :
это подход, где ты смешиваешь анимацию с симуляцией физики (через Physics Asset), чтобы получить “живые” реакции: частичный/полный ragdoll, отдача от ударов, болтающиеся конечности, физические реакции на столкновения
Щупальца и челюсть на Physical Animation
Мы можем вешать физику на определенные части тела в определенный момент времени и менять параметры в зависимости от разных событий.
Используют для:
- персонажа ударили — корпус/голова/рука физически реагирует;
- враг врезался в стену/объект, и тело реалистично сгибается;
- руки, хвост, шея, щупальца реагируют на столкновения;
- анимации рук, хвоста, щупалец.
Примеры : Physical Animation
Вся анимация это физика (physical Animation) , персонажа двигаем кодом
Груди и хвост physical Animation
примеры : PhysicsControl
Анимация получения урона с помощью физики
Анимация получения урона с помощью физики
Смешивание анимации перемещений с физикой от столкновения с предметами
Анимация управления авто + сверху физика
Ragdoll
Поведение персонажа по физики - как правило персонаж превращает в тряпичную куклу
Используют для:
- смерти персонажа — тело падает по физике, а не по анимации;
- падений, полётов и нокаутов + вставания по обычной анимации
- персонаж теряет контроль и валится по физике;
- hit reactions — при сильном ударе часть тела временно уходит в физику: рука, корпус, голова.
Ragdoll Get UP
Вставание персонажа через анимацию из позы в которую упал персонаж с помощью Rag
Пример с ютуб канала LocoDev
Как примерно работает :
- Персонаж падает в ragdoll.
- Ждем, пока тело остановится.
- Берём pelvis/root как позицию тела.
- Находим землю под телом через Line Trace.
- Переносим capsule к ragdoll-телу.
- Определяем, как лежит персонаж: на спине или на животе.
- Сохраняем текущую ragdoll-позу через Pose Snapshot.
- Выключаем физику и блендим ( blend) в get-up-анимацию.
Blend анимаций это плавное смешивание одной анимации с другой.
Также ничего не мешает комбинировать Ragdolls и Physical Animations. = Active Ragdoll
Active Ragdoll это ragdoll, который не просто пассивно падает, а пытается удерживать или возвращать тело в нужную анимационную позу.
Основные принципы:
- Анимация остаётся базой Персонаж продолжает играть нужную позу/анимацию.
- Физика включается на всё тело или части тела Например: корпус, руки, голова, ноги.
- Физика тянется к анимации Через Physical Animation / Physics Control тело не разваливается полностью, а стремится вернуться к позе.
Важно для Physical Animation и Ragdoll нужен настроенный Physical Asset
Physics Asset это физическая “обвязка” для Skeletal Mesh.
Skeletal Mesh в это 3D-модель, привязанная к иерархии костей, благодаря которой модель можно деформировать и анимировать.
В нем задаются:
- физические тела( Physics Bodie) на костях: капсулы, сферы, боксы;
- лимиты вращения для костей ( через Constraint )
- Могут ли физические тела двигатся по транслейтам или нет
Physics Bodies физические формы на костях, через которые скелет взаимодействует с физикой.
Материалы
Physics Asset Editor
Моя статья на Dtf по настройке Physics Asset и применению Physical Animation для вторичных объектов
UE5 Ragdoll Physics Tutorial: Active Ragdoll, Stand Up & Moving Platforms (Complete Guide) от канала LocoDev
Вот тут как раз падение персонажа и потом его вставание
Видео урок выше - в виде текстового гайда
Рекомендую посмотреть проект от Epic Games Content Examples там карту Physical Animation + другие)
Look At
Look At поворачивает кость или объект так, чтобы выбранная ось была направлена на заданную цель.
Например, можно заставить голову персонажа, глаза или оружие следить за точкой в мире.
Можно реализовать как через Control Rig , так и через ноду Look At в аним графе и не только)
Использование look at для поворота головы
Использование look at для поворота тела
Использование look at для доворота удара в нужную сторону
Материалы
Look AT
Статья на Dtf : Look AT в unreal на control rig
Урок по Look AT от канала Gorka Games
IK
Способов применения много, рассмотрим несколько из них.
Короткая заметка по IK-нодам в Animation Blueprint
Animation Blueprint
Это система в Unreal Engine, которая управляет анимацией персонажа в реальном времени.
В нем настраивают:
- какую анимацию играть;
- как смешивать idle/walk/run;
- когда включать IK, Aim Offset, Additive-анимации;
- как реагировать на скорость, направление, прыжки, удары и другие игровые события.
Two Bone IKДелает IK для рук или ног ( в основном для рук)
CCDIK IK для много костной цепи с возможностью ставить ограничения по вращениям на кости.
Control Rig Риг персонажа внутри Unreal.
С его помощью можно:
- делать IK/FK;
- настраивать foot IK;
- делать процедурную анимацию;
- анимировать персонажа прямо в Sequencer.
Leg IK
финальный IK-корректор ног, который прикрепляет стопы к IK foot bone
Foot Placementрассчитывает контакт стопы с поверхностью, фиксацию стопы и коррекцию положения ноги/таза ( работает в паре с прошлой Leg IK )
Stride Warping
Отвечает за процедурную подгонку длины шага под скорость движения персонажа.
Full Body IK в Control Rig Это IK-солвер, который двигает не одну руку/ногу, а распределяет движение по всему телу.
Обычные кости и IK кости
Обычные кости это кости, на которых есть анимации которые и деформируют меш.
IK-кости
IK-кости используют как вспомогательные цели/ориентиры, куда должны подтягиваться обычные кости через ик . В базовой анимации они повторяют т движение обычных костей
как видите ik кость имеет ту же анимацию что и обычная
Материалы
Full Body IK
Two Bones IK
CCDIK
Control Rig in Animation Blueprint
Подгонка ног к разным высотам (Foot Placement)
Делается или через Control Rig, или через ноду Foot Placement + Leg IK в AnimGraph. Конечно, есть и другие способы.
Примеры:
Cut Scene без IK
Cut Scene с IK
Подгонка ног под поверхность при ударе
Пример на коте , хвост Physical animation
Чутка теории
Line Trace для foot IK:по X/Y позицию берём от стопы, а по Z от root кости , чтобы trace не прыгал вместе с анимацией ноги.
Start = Foot X/Y + Root Z + 50
End = Foot X/Y + Root Z - 30/50
И пускаем луч вверх и вниз - от позиции стопы
Так мы стабильно ищем поверхность именно под стопой, но высоту луча считаем от root, а не от анимированной ноги.
Материалы
Статья на DTF, где я разбираю, как работает эпиковский сетап:
Урок по использованию foot placement + IK leg
Урок по использованию foot placement + IK leg , но длиннее
Two Bone IK
Можно использовать для процедурной подгонка позы под оружие, которое держит персонаж
IK позволяет переиспользовать одну базовую анимацию под разные условия.
Например, одну анимацию удержания оружия можно адаптировать под разные типы оружия: винтовку, пистолет, дробовик или предметы другого размера.
А во время анимации перезарядки оружия можно выключать IK я называю это «дёшево и сердито».
Конечно, хорошо это будет работать в ситуации, когда у вас, скажем, есть двуручное оружие одной формы, и вы меняете его на двуручное оружие немного другой формы.
Пример по настройки ноды Two bones IK
Важный момент:
мы можем включать и выключать IK-сетап в любой момент в любой анимации, используя альфа-канал.
Пример: в анимации я сделал кривую, по которой IK включается и выключается.
Через кривую я контролирую когда включать и выключать IK
Делается это через Alpha канал в ноде
Материалы
Урок от YouTube-канала HUMBLE:
Процедурное изменение анимации
Также IK используют для точной подгонки персонажа к интерактивным объектам.
Например, с помощью Two Bone IK\ CCDIK. можно сделать так, чтобы рука персонажа точно попадала на дверную ручку, рычаг, оружие или другой предмет, даже если объект находится чуть выше, ниже или сбоку от исходной анимации.
IK также помогает адаптировать действия под смещение цели: персонаж может дотягиваться до объекта, корректировать положение кисти или менять высоту удара рукой в зависимости от того, где находится цель. То есть одна базовая анимация становится более гибкой и лучше подходит под разные ситуации в игре.
Для этих примеров я использовал ноду CCDIK.
Еще один способ применять IK
Материалы
Подстройка анимации к цели Control rig
Подстройка анимации к цели Animation Blueprint
Hand IK for Car Doors & Steering
Также можно подгонять ноги под скорость движения с помощью ноды Stride Warping
Статья на DTF по Stride Warping
Locomotor
Экспериментальный плагин/нода для процедурной локомоции прямо в Control Rig: генерирует шаги/переступания и движение персонажа.
Настраивается через Control Rig.
Гипотетически можно использовать для передвижений разных монстров.
Вот мой пример, однако я собирал его без плагина, на основе курсов от Lincoln Margison.
По функционалу плагин даёт примерно то же самое.
Материалы
"Step by Step" Procedural Animation для тех, кто хочет собрать всё с нуля. От Lincoln Margison.
Моя статья про locomotor
Статья от Epic games про Locomotor
Подытожим
- Подгонять ноги под разную высоту поверхности: ступеньки, склон, неровная земля, камни.
- Адаптировать одну анимацию под разные условия: разный рост персонажей, разная высота объектов, разные позы относительно окружения.
- Удерживать контакт: стопа не скользит по земле, рука не отрывается от оружия/объекта.
- Наводить части тела на цель: голова смотрит на игрока, глаза/грудь/оружие направлены на цель.
- Включать и выключать IK, когда нам это нужно.
Additive-анимации
Аддитивные анимации применяются, когда нужно добавить движение поверх основной анимации, не заменяя ее полностью.
Когда используют
- Отдача от оружия Основная анимация остаётся, но сверху добавляется отдача плеч, рук или корпуса.
- Hit Reaction Персонаж продолжает движение, но поверх добавляется короткая реакция на попадание. Additional Example01
- Дыхание / idle-движение На базовую позу накладывается лёгкое движение груди, плеч, головы.
- Коррекция позы Например, немного наклонить корпус, голову или плечи поверх locomotion.
Мы можем как накладывать анимацию поверх , так и позу
Часто так делают Lean-анимации это когда персонаж идёт или бежит с наклоном корпуса и Slope animation это подгонка позы персонажа под уклон поверхности.
Использование для Lean Animation
Важно: аддитивные анимации лучше делать из той же позы, на которую будешь накладывать анимацию
Для обычного наложения аддитивной анимации поверх основной часто используют Local Space.Если нужно, чтобы поворот применялся стабильно относительно всего персонажа, например для Aim Offset, лучше использовать Mesh Space.
Local Space — смещение считается относительно локального пространства каждой кости.Подходит для дыхания, hit reaction, отдачи
Mesh Space — смещение считается относительно всего Skeletal mesh.Подходит для Aim Offset и ситуаций, где поворот должен работать одинаково, даже если персонаж наклонен
Материалы
How to Make Additive Animations in Unreal Engine 5 от канала Gorka Games.
UE5 | Advanced Horse IK System | Tutorial тут и про ик и про использование аддитивных поз для наклона лошади под поверхность
Layered Blend per Bone
Нода, которая позволяет смешивать разные анимации по костям тела.
Например:
низ тела = бег;верх тела = перезарядка оружия, удар мечом, hit reaction, стрельба из лука.
Итог:
персонаж бежит ногами, а верх тела играет нужную нам анимацию.
Используют для:
- перезарядки только верхом тела;
- удара рукой поверх locomotion;
- кидания гранаты только верхом тела.
Если Additive подмешивает анимацию к существующей, то такой подход заменяет собой существующую анимацию по тем костям, которые вы укажете.
Материалы
Blend Nodes - рекомендую почитать
Aim Offset
Персонаж идёт или стоит, а верх тела дополнительно поворачивается вверх, вниз, влево, вправо.
это система, которая добавляет поверх базовой анимации поворот корпуса/рук/головы для прицеливания или взгляда.
Материалы
AimOffset
Сочетание Bone transform и аддитивной анимации
Материалы
Сочетание Control Rig и Additional Animation
Spring controller + IK нода, которая добавляет к кости пружинное движение.
использоваться для secondary motion: кость немного запаздывает, качается и возвращается назад, как будто на неё действует пружина.
В связке с IK это можно использовать для оверлапов и овершутов.
Например, когда персонаж идёт с оружием и целится, можно сделать так, чтобы руки с оружием слегка запаздывали за движением корпуса, а потом мягко возвращались в нужное положение.
Хотя для оружия, наверное, не самая лучшая идея делать это именно через Spring Controller, так как он любит стробить — чуть-чуть дергаться. Однако для понимания идеи отлично подходит.
В общем, вы можете накладывать поверх анимации физику, IK, а также включать и выключать это по вашему желанию
И еще парочка примеров -того что можно сделать
обычная ходьба
А вот пример если применить аддитивные позы и физику
А вот пример от канала TechAnim Studios как можно сильно изменить анимацию
Материалы
Статья на DTF о Spring
Статья от Epic Games
И вдогонку что можно сделать , пример от ютуб канала TechAnim Studios
UE5 | Procedural Injured Locomotion | Make Your Characters Feel Pain
Motion Matching
это алгоритм, который каждый кадр ищет в базе анимаций позу, максимально подходящую под текущую ситуацию персонажа.
Система анализирует:
- текущую позу персонажа;
- скорость и направление движения;
- желаемую траекторию;
- положение ног, таза, корпуса;
- будущие точки движения.(где он будет через какое то время и где он уже был)
После этого Unreal выбирает из базы анимаций кадр, который лучше всего подходит под текущую ситуацию.
Проще говоря: мы загружаем много анимаций ходьбы, бега, стартов, остановок и поворотов, а Motion Matching сам выбирает , какой кусок анимации сейчас лучше проиграть. ( КОНЕЧНО это нужно настраивать и можно указывать какой кусок лучше выбрать или например с какого кадра анимацию лучше запускать
Для Motion Matching не обязательно огромное количество анимаций, чтобы он работал. Однако тогда и результат будет так себе.
Минимальный пример: “котик” на 3 анимациях
В моем примере используется всего 3 анимации:
- базовая анимация ходьбы вперёд
- аддитивная поза для поворота/сгиба в одну сторону
- аддитивная поза для поворота/сгиба в другую сторону
В итоге персонаж может ходить по кругу/менять дугу, хотя в базе нет отдельных анимаций для поворотов.
Также аддитивные анимации и IK работают вместе с Motion Matching
В Unreal система держится на нескольких ключевых частях:
Pose Search Schema + Pose Search Database + Normalize + Pose History +Offset Root Bone
Pose Search Database база анимационных клипов, из которых система выбирает подходящий кадр: ходьба, бег, старты, остановки, повороты, стрейфы.
В рантайме система сравнивает текущую позу, скорость и trajectory персонажа с кадрами в базе и выбирает наиболее подходящий вариант.
Pose Search Schema правила поиска: какие кости, trajectory-точки, скорости и веса учитывать при сравнении поз.
Pose Search Normalization Set
помогает корректно сравнивать разные базы между собой, например idle, walk, run, starts/stops.
Pose History + Trajectory хранит историю прошлых поз и движения персонажа, чтобы Motion Matching понимал не только текущий кадр, но и контекст движения.
Trajectory описывает, куда персонаж движется сейчас и куда собирается двигаться дальше.
Offset Root Bone в ABP помогает сгладить разницу между движением капсулы и root bone, уменьшает скольжение ног, резкие дерганья и помогает на стартах, остановках и поворотах.
Материалы
Статья от эпиков
Motion Matching
Серия стримов от epic games по Motion Matching
Статья на DTF
Как работают перемещения в AAA: Motion Matching в UE5 на практике
Серия уроков по motion matching от ютуб канала
TechAnim Studios
С чего начать ?
Обучающий курс - на котором вы соберете бегающего и летающего робота
Build a Third Person Character from Scratch на английском - курс очень простой рекомендую
Плейлист Изучаем Unreal Engine с нуля от канала MakeYourGame!