Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Всем привет сегодня рассмотрим плагин locomotor( доступен с версии 5.6) + PhysicalAnimation

Locomotor — экспериментальный плагин/нода для процедурной локомоции прямо в Control Rig: генерирует шаги/переступания и движение персонажа

PhysicalAnimation animation — это подход, где ты смешиваешь анимацию с симуляцией физики (через Physics Asset), чтобы получить “живые” реакции: частичный/полный ragdoll, отдача от ударов, болтающиеся конечности, физические реакции на столкновения.

Мой телеграмм канал про Unreal и анимацию

Включим плагин - Edit -Plugins -Locomotor

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Создадим Control Rig , правой кнопкой мыши по пустому месту и выбираем как на скриншоте

Заходим в Control Rig и подгружаем нашего персонажа

Создаем контрол для Root  кости  - правой кнопкой по кости 
Создаем контрол для Root  кости  - правой кнопкой по кости 
Настраивает размер  контрола 
Настраивает размер  контрола 
Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Правой кнопкой мыши по пустому месту и ищем ноду Locomotor

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Указываем наш Root Control в ноде

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Коротко разберем за что отвечают вкладки , начнем с

Movement :

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички
  1. Minimum Step Length — минимальная длина шага: ниже этого нога старается не переступать (меньше “дёрганья” на месте).
  1. Speed Max — верхний предел “скорости”, под который нода нормализует/клампит скорость для расчёта шага.
  1. Speed Min — нижний предел скорости (порог “самой медленной” ходьбы/шага).
  1. Phase Speed Max — максимальная скорость “фазы шага”
  2. На сколько я понял шаги работаю в цикле и можно фазу каждого шага смещать и этот параметр отвечает за скорость этого цикла в секунду
  1. Phase Speed Min — минимальная скорость фазы шага
  1. Acceleration — это параметр, который задаёт насколько быстро локомотор разгоняется к целевому движению (скорости/интенсивности шага), то есть степень “резкости” старта.
  1. Deceleration — как быстро нода замедляет к целевой (сглаживание при остановке).
  1. Global Time Scale — общий множитель времени для внутренней симуляции (ускоряет/замедляет всё).

Foot Sets какие ноги/контролы участвуют

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Создам настройки для одной ноги и на ее примере разберу основные настройки

Жму на плюсик и создаю Foot Sets

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Дальше жму на плюсик рядом с Feet ( важно внутри Feet мы можешь добавит хоть 4 ноги и все они будут входит в этот 1 feet и иметь одинаковый Phase Offset - это нужно если вы хотите чт обы ноги ходили попарно - в моем случае я сделаю еще 3 Foot Sets )

Ankle Bone

Тут мы указываем наше кость стопы

colission Radius - радиус коллизиции для этого кости ( нужно для взаимодейстыия с окружением)

Phase Offset - смещение ноги в цикле - наприме у вас 4 ноги и если везде будет 0 то ноги будут совершать шаг одновременно

Static Local Offset :

Постоянный локальный оффсет точки контакта относительно выбранной кости. - с помощью этого можно изменить дефолтную позу ноги

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

И так у нас настроенна одна нога - я создам еще 3 Foot Sets и добавлю в них еще 3 ноги и настрою для них Phase Offset

Для этого создаем новый Foot Sets , в Feet жмем по плюсику и добавляем новкю ногу и так 3 раза

Stepping :

Отвечает за сами шаги их высоту итд - эти пармметры я особ оне разбирал и оставтл по дефолту )

  1. Step Height Высота подъёма ноги в фазе переноса. Больше → выше поднимает лапу (перешагивает препятствия), но может выглядеть “прыгающе”.
  1. Step Ease In Плавность старта подъёма/движения ноги (ease-in в начале swing). Больше → мягче начинает поднимать.
  1. Step Ease Out Плавность завершения переноса/постановки (ease-out в конце swing). Больше → мягче “приземляет”, меньше → резче ставит.
Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Pelvis

