- Animation Blueprint
- Создание и подключение Animation Blueprint
- Редактор Animation Blueprint
- Event Graph
- Ключевые ноды в Event Graph
- Event Blueprint Initialize Animation
- Event Blueprint Update Animation
- Get Owning Actor
- Пример сохранения и обновления данных в Event Graph
- Anim Graph
- Sequence Player — проигрыватель анимаций
- Blend — смешивание разных анимаций
- Blend Poses by Bool
- Blend Poses by Enum
- Layered Blend Per Bone
- Другие узлы смешивания
- Специализированные узлы Anim Graph
- Slot
- Apply Additive
- Blend Space
- Aim Offset
- Control Rig
- Transform (Modify) Bone
- Two Bone IK
- State Machine
- Основная идея State Machine
- Создание State Machine
- Граф State Machine и ее узлы
- Transitions — переходы между состояниями
- Saved / Use Cache Pose
- Пример логики Anim Graph / State Machine
- Логика Anim Graph
- Логика State Machine: Locomotion
- Логика State Machine: Main States
- Animation Blueprint: краткий итог
Animation Blueprint
Animation Blueprint в Unreal Engine — это специализированный Blueprint, предназначенный для управления анимацией Skeletal Mesh (чаще всего персонажа). Он отвечает за переключение анимаций (например, Idle, Walk, Run, Jump и других), их плавное смешивание, работу со State Machine и Blend Space, а также за более сложные анимационные задачи — например, реализацию IK (обратной кинематики) или процедурных корректировок позы.
Также рекомендую скачать мою бесплатную книгу по Blueprint для Unreal Engine.
Основная цель книги — дать общий, целостный и понятный обзор системы Blueprint. Книга предлагает взгляд с высоты «птичьего полёта» — ясную и чёткую карту игрового мира Unreal Engine, которая поможет увидеть ключевые взаимосвязи и понять, как устроена система визуального скриптинга.
Зарегистрироваться в ЛК и скачать книгу [Blueprints. Взгляд с высоты «птичьего полёта»]
Проще говоря, Animation Blueprint определяет, какая анимация должна воспроизводиться в текущий момент и при каких условиях происходит её смена. Он формирует итоговую позу персонажа в каждом кадре игры.
Важно понимать, что Animation Blueprint не управляет движением персонажа и не содержит основной игровой логики. Он лишь визуально отображает состояние персонажа.
Создание и подключение Animation Blueprint
Создаётся Animation Blueprint через контекстное меню Content Browser или же через его кнопку Add далее Animation / Animation Blueprint.

В процессе создания Animation Blueprint также необходимо выбрать Skeleton, к которому он будет привязан. Это важно, поскольку анимационный Blueprint может работать только с тем скелетом, для которого он создаётся, и использовать анимации, совместимые с ним.

После создания задаётся имя ассета. По принятой практике в названии используется префикс AnimBP или ABP, например ABP_Unarmed.
Чтобы Animation Blueprint начал управлять анимацией персонажа, его необходимо назначить в настройках компонента Skeletal Mesh: в разделе Details / Animation / Animation Mode выбрать режим Use Animation Blueprint, после чего в поле Anim Class указать созданный Animation Blueprint.

С этого момента вся логика выбора и смешивания анимаций будет выполняться внутри Animation Blueprint, а Skeletal Mesh будет получать и отображать рассчитанную им финальную позу.
Редактор Animation Blueprint
При открытии созданного Animation Blueprint откроется соответствующий редактор, состоящий из нескольких основных частей:
- Toolbar (верхняя панель инструментов) — содержит кнопки Compile (компиляция), Save (сохранение), Play (запуск), Debug (отладка) и другие быстрые действия.
- Viewport / Preview — окно предпросмотра персонажа с анимацией.
- My Blueprint — список логических элементов блюпринта: Variables (переменные), Functions (функции), Macros (макросы), Dispatchers (диспетчеры), анимационные графы и графы событий. Позволяет создавать логические элементы для управления анимацией.
- Graph Editor — основная рабочая область. Состоит из:
— Event Graph — логика обновления (например, скорость, состояние персонажа).
— Anim Graph — отвечает за выбор и смешивание анимаций (State Machine, Blend Space и т.д.), а также за финальную позу персонажа. - Details Panel — показывает свойства выбранного узла, переменной или анимации. Здесь настраиваются параметры.
- Asset Browser — список доступных анимаций, Blend Space, Montage и других ассетов анимаций для использования в графе.
- Переключение связанных ассетов (верхний правый угол) — набор кнопок для быстрого перехода к связанным ассетам текущего скелета: Skeleton, Skeletal Mesh, Physics Asset и другие связанные ассеты. Используется для удобной навигации между всеми ресурсами, работающими с одним и тем же скелетом.

