Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички
Всем привет сегодня рассмотрим плагин locomotor( доступен с версии 5.6) + PhysicalAnimation
Locomotor — экспериментальный плагин/нода для процедурной локомоции прямо в Control Rig: генерирует шаги/переступания и движение персонажа
PhysicalAnimation animation — это подход, где ты смешиваешь анимацию с симуляцией физики (через Physics Asset), чтобы получить “живые” реакции: частичный/полный ragdoll, отдача от ударов, болтающиеся конечности, физические реакции на столкновения.
Мой телеграмм канал про Unreal и анимацию
Включим плагин - Edit -Plugins -Locomotor
Создадим Control Rig , правой кнопкой мыши по пустому месту и выбираем как на скриншоте
Заходим в Control Rig и подгружаем нашего персонажа
Правой кнопкой мыши по пустому месту и ищем ноду Locomotor
Указываем наш Root Control в ноде
Коротко разберем за что отвечают вкладки , начнем с
Movement :
- Minimum Step Length — минимальная длина шага: ниже этого нога старается не переступать (меньше “дёрганья” на месте).
- Speed Max — верхний предел “скорости”, под который нода нормализует/клампит скорость для расчёта шага.
- Speed Min — нижний предел скорости (порог “самой медленной” ходьбы/шага).
- Phase Speed Max — максимальная скорость “фазы шага”
- На сколько я понял шаги работаю в цикле и можно фазу каждого шага смещать и этот параметр отвечает за скорость этого цикла в секунду
- Phase Speed Min — минимальная скорость фазы шага
- Acceleration — это параметр, который задаёт насколько быстро локомотор разгоняется к целевому движению (скорости/интенсивности шага), то есть степень “резкости” старта.
- Deceleration — как быстро нода замедляет к целевой (сглаживание при остановке).
- Global Time Scale — общий множитель времени для внутренней симуляции (ускоряет/замедляет всё).
Foot Sets какие ноги/контролы участвуют
Создам настройки для одной ноги и на ее примере разберу основные настройки
Жму на плюсик и создаю Foot Sets
Дальше жму на плюсик рядом с Feet ( важно внутри Feet мы можешь добавит хоть 4 ноги и все они будут входит в этот 1 feet и иметь одинаковый Phase Offset - это нужно если вы хотите чт обы ноги ходили попарно - в моем случае я сделаю еще 3 Foot Sets )
Ankle Bone
Тут мы указываем наше кость стопы
colission Radius - радиус коллизиции для этого кости ( нужно для взаимодейстыия с окружением)
Phase Offset - смещение ноги в цикле - наприме у вас 4 ноги и если везде будет 0 то ноги будут совершать шаг одновременно
Static Local Offset :
Постоянный локальный оффсет точки контакта относительно выбранной кости. - с помощью этого можно изменить дефолтную позу ноги
И так у нас настроенна одна нога - я создам еще 3 Foot Sets и добавлю в них еще 3 ноги и настрою для них Phase Offset
Для этого создаем новый Foot Sets , в Feet жмем по плюсику и добавляем новкю ногу и так 3 раза
Stepping :
Отвечает за сами шаги их высоту итд - эти пармметры я особ оне разбирал и оставтл по дефолту )
- Step Height Высота подъёма ноги в фазе переноса. Больше → выше поднимает лапу (перешагивает препятствия), но может выглядеть “прыгающе”.
- Step Ease In Плавность старта подъёма/движения ноги (ease-in в начале swing). Больше → мягче начинает поднимать.
- Step Ease Out Плавность завершения переноса/постановки (ease-out в конце swing). Больше → мягче “приземляет”, меньше → резче ставит.
Pelvis
1 Pelvis Bone - тут указываем наie Hip Bone
- Position Damping Half Life: Отвечает за плавность перемещения таза. Чем выше значение, тем медленнее и «тяжелее» корпус будет догонять ноги.
- Rotation Stiffness / Damping: Контролирует «жесткость» вращения таза. Если персонаж слишком сильно или резко крутит задом при ходьбе, эти параметры помогают это сгладить.
- Lead Amount: Насколько сильно корпус «наклоняется» или «вырывается» вперед при ускорении.
- Bob Offset / Stiffness / Damping: Параметры «подпрыгивания» (Bobbing). Они имитируют естественную вертикальную качку тела вверх-вниз при шагах.
- Orient to Ground Pitch/Roll: Позволяет тазу наклоняться в соответствии с углом поверхности (например, если персонаж идет по склону).
Присоединяем Forward Solver к Locomotor
Правой кнопкой мыши по пустому месте и ищем Full Body IK
В Root указываем нашу Root bone ( не Root control)
В Effectors Указываем те же кости что мы указали в Foot Sets - в том же порядке - это важно
В моем случае мне потребуется 4 Effectors
Из Feet Transform вытащим AT вот так
Расставляем в каждой ноде AT индекы , счет начинаем с 0 , так как у меня 4 ноги - то и ноды будет 4 и тянем из них трансформы в fullbody
По сути я по индексу беру трансформы с нужной мне ноги и подаю их в FullBody - поэтому порядок рассьтановки ног в Locomotor и FullBodyIK должны совподать
Соединяю Locomotor и FullBody
Тестируем как работает
Идем в ABp персонажа ( анимационный блюпринт) в AnimGraph
Правой кнопкой мыши по пустому месту и ищем Control Rig
Выбираем наш Control Rig в нем во вкладке Control Rig указываем наш Control Rig
Дальше ищем вкладку Input и жмем Use Pin напротив Root_Cnt
Соединяем все это дело с OutPutPose
Дальше идем в EventGraph
Нам потребуется взять положение нашего Actor в мире и передать координаты на Root Controol
Делаем это так - так же я корректирую повороты - персонажа - таек за основу использоваь блпринт от эпиков а там персона жповернут на 90 градусов относительно дефолтной позы моего монстра
Сохраняем эти данные в переменую
Присоединяем эту ноду к Control Rig
Тестируем
Добавим физику на голову и щупальца - создадим PhysicalAsset
Выбираем SkeletalMesh
Правой кнопкой мыши по нему и создаем PhysicalAsset
Настрофки я обычно осьтавляю по дефолту
Правим размеры коллижеон боксов и их ротейты если нужно
Что бы протестировать как работает физика на нужных обьектах -выделим все коллижен цилиндры , правок кнопкой мыши Physics type - Kinematic
Что бы выключить фзику , теперь я выделю только коллижен цилиндры головы, щупальцев и челюсти и переведу в режим симуляции
Теперь включим симуляцию и посмотрим как это примерно работает
Важный аспект коллижен цилиндры соединяються констрейнами
Если вы выднлите например коллижен цилиндр то увидите вот такое окошко
Тут можно увидеть констрейны - их настройк очень важны
Давайте рассмотрим базовые настройки констрейна Головы
Linear Limits отвечает за лимиты движения по транслетйтам - обычно тут стоит Locked что бы част тела не улетела
Angular Limits - ограничение движение костей по ротейтам - достаточно важные настройки для хвостов и ушей
соотвесвенно 3 режима
Locked - по ротейтам не двигается
Limited - ставим ограничение движение по осям - по дефолту стоит 45 градусов
Free - конечность может свободо болтаться
в принципе этого достаточно что бы настроить чт ото простое
Перейдем в BP персонажа
Add PhysicalAnimation
Создаем вот такую связку нод
Коротко расскажу что за чт оотвечает
Set Skeletal Mesh Component - назначаем Physical Animation на наш Mesh
Apply Physical Animation Setting Below +Set All Bodies Simulate Physics - эти ноды отвечает за назначение физику - ниже по иерархиии названной кости
В BoneName у меня соотвественно название кости - которые я взял из Skeleton , Include Selff значит что физика применится и к той кости чо мы написали
Make Physical Animation Data - здесь делаем настройки самой физики
Orientation Strength (Сила вращения):
- Насколько сильно кость хочет повернуться так же, как в анимации. Чем выше значение, тем «жестче» персонаж держит позу. При низких значениях части тела будут болтаться как у тряпичной куклы.
Angular Velocity Strength (Сила угловой скорости):
- Помогает подавлять лишние колебания при вращении. Это своего рода «сопротивление», которое не дает конечностям бешено вращаться, если в них что-то врезалось.
Position Strength (Сила позиции):
- Насколько сильно кость стремится физически переместиться в точку, где она должна быть по анимации.
Velocity Strength (Сила скорости):
- Сопротивление линейному перемещению. Работает в паре с Position Strength для стабилизации движения.
Усе