Друзья, приветствую, с Вами Будуев Антон. В данной статье мы в качестве справочной информации обсудим Blueprint-функции категории Pose (работа с позой) компонента Skinned Mesh Component в Unreal Engine (UE4, UE5).
Функции этой категории включают методы, позволяющие работать с позой скелетного меша, то есть с положением и трансформацией костей в их исходном (референсном) состоянии, а также с вычислением изменений относительно этой позы. Эти функции позволяют устанавливать связь с другим компонентом для синхронизации позы (лидер-последователь), получать локальные позиции и трансформации костей в референсной позе, вычислять дельты трансформаций относительно базовой кости, а также извлекать углы вращения (Twist и Swing) для анимационных целей.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
* Skinned Mesh Component — базовый класс для всех компонентов, поддерживающих деформируемую 3D-модель, которая может быть связана со скелетом. Компонент поддерживает работу с костями, сокетами, весами скиннинга, морф-целями и деформерами.
Общие понятия категории
- Pose (поза) — это совокупность трансформаций всех костей скелета в определённый момент времени или в исходном (референсном) состоянии. В контексте рассматриваемой категории функций, поза описывает положение, ориентацию и масштаб каждой кости скелетного меша, которые вместе формируют текущую конфигурацию модели.
- Reference Pose (референсная поза) — это базовое, исходное положение и ориентация всех костей скелета, в котором скелетный меш был создан и экспортирован из DCC-пакета (например, Blender, Maya, 3ds Max). В Unreal Engine референсная поза используется как точка отсчёта для всех анимаций и вычислений дельта-трансформаций костей.
- Transform (трансформация) — это совокупность параметров, описывающих положение, вращение и масштаб объекта (например, кости скелета) в пространстве. Трансформация обычно представлена структурой Transform, которая включает три компонента:
- Location (местоположение) — позиция объекта в пространстве (Vector).
- Rotation (вращение) — ориентация объекта (Rotator).
- Scale (масштаб) — изменение размера объекта по осям (Vector).
- Delta Transform (дельта-трансформация) — это разница между текущей трансформацией (положением, вращением и масштабом) кости и её трансформацией в референсной (базовой) позе. Используется для вычисления изменений, которые произошли с костью относительно её исходного состояния.
- Leader Pose Component — это специальное свойство и механизм, позволяющий одному компоненту скелетного меша (лидеру) задавать трансформации костей, которые автоматически используются другими компонентами-«последователями» (Followers), привязанными к этому лидеру. Если компоненту скелетного меша установлен Leader Pose Component, он не использует собственные трансформации костей, а копирует их у лидера. Это применяется, когда в одном Акторе используется несколько скелетных мешей, разделяющих один и тот же скелет, например, для модульных персонажей (раздельные тело, одежда, броня и т.д.).
- Twist и Swing — это два угла вращения кости относительно её локальной оси, которые используются для более точного анализа и управления анимацией скелета:
- Twist (твист) — это угол вращения кости вокруг её собственной оси, то есть вращение вокруг продольной оси кости. В контексте скелетной анимации Twist описывает, насколько кость повернута вокруг своей главной оси по сравнению с её положением в референсной позе.
- Swing (свинг) — это угол вращения кости, который описывает отклонение кости от её главной (продольной) оси, то есть вращение вокруг осей, перпендикулярных основной оси кости. Swing показывает, насколько кость «отклонена в сторону» относительно своего исходного положения (референсной позы), не затрагивая вращение вокруг самой себя (это делает Twist).
Set Leader Pose Component