Graph Editor в Animation Blueprint — это основная рабочая область, где создаётся вся логика работы анимации для Skeletal Mesh. Он включает два ключевых раздела: Event Graph и Anim Graph. Они выполняют разные задачи, но работают совместно каждый кадр обновления анимации.
Event Graph
Event Graph в Animation Blueprint предназначен для вычисления и обновления переменных, которые описывают текущее состояние персонажа. Эти переменные затем используются в Anim Graph для выбора, переключения и смешивания анимаций. Таким образом, Event Graph отвечает не за саму анимацию, а за подготовку данных, на основании которых Anim Graph принимает решения.

Основная его логика работы заключается в следующем: каждый кадр Animation Blueprint получает информацию о состоянии персонажа — его скорости, направлении движения, нахождении в воздухе, приседании, атаке и других параметрах. Эти данные преобразуются в переменные внутри Animation Blueprint (например, GroundSpeed, IsFalling).

Затем Anim Graph использует их в условиях переходов между состояниями State Machine и в узлах смешивания. Когда значение переменной изменяется, условия перехода становятся истинными или ложными, и анимация автоматически переключается.

Ключевые ноды в Event Graph
Event Blueprint Initialize Animation
Одной из ключевых нод в Event Graph является нода Event Blueprint Initialize Animation.

Событие Event Blueprint Initialize Animation вызывается один раз в момент инициализации Animation Blueprint — когда анимация привязывается к скелетному мешу персонажа. В этом событии обычно получают ссылку на владельца анимации через Get Owning Actor, выполняют приведение типа (Cast) к классу конкретного персонажа и сохраняют эту ссылку в переменную. Это позволяет в дальнейшем обращаться к данным персонажа без повторного выполнения Cast каждый кадр.
Event Blueprint Update Animation
Главным рабочим событием является Event Blueprint Update Animation.

Событие Event Blueprint Update Animation вызывается каждый кадр обновления анимации. Именно здесь происходит расчёт всех переменных состояния. Обычно в этом событии проверяют наличие ссылки на персонажа, получают его текущую скорость через компонент движения, вычисляют длину вектора Velocity для определения значения Speed, проверяют состояние падения через функцию IsFalling, а также обновляют другие логические флаги. Все вычисленные значения сохраняются в переменные Animation Blueprint. После этого Anim Graph автоматически использует обновлённые данные для определения нужной анимации.
Get Owning Actor
Еще одной важной нодой в Event Graph внутри Animation Blueprint является нода Get Owning Actor.

Нода Get Owning Actor возвращает Актор, которому принадлежит данный Animation Blueprint. Чаще всего это объект класса Character. Через него можно получить доступ к компоненту движения, игровым переменным и функциям персонажа. Обычно ссылка на владельца сохраняется во время события Event Blueprint Initialize Animation и затем используется в Update Animation для чтения данных.
В итоге работа строится по следующему принципу: при инициализации анимации получаем ссылку на персонажа; каждый кадр обновляем переменные состояния в Event Graph; Anim Graph анализирует эти переменные и при их изменении переключает или смешивает анимации. Таким образом достигается разделение вычисления состояния и визуального представления анимации.
Пример сохранения и обновления данных в Event Graph
Рассмотрим пример организации вычисления, сохранения и обновления данных в Event Graph на основе стандартного шаблона проекта от третьего лица в Unreal Engine (версия 5.7).
В данном проекте анимация персонажа реализована через Animation Blueprint, расположенный по пути: /Game/Characters/Mannequins/Anims/Unarmed. Ассет называется ABP_Unarmed.
Открыв этот ассет и перейдя на вкладку Event Graph, можно увидеть, что при срабатывании события Event Blueprint Initialize Animation происходит первичная настройка Animation Blueprint.
Во время инициализации по событию Event Blueprint Initialize Animation:
- С помощью ноды Get Owning Actor получается владеющий Актор — то есть персонаж, к которому привязан данный Animation Blueprint.
- Выполняется приведение типа (Cast) к классу Character.
- Сохраняется ссылка на персонажа.
- Дополнительно сохраняется ссылка на его компонент движения Character Movement.

Таким образом, Animation Blueprint получает прямой доступ к данным персонажа и его системе перемещения. Эти ссылки сохраняются один раз при инициализации, чтобы в дальнейшем не выполнять Cast каждый кадр, что положительно влияет на производительность.
Далее, в событии Event Blueprint Update Animation, которое вызывается на каждом кадре, происходит обновление состояния переменных. На основе сохранённых ссылок на Character и Character Movement вычисляются и обновляются следующие переменные:
- Velocity — вектор скорости персонажа (направление и величина движения).
- Ground Speed — скалярная скорость движения по поверхности (обычно длина вектора Velocity без учёта вертикальной составляющей).
- ShouldMove — логическая переменная, определяющая, движется ли персонаж.
- IsFalling — логическая переменная, показывающая, находится ли персонаж в состоянии падения.
- Direction — угол направления движения относительно ориентации персонажа.