1 Pelvis Bone - тут указываем наie Hip Bone

  1. Position Damping Half Life: Отвечает за плавность перемещения таза. Чем выше значение, тем медленнее и «тяжелее» корпус будет догонять ноги.
  1. Rotation Stiffness / Damping: Контролирует «жесткость» вращения таза. Если персонаж слишком сильно или резко крутит задом при ходьбе, эти параметры помогают это сгладить.
  1. Lead Amount: Насколько сильно корпус «наклоняется» или «вырывается» вперед при ускорении.
  1. Bob Offset / Stiffness / Damping: Параметры «подпрыгивания» (Bobbing). Они имитируют естественную вертикальную качку тела вверх-вниз при шагах.
  1. Orient to Ground Pitch/Roll: Позволяет тазу наклоняться в соответствии с углом поверхности (например, если персонаж идет по склону).
Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Присоединяем Forward Solver к Locomotor

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Правой кнопкой мыши по пустому месте и ищем Full Body IK

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

В Root указываем нашу Root bone ( не Root control)

В Effectors Указываем те же кости что мы указали в Foot Sets - в том же порядке - это важно

В моем случае мне потребуется 4 Effectors

Из Feet Transform вытащим AT вот так

Расставляем в каждой ноде AT индекы , счет начинаем с 0 , так как у меня 4 ноги - то и ноды будет 4 и тянем из них трансформы в fullbody

По сути я по индексу беру трансформы с нужной мне ноги и подаю их в FullBody - поэтому порядок рассьтановки ног в Locomotor и FullBodyIK должны совподать

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Соединяю Locomotor и FullBody

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Тестируем как работает

Идем в ABp персонажа ( анимационный блюпринт) в AnimGraph

Правой кнопкой мыши по пустому месту и ищем Control Rig

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Выбираем наш Control Rig в нем во вкладке Control Rig указываем наш Control Rig

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Дальше ищем вкладку Input и жмем Use Pin напротив Root_Cnt

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Соединяем все это дело с OutPutPose

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Дальше идем в EventGraph

Нам потребуется взять положение нашего Actor в мире и передать координаты на Root Controol

Делаем это так - так же я корректирую повороты - персонажа - таек за основу использоваь блпринт от эпиков а там персона жповернут на 90 градусов относительно дефолтной позы моего монстра

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Сохраняем эти данные в переменую

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Присоединяем эту ноду к Control Rig

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Тестируем

Добавим физику на голову и щупальца - создадим PhysicalAsset

Выбираем SkeletalMesh

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Правой кнопкой мыши по нему и создаем PhysicalAsset

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Настрофки я обычно осьтавляю по дефолту

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Правим размеры коллижеон боксов и их ротейты если нужно

Что бы протестировать как работает физика на нужных обьектах -выделим все коллижен цилиндры , правок кнопкой мыши Physics type - Kinematic

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Что бы выключить фзику , теперь я выделю только коллижен цилиндры головы, щупальцев и челюсти и переведу в режим симуляции

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Теперь включим симуляцию и посмотрим как это примерно работает

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Важный аспект коллижен цилиндры соединяються констрейнами

Если вы выднлите например коллижен цилиндр то увидите вот такое окошко

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Тут можно увидеть констрейны - их настройк очень важны

Давайте рассмотрим базовые настройки констрейна Головы

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Linear Limits отвечает за лимиты движения по транслетйтам - обычно тут стоит Locked что бы част тела не улетела

Angular Limits - ограничение движение костей по ротейтам - достаточно важные настройки для хвостов и ушей

соотвесвенно 3 режима

Locked - по ротейтам не двигается

Limited - ставим ограничение движение по осям - по дефолту стоит 45 градусов

Free - конечность может свободо болтаться

в принципе этого достаточно что бы настроить чт ото простое

Перейдем в BP персонажа

Add PhysicalAnimation

Unreal engine Locomotor ( процедурный локомоушен) + физика для вторички

Создаем вот такую связку нод

Коротко расскажу что за чт оотвечает

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 для стабилизации движения.

Усе

189
38
23
6
2