Blueprint-функция Set Leader Pose Component в Unreal Engine — метод класса Skinned Mesh Component, который устанавливает компонент-лидер позы (Leader Pose Component) для данного компонента скелетного меша, позволяя синхронизировать трансформации костей с другим компонентом скелетного меша.
Официальная справка: Set LeaderPoseComponent for this component.
Перевод: Set Leader Pose Component — устанавливает Leader Pose Component для этого компонента.
Функция Set Leader Pose Component позволяет назначить другому компоненту скелетного меша роль лидера позы для текущего компонента. После установки, текущий компонент перестает использовать собственные трансформации костей и начинает копировать их у лидера. Это обеспечивает синхронизацию анимации между несколькими скелетными мешами, использующими один и тот же скелет, например, для модульных персонажей (отдельные тело, одежда, броня и т.д.). Параметры позволяют контролировать необходимость обновления в случае повторной установки того же лидера и выполнение тика позы у последователей.
Функция используется для организации синхронизации анимации между несколькими компонентами скелетного меша в одном Акторе, позволяя одному компоненту (лидеру) задавать трансформации костей, которые автоматически применяются к другим компонентам (последователям), что особенно важно для модульных персонажей и сложных анимационных систем, где требуется согласованное движение всех частей.
Параметры функции:
- New Leader Bone Component (Skinned Mesh Component) — новый компонент-лидер позы, трансформации костей которого будут копироваться. Это указатель на другой компонент скелетного меша (Skinned Mesh Component), который становится источником позы для текущего компонента.
- Force Update (bool, по умолчанию False) — принудительное обновление. Параметр управляет тем, будет ли функция выполнять операцию, если переданный лидер уже установлен как текущий:
- False (по умолчанию) — функция просто ничего не делает, если новый лидер совпадает с уже установленным, чтобы избежать лишних вычислений и обновлений.
- True — функция выполнит операцию даже если новый лидер совпадает с текущим, что может потребоваться для принудительного обновления состояния или пересчёта позы.
- In Follower Should Tick Pose (bool, по умолчанию False) — параметр определяет, будет ли компонент-последователь (Follower) продолжать выполнять функцию обновления позы (Tick Pose) каждый кадр после установки лидера.
- False (по умолчанию) — компонент-последователь не будет самостоятельно обновлять свою позу, а просто копирует её у лидера. Это экономит ресурсы, так как вычисления выполняются только один раз у лидера.
- True — компонент-последователь будет продолжать выполнять функцию Tick Pose, что может потребоваться в особых случаях, например, если у последователя есть собственные уникальные модификации позы или дополнительные анимационные слои.
Общие понятия в контексте использования функции:
- Leader Pose Component (компонент-лидер позы) — компонент скелетного меша, у которого копируются трансформации костей для синхронизации анимации.
- Follower (последователь) — компонент скелетного меша, который копирует трансформации костей у лидера.
- Tick Pose — функция обновления позы анимации компонента в каждом кадре.
Get Ref Pose Position

Blueprint-функция Get Ref Pose Position в Unreal Engine — метод класса Skinned Mesh Componentt, который возвращает позицию кости в локальном пространстве относительно родителя в референсной (исходной) позе скелета.
Официальная справка: Gets the local-space position of a bone in the reference pose.
Перевод: Get Ref Pose Position — возвращает позицию кости в локальном пространстве в референсной позе.
Функция Get Ref Pose Position возвращает позицию кости с заданным индексом в локальной системе координат (относительно её родительской кости) в референсной (базовой) позе скелета. Эта информация берётся из исходной структуры скелета, в которой кости располагаются в стандартном положении без анимаций. Полученное значение не зависит от текущей анимации или трансформаций, а отражает «нулевое» состояние скелета.
Функция используется для получения базовой позиции кости в локальном пространстве скелета, что важно при анализе структуры скелета, создании и отладке анимаций, вычислении дельта-трансформаций, а также для процедурной генерации движений или позиционирования объектов относительно костей в их исходном положении.
Например, если у скелета есть рука и вы хотите узнать, где в референсной позе находится кость «локоть» относительно кости «плечо», вы передаёте индекс «локтя» в функцию Get Ref Pose Position, и она возвращает вектор, который указывает положение локтя относительно плеча в исходной позе.
Параметры функции:
- Bone Index (Int) — индекс кости, для которой требуется получить позицию в локальном пространстве референсной позы. Индексы определяются структурой скелета и уникальны для каждой кости.
- Return Value (Vector) — возвращаемое значение: позиция кости в локальном пространстве относительно её родителя в референсной позе. Это положение не зависит от текущей анимации или трансформации, а отражает исходную («нулевую») конфигурацию скелета, используемую как базовая для всех анимаций.
Общие понятия в контексте использования функции:
- Reference Pose, Ref Pose (референсная поза) в Unreal Engine — это базовая, исходная поза скелета персонажа, в которой заданы начальные трансформации всех костей (позиция, вращение, масштаб) до применения каких-либо анимаций.
- Local Space (локальное пространство) — система координат, в которой позиция кости определяется относительно её родительской кости.
- Bone Index (индекс кости) — уникальный числовой идентификатор кости в структуре скелета.
Get Ref Pose Transform

