Анимации: Skeletal Mesh и Animation Blueprint

Урок про то, как оживить персонажа: скелетные меши, Animation Blueprint и машина состояний.

Animation Blueprint — это специальный Blueprint, который каждый кадр решает, какую анимацию проигрывать персонажу и как смешивать анимации между собой.

Skeletal Mesh и скелет

Персонаж — это Skeletal Mesh: модель, натянутая на скелет из костей. Когда кости двигаются, привязанные к ним вершины меша деформируются — так и возникает движение. Анимации (бег, прыжок, удар) — это записанные последовательности поз скелета. Один скелет может использовать множество анимаций.

Зачем нужен Animation Blueprint

Просто проиграть один клип недостаточно: персонаж должен плавно переходить от стояния к ходьбе, от ходьбы к бегу, прыгать и приземляться. Этим дирижирует Animation Blueprint. Он состоит из двух частей: Event Graph (где считаются переменные, например текущая скорость) и Anim Graph (где из этих переменных собирается итоговая поза).

State Machine — машина состояний

Сердце Anim Graph — машина состояний. Каждое состояние — это анимация или их набор (Idle, Walk, Jump), а переходы между ними срабатывают по условиям.

[Idle] --(Speed > 0)--> [Walk] --(Speed > 400)--> [Run]
   ^                        |                        |
   +----(Speed = 0)---------+------------------------+

[Любое состояние] --(IsInAir?)--> [Jump]

Blend Space — плавное смешивание

Резко переключать «стоит» и «бежит» некрасиво. Blend Space позволяет смешивать анимации по параметру: при скорости 200 движок покажет смесь ходьбы и бега в нужной пропорции. По одной оси (скорость) или двум (скорость и направление) получается плавный переход между всеми состояниями движения.

Как работает под капотом

Каждый кадр Animation Blueprint обновляет свои переменные (Event Graph читает скорость персонажа, флаг «в воздухе» и т.д.), затем Anim Graph по машине состояний и блендспейсам вычисляет финальную позу скелета — то есть положение каждой кости. Эта поза применяется к Skeletal Mesh, и персонаж принимает нужный вид. Всё это происходит после движения, чтобы анимация соответствовала текущей скорости.

Частые ошибки

  • Жёсткие переходы без условий. Без правильных условий персонаж «дёргается» между состояниями.
  • Логику движения в Animation Blueprint. Аниматор только отображает состояние, а не управляет персонажем; движение — дело Character.
  • Анимация от чужого скелета. Анимации обычно привязаны к конкретному скелету; для переноса нужен ретаргетинг.

Notify, Root Motion и слои

Анимации умеют не только двигать кости, но и «сообщать» о событиях. Anim Notify — это метка на дорожке анимации: в нужный кадр (например, когда нога касается земли или меч проходит точку удара) срабатывает событие. Так привязывают звук шагов, эффект пыли или момент нанесения урона точно к движению. Это синхронизирует геймплей с анимацией без угадывания таймингов.

Ещё одна важная концепция — Root Motion: когда само перемещение персонажа берётся из анимации, а не из кода движения. Для сложных действий вроде кувырка или добивания это даёт идеально выверенное движение, заложенное аниматором. А Layered Blend позволяет проигрывать разные анимации на разных частях тела одновременно — например, ноги бегут, а руки независимо перезаряжают оружие. Эти приёмы превращают набор клипов в живого, убедительного персонажа.

Итоги

  • Персонаж — это Skeletal Mesh на скелете из костей.
  • Animation Blueprint каждый кадр выбирает и смешивает анимации.
  • State Machine управляет переходами между состояниями по условиям.
  • Blend Space плавно смешивает анимации по параметрам вроде скорости.
Проверьте себя
1. Что такое Skeletal Mesh?
AСтатичная модель без анимации
BМодель, натянутая на скелет из костей
CТекстура персонажа
DЗвуковой файл
2. За что отвечает State Machine в Animation Blueprint?
AЗа освещение
BЗа переходы между состояниями анимации по условиям
CЗа физику
DЗа загрузку уровней
3. Зачем нужен Blend Space?
AЧтобы резко переключать анимации
BЧтобы плавно смешивать анимации по параметру вроде скорости
CЧтобы удалять кости
DЧтобы рисовать UI