Эти значения пересчитываются каждый кадр, чтобы анимационная система всегда имела актуальную информацию о состоянии персонажа.
Все перечисленные переменные затем используются во вкладке Anim Graph. Они участвуют в:
- условиях переходов между состояниями State Machine,
- управлении Blend Space,
- выборе и смешивании анимаций.
Таким образом, Event Graph выполняет роль вычислительного слоя: он собирает и обновляет данные о состоянии персонажа, а Anim Graph на их основе формирует итоговую анимацию.
Anim Graph
Anim Graph в Animation Blueprint — это ключевая часть системы анимации в Unreal Engine, которая отвечает за формирование финальной позы персонажа каждый кадр. В отличие от Event Graph, который вычисляет переменные, например, такие как скорость движения, нахождение в воздухе или состояние атаки, Anim Graph использует эти данные для выбора, смешивания и модификации анимаций. Это позволяет создавать плавную и реалистичную итоговую позицию скелета персонажа. Такое разделение увеличивает читаемость и эффективность работы анимационной системы.

Anim Graph — это граф специализированных анимационных узлов, каждый из которых выполняет свою функцию: проигрывание анимаций, их смешивание, трансформацию костей, управление слоями и многое другое.
Важно понимать, что Anim Graph выполняется каждый кадр, постоянно перерасчитывая итоговую позицию костей на основе текущих входных данных и логики.
В основе любого Anim Graph всегда находится узел Output Pose. Это финальный выход графа. Вся цепочка узлов — проигрыватели анимаций, переходы, смешивания и дополнительные вычисления — в итоге должна быть подключена к этому узлу. Именно та поза, которая приходит в Output Pose, передаётся владельцу Animation Blueprint, то есть компоненту Skeletal Mesh, и отображается на персонаже в текущем кадре. Если какая-либо логика не приводит к Output Pose, она не повлияет на итоговую анимацию.

Так как Anim Graph является специализированным графом для выбора и смешивания анимаций в одну итоговую позу, то он содержит ряд специальных узлов, предназначенных для работы с позами. Рассмотрим наиболее часто используемые.
Sequence Player — проигрыватель анимаций
Sequence Player — это проигрыватель анимационной последовательности. Он воспроизводит конкретную анимацию и выдаёт позу на выход.

В его настройках во вкладке Details можно выбрать саму анимацию (Sequence), задать скорость воспроизведения (Play Rate), указать начальную позицию проигрывания (Start Position) и включить или отключить зацикливание (Loop Animation).

Эти параметры можно задавать во вкладке Details или же вывести на граф в виде пинов через опцию Expose as Pin.

Если подключить Sequence Player напрямую к Output Pose, персонаж будет проигрывать только одну анимацию без какой-либо логики переключения.

Blend — смешивание разных анимаций
Для переключения и комбинирования анимаций в Anim Graph используются узлы категории Blend. Их основная задача — смешивать две и более позы различными способами. На вход такие узлы принимают минимум две позы, а на выходе выдают одну итоговую позу.
Узлов категории Blend существует множество. Все они предназначены для разных задач, но принцип у них общий — объединение (смешение) анимаций по заданным условиям. Рассмотрим самые часто используемые.
Blend Poses by Bool
Узел Blend Poses by Bool смешивает две позы — True Pose и False Pose — в зависимости от логического значения.
Например, если в качестве условия использовать переменную скорости, то при наличии движения будет проигрываться анимация ходьбы или бега, а при отсутствии — анимация покоя. На рисунке ниже логическая переменная Should Move возвращает True, если персонаж движется, и False, если нет. Соответственно, Blend Poses by Bool будет проигрывать позу True Pose (анимацию ходьбы), если персонаж движется, если же персонаж стоит, то проигрываться будет поза False Pose (анимация покоя).

Также узел Blend Poses by Bool для каждой позы имеет параметры Blend Time, позволяющие задать время смешивания текущей анимации с предыдущей.
Blend Poses by Enum
Другой распространённый вариант — смешивание по перечислению.
Blend Poses by Enum — выбирает позу в зависимости от значения перечисления. Например, если в Event Graph установлена переменная-перечисление TypeMove со значениями Walk, Jog, то в Anim Graph можно подключить разные анимации к соответствующим входам узла Blend Poses by Enum. В зависимости от текущего режима движения будет проигрываться соответствующая анимация.