Blueprint-функция Get Ref Pose Transform в Unreal Engine — метод класса Skinned Mesh Component, который возвращает локальную трансформацию (позицию, вращение и масштаб) кости относительно её родителя в референсной (исходной) позе скелета.
Официальная справка: Gets the local-space transform of a bone in the reference pose.
Перевод: Get Ref Pose Transform — возвращает трансформацию кости в локальном пространстве относительно референсной позы.
Функция Get Ref Pose Transform возвращает объект типа Transform, который содержит позицию, вращение и масштаб кости с заданным индексом в локальном пространстве (относительно её родительской кости) в референсной (базовой) позе скелета. Эти данные отражают исходное состояние скелета, в котором он был создан, и не зависят от текущей анимации или других трансформаций. Полученная трансформация используется как эталон для вычисления изменений в анимации и других процедурных операций.
Функция используется для получения полной локальной трансформации кости в референсной позе, что важно при анализе структуры скелета, создании и отладке анимаций, вычислении дельта-трансформаций, а также для процедурной анимации, позиционирования объектов относительно костей и других задач, где требуется знать базовое положение, вращение и масштаб кости.
Например, если у скелета есть кость «предплечье» и вы хотите узнать её позицию, вращение и масштаб относительно «плеча» в референсной позе, вы передаёте индекс кости «предплечье» в функцию Get Ref Pose Transform, и она возвращает объект Transform, который содержит всю необходимую информацию для этой кости в базовом состоянии.
Параметры функции:
- Bone Index (Int) — индекс кости, для которой требуется получить локальную трансформацию в референсной позе. Индексы уникальны для каждой кости в структуре скелета и определяются при его создании.
- Return Value (Transform) — возвращаемое значение: локальная трансформация (позиция, вращение, масштаб) кости относительно её родителя в референсной позе. Возвращаемое значение не зависит от текущей анимации или других изменений, а отражает «нулевое» состояние скелета.
Общие понятия в контексте использования функции:
- Reference Pose, Ref Pose (референсная поза) в Unreal Engine — это базовая, исходная поза скелета персонажа, в которой заданы начальные трансформации всех костей (позиция, вращение, масштаб) до применения каких-либо анимаций.
- Local Space (локальное пространство) — система координат, в которой позиция кости определяется относительно её родительской кости.
- Bone Index (индекс кости) — уникальный числовой идентификатор кости в структуре скелета.
Get Delta Transform From Ref Pose

Blueprint-функция Get Delta Transform From Ref Pose в Unreal Engine — метод класса Skinned Mesh Component, который возвращает дельта-трансформацию (разницу в положении, вращении и масштабе) выбранной кости относительно базовой кости или её родителя, вычисленную между текущим состоянием и референсной позой.
Официальная справка: Get delta transform from reference pose based on BaseNode.
Перевод: Get Delta Transform From Ref Pose — возвращает дельта-трансформацию относительно референсной позы на основе базовой кости.
Функция Get Delta Transform From Ref Pose вычисляет разницу между текущей трансформацией указанной кости (Bone Name) и её трансформацией в референсной позе, причём разница выражается в пространстве базовой кости (Base Name). Если базовая кость не указана, за базу берётся родительская кость.
Дельта-трансформация включает изменения по позиции, вращению и масштабу, и позволяет определить, как изменилась кость относительно исходного состояния скелета. Для расчёта используется актуальное состояние костей за предыдущий кадр, поэтому при использовании в Anim Graph возможна задержка на один кадр.
Функция используется для анализа и вычисления изменений положения, вращения и масштаба кости относительно её исходного состояния в референсной позе, что важно для создания и отладки анимаций, процедурной анимации, IK-систем, а также для передачи или применения изменений между костями или различными скелетными мешами в одном Акторе.
Например, если вы хотите узнать, насколько «кисть» руки сместилась и повернулась относительно «предплечья» по сравнению с референсной позой, вы передаёте:
- Bone Name = «Hand»;
- Base Name = «Forearm».
Функция вернёт объект Transform, описывающий разницу между текущим и базовым состоянием «кисти» в пространстве «предплечья».
Параметры функции:
- Bone Name (Name) — имя кости, для которой вычисляется дельта-трансформ. Указывается та кость, чьи изменения (относительно референсной позы) нужно получить. Имя должно существовать в текущем скелете, иначе результат будет некорректным или по умолчанию.
- Base Name (Name) — имя базовой кости (если не указано — используется родительская кость).
- Return Value (Transform) — возвращаемое значение: разница между текущим положением кости и её положением в референсной позе в пространстве, определяемом Base Name. Показывает, как изменилась выбранная кость относительно её исходного состояния (Reference Pose) в пространстве базовой кости.
Общие понятия в контексте использования функции:
- Reference Pose, Ref Pose (референсная поза) в Unreal Engine — это базовая, исходная поза скелета персонажа, в которой заданы начальные трансформации всех костей (позиция, вращение, масштаб) до применения каких-либо анимаций.
- Delta Transform (дельта-трансформация) — разница между текущей трансформацией кости и её трансформацией в референсной позе.
Get Twist And Swing Angle Of Delta Rotation From Ref Pose

