Анимации: 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 плавно смешивает анимации по параметрам вроде скорости.