Layered Blend Per Bone
Отдельно стоит выделить узел смешивания анимаций по костям.
Layered Blend Per Bone — позволяет смешивать анимации по определённым костям. Итоговая поза формируется частично из одной анимации и частично из другой. В настройках (Details / Layer Setup / Index / Branch Filter) указывается кость, с которой начинается смешивание (Bone Name), а также глубина смешивания (Blend Depth). Если глубина равна нулю, вторая анимация применяется сразу с указанной кости. Если задано положительное значение, создаётся постепенный переход по иерархии костей. Такой подход часто используется, например, когда нижняя часть тела выполняет анимацию ходьбы или бега, а верхняя — анимацию стрельбы.
На рисунке ниже в узле Layered Blend Per Bone в качестве базовой позы указана анимация ходьбы без оружия, но, начиная с кости spine_01, к основной позе примешивается анимация удержания пистолета в состоянии покоя. Как итоговая поза получается анимация ходьбы с удержанием пистолета.

Другие узлы смешивания
- Blend — простейшее смешивание двух поз с управлением степенью смешивания через параметр Alpha (0..1).
- Blend Bone by Channel — позволяет задать смешивание трансформаций (положение, поворот, масштаб) по отдельным костям. Можно отдельно контролировать, какие каналы трансформации участвуют в смешивании. Позволяет смешивать анимации, влияющие на разные части тела, с точной настройкой.
- Blend Multi — используется для смешивания более двух поз с использованием множества весов Alpha.
- Blend Poses by Int — позволяет выбирать и смешивать несколько поз на основе переменной типа int.
В итоге все узлы смешивания в Anim Graph работают по одному принципу: они получают несколько поз на входе и выдают итоговую позу на выходе. Поэтому их можно комбинировать между собой. Например, несколько Sequence Player могут воспроизводить базовые анимации, затем их результат смешивается через узлы Blend, после чего поза, например, может дополнительно обрабатываться через Layered Blend Per Bone. В конце вся эта цепочка должна быть обязательно подключена к Output Pose.
Специализированные узлы Anim Graph
Помимо базовых узлов проигрывания анимаций и смешивания поз, в Anim Graph существует ряд специализированных узлов, предназначенных для решения более сложных задач: для работы с Animation Montage, процедурной анимации, управления направлением взгляда и прицеливания, а также параметрического смешивания анимаций. Рассмотрим наиболее важные из них.
Slot
Slot — узел используется для воспроизведения Animation Montage внутри Anim Graph.

Animation Montage — это специальный тип анимации, который применяется для отдельных действий персонажа, таких как атака, перезарядка оружия, получение урона или взаимодействие с объектами. Узел Slot работает как точка подключения Montage к текущей позе персонажа. Сначала в Anim Graph формируется базовая поза, например анимация движения персонажа (Idle, Walk, Run). Эта поза подается на вход Slot. Если в данный момент проигрывается Animation Montage, он перекрывает текущую позу. Если же Montage не активен, Slot просто пропускает входящую позу дальше без изменений.
Каждый Slot имеет имя, которое должно совпадать с именем слота, указанным внутри Montage. Нередко Slot используется совместно с узлом Layered Blend Per Bone, чтобы накладывать анимацию Montage только на определённую часть тела, например на верхнюю часть тела при стрельбе или перезарядке.
Apply Additive
Apply Additive и Apply Mesh Space Additive — узлы Anim Graph, предназначенные для наложения аддитивных анимаций поверх базовой позы персонажа.

Аддитивная анимация хранит не полную позу, а разницу относительно базовой позы. При применении такой анимации она не заменяет текущую анимацию, а добавляет к ней дополнительные движения. Это позволяет накладывать вторичные эффекты, такие как дыхание, отдача оружия, лёгкие наклоны корпуса или колебания камеры.
Узел Apply Additive накладывает аддитивную анимацию в Local Space (локальном пространстве костей), а Apply Mesh Space Additive выполняет ту же функцию, но применяет аддитивную анимацию в Mesh Space (пространстве всего скелета). Такой способ используется в ситуациях, когда важна ориентация всей модели, например при системах Aim Offset или при поворотах верхней части тела.
Blend Space
Blend Space представляет собой специальный анимационный ресурс, позволяющий плавно смешивать несколько анимаций на основе одного или нескольких параметров. Чаще всего он используется в системах локомоции персонажа. Например, персонаж может иметь анимации Idle, Walk и Run. В Blend Space эти анимации располагаются в координатном пространстве, где осью может быть параметр скорости. В зависимости от значения скорости система автоматически смешивает ближайшие анимации, создавая плавный переход между ними.
В Anim Graph для работы с таким ресурсом используется узел Blend Space Player. Он принимает параметры, например скорость и направление движения, и возвращает итоговую позу, полученную в результате смешивания анимаций. Существует два основных типа Blend Space: одномерный (1D), использующий один параметр, например, скорость, и двумерный (2D), использующий два параметра, например скорость и направление движения.