Blueprint-функция Get Twist And Swing Angle Of Delta Rotation From Ref Pose в Unreal Engine — метод класса Skinned Mesh Component, который вычисляет углы твиста (вращения вокруг главной оси) и свинга (отклонения от главной оси) для дельта-вращения выбранной кости относительно её положения в референсной (исходной) позе в локальном пространстве.
Официальная справка: Get Twist and Swing Angle in Degree of Delta Rotation from Reference Pose in Local space.
Перевод: Get Twist And Swing Angle Of Delta Rotation From Ref Pose — получает углы скручивания и качания кости относительно референсной позы.
Функция Get Twist And Swing Angle Of Delta Rotation From Ref Pose берёт текущее локальное вращение выбранной кости и её локальное вращение в референсной позе, вычисляет между ними дельта-вращение и декомпозирует его на две составляющие:
- Twist (вращение вокруг главной оси кости);
- Swing (отклонение кости от главной оси).
Результирующие углы возвращаются в градусах через выходные параметры. Если имя кости указано некорректно, функция возвращает False.
Используется функция для анализа и контроля вращения костей в скелетной анимации, когда важно точно знать, насколько кость повернулась вокруг своей оси (Twist) и насколько она отклонена от неё (Swing). Это критично для физически корректной анимации суставов, предотвращения неестественных перекручиваний, а также для IK-систем и процедурных анимаций, где требуется раздельное управление этими компонентами вращения.
Например, у вас есть кость «предплечье», и вы хотите узнать, насколько она повернулась вокруг своей оси (Twist) и насколько отклонилась вбок (Swing) по сравнению с исходным положением. Вы вызываете функцию Get Twist And Swing Angle Of Delta Rotation From Ref Pose с именем кости «предплечье» и получаете два значения: угол твиста (например, 30° — кость слегка перекручена) и угол свинга (например, 15° — кость немного отклонена в сторону). Эти значения можно использовать для ограничения движений или анализа анимации.
Параметры функции:
- Bone Name (Name) — имя кости, для которой вычисляются углы Twist и Swing.
- Out Twist Angle (float) — возвращаемое значение: угол скручивания (Twist) в градусах. Значение может быть положительным или отрицательным, в зависимости от направления вращения.
- Out Swing Angle (float) — возвращаемое значение: угол качания (Swing) в градусах. Значение всегда неотрицательное, обычно лежит в диапазоне от 0 до 180 градусов.
- Return Value (bool) — возвращаемое значение: указывает, удалось ли корректно вычислить углы Twist и Swing для заданной кости:
- True — вычисления прошли успешно, и значения Twist и Swing валидны;
- False — вычисления невозможны (например, если кость не найдена или входные данные некорректны), и значения углов использовать не стоит.
Общие понятия в контексте использования функции:
- Reference Pose, Ref Pose (референсная поза) в Unreal Engine — это базовая, исходная поза скелета персонажа, в которой заданы начальные трансформации всех костей (позиция, вращение, масштаб) до применения каких-либо анимаций.
- Twist (твист) — вращение кости вокруг её главной (продольной) оси.
- Swing (свинг) — отклонение кости вокруг осей, перпендикулярных главной оси.
- Delta Rotation (дельта-вращение) — разница между текущим вращением и вращением в референсной позе.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.