Что можно сделать с вашей анимацией в игровом движке на примере 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 так, чтобы в конце нужного участка анимации персонаж оказался у цели.

Типичные применения:

  • достать ударом до врага;
  • синхронизовать персонажа и препятствие при перелезании персонажа через объект ;
  • синхронизация одного персонажа с другим с врагом.

одна и та же анимация для препятствий разной высоты

дотягивание персонажа до цели

удар с motiom warp и без

Самое удобное :

Мы можем изменять анимацию только в конкретном участке времени

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Лучше всего применять в прыжке или на резких ударах и давать достаточно времени на отработку.

Главная идея:анимация остаётся той же, но её Root анимация адаптируется под конкретную цель в мире.

И что это нам даёт?Уменьшение количества анимаций.

Важно: всё это работает с Root Motion-анимацией, и это отдельный плагин, который нужно включать.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Материалы :

Документация от эпиков Motion Warping

Моя статья на DTF

Contextual Animation and Motion warp обзор

Что такое Root Motion от epic games

Статья на DTF Анимация в Unreal: шпаргалка для новичков :

Contextual Animation

это система в Unreal Engine для синхронной анимации персонажей и объектов в конкретной ситуации - работает в связки с motion warp

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine
Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

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

Как примерно работает :

  1. Персонаж падает в ragdoll.
  2. Ждем, пока тело остановится.
  3. Берём pelvis/root как позицию тела.
  4. Находим землю под телом через Line Trace.
  5. Переносим capsule к ragdoll-телу.
  6. Определяем, как лежит персонаж: на спине или на животе.
  7. Сохраняем текущую ragdoll-позу через Pose Snapshot.
  8. Выключаем физику и блендим ( blend) в get-up-анимацию.

Blend анимаций это плавное смешивание одной анимации с другой.

Также ничего не мешает комбинировать Ragdolls и Physical Animations. = Active Ragdoll

Active Ragdoll это ragdoll, который не просто пассивно падает, а пытается удерживать или возвращать тело в нужную анимационную позу.

Основные принципы:

  1. Анимация остаётся базой Персонаж продолжает играть нужную позу/анимацию.
  2. Физика включается на всё тело или части тела Например: корпус, руки, голова, ноги.
  3. Физика тянется к анимации Через Physical Animation / Physics Control тело не разваливается полностью, а стремится вернуться к позе.
Пример от канала Kibako Dev 
На этом примере я показываю что во время проигрывания Ragdool мы можем подмешивать разные анимации

Важно для 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 в аним графе и не только)

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Использование 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.
Control Rig
Control Rig

Leg IK

финальный IK-корректор ног, который прикрепляет стопы к IK foot bone

Foot Placementрассчитывает контакт стопы с поверхностью, фиксацию стопы и коррекцию положения ноги/таза ( работает в паре с прошлой Leg IK )

Stride Warping

Отвечает за процедурную подгонку длины шага под скорость движения персонажа.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

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. Конечно, есть и другие способы.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Примеры:

IKExample01 дефолтный эпиковский сетап. Есть подстройка ноги под высоту с сохранением исходной анимации.

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, а не от анимированной ноги.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Материалы

Статья на DTF, где я разбираю, как работает эпиковский сетап:

Урок по использованию foot placement + IK leg

Урок по использованию foot placement + IK leg , но длиннее

Two Bone IK

Можно использовать для процедурной подгонка позы под оружие, которое держит персонаж

IK позволяет переиспользовать одну базовую анимацию под разные условия.

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

А во время анимации перезарядки оружия можно выключать IK я называю это «дёшево и сердито».

Конечно, хорошо это будет работать в ситуации, когда у вас, скажем, есть двуручное оружие одной формы, и вы меняете его на двуручное оружие немного другой формы.

Пример по настройки ноды Two bones IK

Важный момент:

мы можем включать и выключать IK-сетап в любой момент в любой анимации, используя альфа-канал.

Пример: в анимации я сделал кривую, по которой IK включается и выключается.

Через кривую я контролирую когда включать и выключать IK

Делается это через Alpha канал в ноде

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Материалы

Урок от 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

Подытожим

  1. Подгонять ноги под разную высоту поверхности: ступеньки, склон, неровная земля, камни.
  2. Адаптировать одну анимацию под разные условия: разный рост персонажей, разная высота объектов, разные позы относительно окружения.
  3. Удерживать контакт: стопа не скользит по земле, рука не отрывается от оружия/объекта.
  4. Наводить части тела на цель: голова смотрит на игрока, глаза/грудь/оружие направлены на цель.
  5. Включать и выключать IK, когда нам это нужно.

Additive-анимации

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

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Когда используют

  1. Отдача от оружия Основная анимация остаётся, но сверху добавляется отдача плеч, рук или корпуса.
  2. Hit Reaction Персонаж продолжает движение, но поверх добавляется короткая реакция на попадание. Additional Example01
  3. Дыхание / idle-движение На базовую позу накладывается лёгкое движение груди, плеч, головы.
  4. Коррекция позы Например, немного наклонить корпус, голову или плечи поверх locomotion.

Мы можем как накладывать анимацию поверх , так и позу

Часто так делают Lean-анимации это когда персонаж идёт или бежит с наклоном корпуса и Slope animation это подгонка позы персонажа под уклон поверхности.

Использование для Additional hit reaction 

Использование для Lean Animation

Важно: аддитивные анимации лучше делать из той же позы, на которую будешь накладывать анимацию

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Для обычного наложения аддитивной анимации поверх основной часто используют 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

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Нода, которая позволяет смешивать разные анимации по костям тела.

Например:

низ тела = бег;верх тела = перезарядка оружия, удар мечом, hit reaction, стрельба из лука.

Итог:

персонаж бежит ногами, а верх тела играет нужную нам анимацию.

Используют для:

  • перезарядки только верхом тела;
  • удара рукой поверх locomotion;
  • кидания гранаты только верхом тела.

Если Additive подмешивает анимацию к существующей, то такой подход заменяет собой существующую анимацию по тем костям, которые вы укажете.

Материалы

Blend Nodes - рекомендую почитать

Aim Offset

Персонаж идёт или стоит, а верх тела дополнительно поворачивается вверх, вниз, влево, вправо.

это система, которая добавляет поверх базовой анимации поворот корпуса/рук/головы для прицеливания или взгляда.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine
Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Материалы

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 сам выбирает , какой кусок анимации сейчас лучше проиграть. ( КОНЕЧНО это нужно настраивать и можно указывать какой кусок лучше выбрать или например с какого кадра анимацию лучше запускать

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Для Motion Matching не обязательно огромное количество анимаций, чтобы он работал. Однако тогда и результат будет так себе.

Вот небольшая часть анимаций которые сами Epic games используют 
Вот небольшая часть анимаций которые сами Epic games используют 
Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Минимальный пример: “котик” на 3 анимациях

В моем примере используется всего 3 анимации:

  1. базовая анимация ходьбы вперёд
  2. аддитивная поза для поворота/сгиба в одну сторону
  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, уменьшает скольжение ног, резкие дерганья и помогает на стартах, остановках и поворотах.

Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine
Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine
Что можно сделать с вашей анимацией в игровом движке на примере Unreal Engine

Материалы

Статья от эпиков

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!

129
51
20
14
5
5
2
1
1
1