Aim Offset
Специализированным вариантом Blend Space является Aim Offset Blend Space, предназначенный для управления направлением прицеливания или взгляда персонажа.

Aim Offset содержит набор поз, соответствующих различным направлениям — вверх, вниз, влево, вправо и прямо. На основе входных параметров, обычно углов Pitch (наклон вверх или вниз) и Yaw (поворот влево или вправо), система смешивает соответствующие позы и формирует итоговую анимацию. Чаще всего Aim Offset применяется поверх базовой анимации движения в виде аддитивной анимации.
Control Rig
Для более сложной и динамической анимации используется узел Control Rig, позволяющий применять процедурную анимацию непосредственно внутри Anim Graph.

Control Rig предоставляет возможность программно управлять трансформациями костей скелета. С его помощью можно реализовывать системы обратной кинематики, корректировать положение рук и ног, адаптировать анимацию к окружающей среде или реализовывать дополнительные процедурные движения. Control Rig получает позу на входе, выполняет внутри собственного графа вычисления, связанные с трансформацией костей, и возвращает изменённую позу обратно в Anim Graph. Таким образом можно комбинировать заранее записанные анимации и процедурные корректировки.
Transform (Modify) Bone

Также в Anim Graph существует ряд узлов, позволяющих напрямую работать с трансформациями костей. Например, узел Transform (Modify) Bone позволяет изменять положение, вращение или масштаб выбранной кости. Он может использоваться для наклона персонажа при движении, поворота головы или динамического изменения положения оружия.
Two Bone IK
Для работы с конечностями часто применяются узлы инверсной кинематики. Один из наиболее распространённых — Two Bone IK.

Two Bone IK используется для управления костями скелета, например плечо–локоть–кисть или бедро–колено–стопа. Этот узел позволяет задать целевую точку, к которой должна тянуться конечность. Two Bone IK широко используется для корректировки положения ног на поверхности, удержания рук на оружии или взаимодействия персонажа с объектами.
Таким образом, Anim Graph предоставляет широкий набор специализированных узлов для решения различных задач анимации. Одни узлы отвечают за проигрывание анимаций, другие — за их смешивание, третьи — за наложение дополнительных анимационных слоев или процедурную корректировку позы. Комбинируя такие узлы, как Sequence Player, Blend Space, Aim Offset, Slot, Layered Blend Per Bone, Control Rig и IK-системы, можно создавать сложные и гибкие системы анимации, которые динамически реагируют на состояние персонажа, его движения, взаимодействие с окружением и другие игровые параметры.
State Machine
Хотя выбор конкретной анимации для текущего кадра можно осуществлять напрямую в Anim Graph с помощью разнообразных Blend-нод, для сложных и реалистичных анимационных систем такой подход оказывается неэффективным и неудобным.
Во-первых, в сложных персонажах может насчитываться сотни разных анимаций, и создание больших разветвленных деревьев условий при помощи только Blend-нод приводит к путанице и потере контроля над логикой. Отслеживать взаимосвязи и правильно управлять условными переходами становится крайне сложно.
Во-вторых, Blend-ноды работают в режиме постоянного, двунаправленного смешивания — при изменении условия анимация мгновенно меняется на другую, а при обратном изменении условия возвращается обратно. Однако в реальных сценариях часто требуется более точный контроль: например, при изменении условия не возвращаться в прежнее состояние, а перейти в другое, или не изменять анимацию вообще, пока не произойдет определённое событие. Такие сценарии сложно реализовать через простые Blend-ноды.
Для решения этих проблем в Unreal Engine используется инструмент State Machine (машина состояний) — специализированная структура в рамках Animation Blueprint, позволяющая управлять анимациями через определённые дискретные состояния с односторонними и чётко контролируемыми переходами между ними.

Основная идея State Machine
- Всё поведение персонажа разделяется на логические дискретные состояния, например: Idle (покой), Locomotion (движение), Jump Start (начало прыжка), Falling (падение), Landing (приземление), Attack (атака) и другие.

- Каждое состояние представляет собой отдельный узел внутри машины состояний и инкапсулирует собственную анимационную логику. По своей структуре оно работает так же, как обычный Anim Graph: внутри используются Sequence Player, Blend Space, Blend-ноды и другие инструменты для воспроизведения и смешивания анимаций. Разница в том, что вся эта логика ограничена рамками конкретного состояния и формирует итоговую позу именно для данного этапа поведения персонажа. Завершается состояние обязательным узлом Output Animation Pose, который определяет финальную позу персонажа в каждом кадре, пока активно это состояние.

