ContextualAnimation and Motion warp обзор
Мой телеграм канал про unreal и 3D анимацию
Контекстная Анимация — это система, позволяющая персонажамдинамически выбирать и синхронизировать анимации, а также адаптировать свое движение (часто с помощью Motion Warping) в ответ на окружающую среду или другие сущности.
Сначала включим плагин Contextual Animation и Motiopn Wraping
Дальше создадим Data Assets
Data Asset — это самостоятельный файл данных в Unreal Engine, который используется для хранения настроек, параметров и конфигураций (например, статистики оружия или характеристик врагов). Он позволяет отделить эти данные от логики ваших Блюпринтов и кода.
В нем выберем Contextual Anim Scene Assets
Открываем его и указываем имя нашего атакующего и защищяещегося ( Attacker и Defender) , так же устанавливаем размеры нашел капсулы и поворот меша в Blueprints Персонажа- эти значения я возьму из BP_ThirdPersonCharacter
Дальше создаем присет в котором будем настраивать наши анимации
Contextual Anim Scene
Тут устанавливаем наш Data Asset в Role Assets
В Override Preview Data жмем 2 раза на плюсик
И распределяем роли
Дальше указываем какой тип Coliision анимация будет игнорировать когда проигрывается ( у каждой роли можно указазть свои настройки )
Жмем Update Roles
Теперь идем в наши анимации и включаем Root motion
Важно что бы наши анимации были сделаны с анимацией рута
— это техника анимации в игровых движках (Unreal Engine, Unity), которая переносит данные о движении и вращении из Корневой Кости (Root Bone) анимации на Капсулу Коллизии персонажа.
- Суть: Анимация диктует движение.
- Результат: Коллайдер персонажа точно следует сложной траектории, закодированной аниматором (например, при перекате, прыжке или добивании).
- Цель: Создание реалистичных, кинематографических и точных взаимодействий с миром, исключая скольжение ног и обеспечивая точное совпадение анимации с окружением.
Создаем монтажи наших анимаций
Анимационные монтажи (Animation Montages) — это ключевой инструмент для управления специфическими, кратковременными действиями персонажа, которые должны перебивать или накладываться поверх основного движения.
Правая кнопка по анимационным ассетам - create AnimMontage
Идем в наш созданный Contextual Anim Scene
New AnimSet и указываем наши анимационные монтажи
Так же важно указать Movement Mode - если у нас есть броски в анимации то в Movement Mode Walk движение рута по оси Z будет прибиватся к земле - для такой ситуации лучше использовать Flying
Дальше выбираем анимацию нашего Defender
И подгоняем ее положение относительно анимации атакующего
Дальше создадим notify для работы Motion Wraping
Что делает: Изменяет положение и/или ориентацию персонажа во время воспроизведения анимации (обычно Animation Montage).
Идем в наш анимационный монтаж
Правая кнопка мыши рядом с Notifies , Add Notify State - Motion Warping
Выделчем Notify и в Details Прописываем имя нашего атакующего ( если у нас выбран монтаж атакующего)
Тоже самое поторяем и для защищяющегося
Дальше идем в Contextual Anim Scene и в Active Section
Указываем имена которые мы указали в Motion warp Notify state
( Важно имена должны точно совподать)
в Params -я поставил Defender это значит что наш персонаж будет стремится к положению защищяегося
и жмем Update Warp Points
Дальше идем в блюпринт нашего персонажа
и в нем добавляем ContextualAnimScene Actor и MotionWraping
Так же я сделал дубликат BP_ThirdPersonCharacter для удобства тестирования
Открываем BP_ThirdPersonCharacter
И создаем вот такую связку нод
В Sphere Overlap Actors указываем дубликат нашего BP_ThirdPersonCharacter