- Переход между состояниями возможен только при наличии явно заданного правила — Transition Rule. Если правило не создано, переход невозможен. Переходы являются односторонними: при переходе из состояния A в состояние B персонаж остаётся в состоянии B до тех пор, пока не выполнится условие другого перехода. Обратный переход требует отдельного явно заданного правила. Это обеспечивает чёткий и контролируемый поток анимаций и предотвращает нежелательные автоматические возвраты.

- Каждый Transition Rule содержит собственный граф с логическим условием и обязательным конечным узлом Result, который определяет итог True/False (есть переход или нет). Внутри правила можно использовать переменные из Event Graph, проверки значений (например, Speed > 0), логические флаги (IsInAir), а также время проигрывания текущей анимации.

Использование State Machine упрощает организацию сложных анимационных систем за счёт модульности, повышает читаемость, облегчает отладку и поддержку проекта. Кроме того, оно даёт возможность задавать длительные переходы, условия ожидания, а также создавать вложенные машины состояний для ещё более гибкого управления и масштабируемости анимаций.

Таким образом, Blend-ноды подходят для локального смешивания анимаций, тогда как State Machine обеспечивает архитектурную структуру всей системы.
Создание State Machine
Для создания State Machine откройте Anim Graph текущего Animation Blueprint, вызовите контекстное меню правой кнопкой мыши, найдите и добавьте узел State Machine. Соответствующая нода появится на графе.

После добавления рекомендуется задать ноде понятное и осмысленное имя, отражающее её назначение. Например, Locomotion — управление передвижением персонажа.
State Machine имеет один выходной пин — итоговую позу, сформированную логикой внутри машины состояний. Эту позу можно передать другим узлам обработки поз (например, Blend Poses, Layered Blend Per Bone) или напрямую подключить к финальному выходу Anim Graph — Output Pose.

Граф State Machine и ее узлы
Чтобы открыть граф машины состояний, дважды кликните по ноде State Machine. Внутри графа находится стартовая нода Entry — точка входа в машину состояний. При запуске анимационного Blueprint выполнение происходит именно от неё.

В контекстном меню графа доступны три ключевых типа нод: Add State, Add Conduit и Add State Alias.

- State — состояние, основная нода машины состояний. Каждое состояние представляет состояние анимации персонажа, например: Idle, Walk, Run. Количество состояний не ограничено. Каждому следует давать понятное и логичное имя.

Внутри каждого State расположен собственный Anim Graph, описывающий логику формирования позы: какую анимацию воспроизводить, как смешивать анимации с помощью Blend Nodes, Sequence Player, Blend Space и других элементов.
Все узлы внутри State формируют единую цепочку обработки позы. Результат подключается к Output Animation Pose — выходу состояния, возвращающему итоговую позу обратно в State Machine. Она затем используется при переходах и смешивании с другими состояниями.

- Conduit — вспомогательный логический узел. Он упрощает сложную логику переходов, когда из одного состояния есть несколько направлений переходов или требуется общая проверка условий. Сначала выполняется проверка внутри Conduit, после чего происходит переход в конкретное состояние. Это устраняет дублирование условий в переходах.

- State Alias — специальная нода для ссылки сразу на несколько состояний. Она облегчает структуру графа, сокращает количество пересекающихся переходов и позволяет переиспользовать состояния. Alias не содержит собственной логики — он просто ссылается на состояния, указанные в Details. Например, чтобы перейти в состояние Jump из Locomotion и из Land, нужно создать два перехода: от Locomotion к Jump и от Land к Jump.

Можно вместо этого создать Alias, например To Jump, и в его настройках указать состояния Locomotion и Land. Тогда достаточно создать одну связь — от To Jump к Jump.

Этот простой пример уменьшает число переходов с двух до одного. В более сложных проектах Alias значительно сокращает граф, заменяя множество связей одной от Alias.
Transitions — переходы между состояниями
Состояния внутри State Machine соединяются односторонними переходами (Transitions). Чтобы создать переход, подведите курсор к краю состояния, нажмите левую кнопку и перетащите линию к другому состоянию. Это создаст односторонний переход.
Первый переход обычно создаётся от Entry к базовому состоянию (например, Idle), что означает автоматический переход в это состояние при запуске машины.

Для настройки условий перехода дважды кликните по стрелке перехода, откроется граф Transition Rule. Его ключевая нода — Result, принимающая логическое значение: True разрешает переход, False запрещает. Логика может, например, проверять скорость персонажа и разрешать переход при скорости больше 5.

В панели Details для выбранного перехода также можно использовать дополнительные настройки:
- Automatic Rule Based on Sequence Player — включает автоматический переход по окончании текущей анимации (подходит для одноразовых типов анимаций, как Jump Start).
- Blend Settings — Blend Time (время смешивания) и Blend Curve (кривая смешивания). Эти параметры определяют длительность и плавность перехода между состояниями.

Таким образом, State Machine в Animation Blueprint — это основной инструмент для организации логики переключения между различными анимационными состояниями персонажа. Она позволяет структурировать анимации в виде набора State (состояний) и Transition (переходов) между ними, управляемых условиями.
State Machine создаётся в Anim Graph и возвращает итоговую позу, сформированную её внутренней логикой. Внутри машины состояний располагаются State, Conduit и State Alias, которые используются для построения структуры анимационных состояний и управления переходами между ними.
Каждое State содержит собственный Anim Graph, в котором определяется логика проигрывания и смешивания анимаций. Итоговая поза состояния возвращается через узел Output Animation Pose и используется машиной состояний при формировании финальной анимации.
Переходы между состояниями задаются через Transition Rules, которые определяют условия активации перехода. Эти условия обычно основаны на переменных Animation Blueprint (например, скорость персонажа, состояние прыжка, направление движения), которые обновляются каждый кадр в Event Graph.
Saved / Use Cache Pose
При построении логики анимаций часто возникает ситуация, когда одну и ту же позу необходимо использовать в нескольких местах Anim Graph. Например, поза может быть получена в результате работы Blend-нод или целой State Machine, после чего её нужно подать сразу в несколько других узлов.
Однако у Anim Graph есть ограничение: выходной пин позы можно напрямую подключить только к одной ноде. То есть одну и ту же позу нельзя просто разветвить и использовать одновременно в нескольких местах графа.
Для решения этой задачи в Animation Blueprint существует механизм кэширования поз — Saved Pose / Use Cached Pose. Он позволяет один раз вычислить позу, сохранить её в кэш и затем использовать эту сохранённую позу многократно в разных частях Anim Graph.
По сути, Cached Pose можно представить как своеобразную переменную, в которую сохраняется уже рассчитанная поза. После этого эта «переменная» может использоваться как входная поза для любых других нод графа.
Чтобы создать кэш позы, необходимо вытянуть линию из выходного пина той ноды, которая формирует нужную позу, и в контекстном меню выбрать команду New Save Cached Pose.

В результате на графе появится нода Save Cached Pose, которая будет сохранять рассчитанную позу. Для удобства и читаемости графа рекомендуется давать кэшу понятное имя, например LocomotionCache или BaseMovementPose.

После того как поза сохранена, её можно использовать в других частях графа. Для этого в контекстном меню необходимо найти Use Cached Pose ‘указать имя ранее созданного кэша’. На графе появится нода, например Use Cached Pose ‘LocomotionCache’, которая возвращает сохранённую позу.
Такую ноду можно использовать неограниченное количество раз и подключать её как входящую позу для различных узлов, например для Blend-нод, Layered Blend per Bone, других State Machine, аддитивных анимаций или непосредственно для Output Pose.

Использование Cached Pose позволяет повторно использовать уже вычисленную позу, избегать дублирования сложных цепочек анимационных нод и делает структуру Anim Graph более удобной и читаемой. Кроме того, это может положительно влиять на производительность, поскольку сложные вычисления позы выполняются один раз, а затем результат используется из кэша в разных частях графа.
Пример логики Anim Graph / State Machine
Рассмотрим пример организации вычисления поз в Anim Graph и работы State Machine на основе стандартного шаблона проекта от третьего лица в Unreal Engine (версия 5.7). В данном проекте анимация персонажа реализована через Animation Blueprint, расположенный по пути: /Game/Characters/Mannequins/Anims/Unarmed. Сам ассет называется ABP_Unarmed.
Логика Anim Graph
Открыв данный Animation Blueprint и перейдя на вкладку Anim Graph, можно увидеть, что логика формирования итоговой позы построена на основе двух State Machine:
- Locomotion
- Main States

Сначала вычисляется поза в машине состояний Locomotion. Результат её работы сохраняется в кэш с помощью узла Save Cached Pose. Как мы увидим чуть позже, этот кэш далее используется как базовая поза в другой машине состояний — Main States.
Таким образом, первая машина состояний отвечает за базовое движение персонажа, а вторая дополняет эту логику более сложными состояниями, связанными с прыжками и падением.
Поза, полученная из Main States, далее проходит через несколько дополнительных узлов обработки. В поток анимации добавляется Slot, который позволяет накладывать Animation Montage (например атаки, перезарядку или другие действия) поверх основной анимации. После этого поза дополнительно обрабатывается узлом Control Rig, который используется для процедурной корректировки положения ступней персонажа при ходьбе по наклонным поверхностям, ступеням или неровному ландшафту.
В результате вся эта цепочка вычислений в конце подключается к узлу Output Pose, который возвращает итоговую позу персонажа для текущего кадра.
Логика State Machine: Locomotion
Перейдя внутрь State Machine: Locomotion, можно увидеть, что она реализует базовую систему передвижения персонажа. В данной машине состояний используются два основных состояния:
- Idle
- Walk / Run

Между этими состояниями настроены переходы, зависящие от того, движется персонаж или нет.
Внутри состояния Idle используется узел Sequence Player, который проигрывает анимацию покоя персонажа.

В состоянии Walk / Run используется Blend Space Player, который воспроизводит Blend Space BS_Idle_Walk_Run, отвечающий за движение персонажа. Этот Blend Space зависит от двух параметров:
- Ground Speed — скорость движения персонажа по поверхности.
- Direction — направление движения относительно направления взгляда персонажа.

Благодаря Blend Space персонаж может плавно переходить между анимациями движения вперёд, назад и в стороны.
Переход из состояния Idle в Walk / Run происходит тогда, когда персонаж начинает двигаться. Это определяется переменной Should Move, которая возвращает значение True, если скорость персонажа превышает заданный порог.

Обратный переход из Walk / Run в Idle происходит тогда, когда персонаж прекращает движение и переменная Should Move принимает значение False.

Логика State Machine: Main States
Машина состояний Main States имеет более сложную структуру и отвечает за обработку прыжков, падения и приземления персонажа.

Базовым состоянием этой машины является кэш позы, полученной из Locomotion. Таким образом, когда персонаж находится на земле и не выполняет специальных действий, используется обычная анимация движения или покоя.
Далее в этой машине состояний реализована логика переходов между следующими состояниями:
- Jump
- Fall Loop
- Land
Для упрощения структуры переходов используются State Alias.
Первый Alias называется To Falling. Он используется как общий переходный узел для состояний Locomotion и Land, когда персонаж начинает падать. Из этого Alias настроены переходы в состояния Jump и Fall Loop.

Состояние Jump проигрывает анимацию старта прыжка. Состояние Fall Loop проигрывает циклическую анимацию свободного падения.
Если персонаж начинает падать (переменная IsFalling = True), но его вертикальная скорость не превышает определённый порог, машина состояний сразу переходит в состояние Fall Loop.

Если же персонаж начинает падение и его вертикальная скорость по оси Z больше 100, то считается, что персонаж совершил активный прыжок.

В этом случае происходит переход в состояние Jump, в котором проигрывается анимация начала прыжка. После завершения этой анимации происходит автоматический переход в состояние Fall Loop. Этот переход реализован через опцию Automatic Rule Based on Sequence Player, которая автоматически активирует переход после окончания анимации.

После состояния падения необходимо обработать приземление персонажа. Однако приземление может происходить из двух разных состояний:
- из Fall Loop (обычное падение),
- из Jump (если персонаж только начал прыжок, но сразу приземлился).
Чтобы упростить структуру переходов, используется второй State Alias, называемый To Land. К нему подключены состояния Jump и Fall Loop.

Из этого Alias выполняется переход в состояние Land, когда персонаж перестает находиться в воздухе, то есть когда переменная IsFalling становится равной False.

Само состояние Land проигрывает анимацию приземления персонажа.
После завершения анимации приземления происходит автоматический переход обратно в базовое состояние Locomotion через опцию Automatic Rule Based on Sequence Player, либо же, если переменная ShouldMove = True, то есть персонаж начал движение. В этом случае система анимации снова возвращается к стандартной логике движения персонажа.
Animation Blueprint: краткий итог
Animation Blueprint в Unreal Engine — это система управления анимацией Skeletal Mesh, которая определяет, какая анимация должна воспроизводиться в текущий момент и как она должна смешиваться с другими. Он разделён на Event Graph (вычисляет состояние персонажа: скорость, падение, направление и т.д.) и Anim Graph (формирует итоговую позу через проигрывание, смешивание и модификацию анимаций). Таким образом, логика состояния и визуальное представление анимации чётко разделены.
Для структурирования сложного поведения используется State Machine — система состояний (Idle, Walk, Jump, Fall и др.) с управляемыми переходами по заданным условиям. Дополнительно применяются Blend Space, аддитивные анимации, IK, Control Rig и Cached Pose (кэширование поз), что позволяет создавать гибкие, масштабируемые и производительные анимационные системы, динамически реагирующие на действия персонажа.
Напоминаю про мою бесплатную книгу по Blueprint для Unreal Engine.
Основная цель книги — дать общий, целостный и понятный обзор системы Blueprint. Книга предлагает взгляд с высоты «птичьего полёта» — ясную и чёткую карту игрового мира Unreal Engine, которая поможет увидеть ключевые взаимосвязи и понять, как устроена система визуального скриптинга.
Зарегистрироваться в ЛК и скачать книгу [Blueprints. Взгляд с высоты «птичьего полёта»]










