Друзья, приветствую, с Вами Будуев Антон. В данной статье мы в качестве справочной информации обсудим Blueprint-функции категории Bone (работа с костями) компонента Skinned Mesh Component в Unreal Engine (UE4, UE5).
Данная категория функций предназначена для получения информации о костях, их иерархии, видимости, а также для преобразования координат между мировым пространством и пространством кости. Эти функции позволяют находить кости по имени или индексу, получать родительские кости, проверять иерархические отношения между костями, скрывать и отображать кости, а также определять ближайшую кость к заданной позиции.
Работа с костями необходима для анимации, физики, привязки объектов и точного управления положением/вращением частей Skeletal Mesh в Акторе.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
* Skinned Mesh Component — базовый класс для всех компонентов, поддерживающих деформируемую 3D-модель, которая может быть связана со скелетом. Компонент поддерживает работу с костями, сокетами, весами скиннинга, морф-целями и деформерами.
Общие понятия категории
- Bone (кость) — это элемент иерархии скелета (Skeleton), который используется для управления деформацией и анимацией Skeletal Mesh. Кости образуют структуру, напоминающую биологический скелет: каждая кость может быть родителем или потомком другой, образуя «скелетную» иерархию, по которой двигаются и деформируются вершины меша.
- Bone Index — это числовой идентификатор, который указывает на конкретную кость в иерархии скелета или меша. Он используется для доступа к данным кости (например, трансформациям) в различных системах анимации и рендеринга.
- Bone Name (имя кости) — это уникальный идентификатор кости в скелетной структуре скелетного меша (Skeletal Mesh) Unreal Engine. Имя кости используется для поиска, идентификации и управления костями при работе с анимацией, физикой, привязкой объектов и другими функциями компонента скелетного меша.
- Parent Bone (родительская кость) — это кость, которая находится на уровень выше в иерархии скелета относительно другой кости (дочерней кости). В скелетной структуре каждая кость (кроме корневой) имеет одну родительскую кость, от которой она наследует трансформацию (позицию, вращение, масштаб).
- Bone Visibility (видимость кости) — это система управления видимостью отдельных костей скелетного меша в Unreal Engine. Она позволяет скрывать или отображать кости, что влияет на отображение соответствующих вершин меша и может использоваться для анимации, кастомизации, оптимизации и управления физикой.
- Bone Space (пространство кости) — это система координат, локальная для конкретной кости в скелетном меше. В этом пространстве позиция (и вращение) объекта или точки выражается относительно самой кости, а не относительно компонента или мировых координат.
- World Space (пространство мира) — это положение и ориентация кости в глобальной системе координат уровня.
- Skeletal Mesh (скелетная сетка) — это 3D-модель с костной структурой, предназначенная для анимации и деформации в Unreal Engine. Используется для создания анимированных персонажей и сложных объектов.
- Physics Body (физическое тело) — это физический объект, который ассоциируется с костью скелетного меша (Skeletal Mesh) и используется для симуляции физики в Unreal Engine. Physics Body позволяет костям взаимодействовать с физическим миром: участвовать в столкновениях, реагировать на силы, гравитацию.
Get Bone Index

Blueprint-функция Get Bone Index в Unreal Engine — это метод класса Skinned Mesh Component, который возвращает индекс кости по её имени для текущего скелетного меша, используемого этим компонентом. Если кость не найдена, возвращает INDEX_NONE.
Официальная справка: Find the index of bone by name.
Перевод официальной справки: Get Bone Index — ищет индекс кости по имени.
Функция Get Bone Index выполняет поиск кости по её имени (Bone Name) в текущем скелетном меше, который используется данным компонентом. Если кость с таким именем существует, возвращается её индекс (целое число). Если кость не найдена, возвращается специальное значение INDEX_NONE.
Индекс кости необходим для большинства операций с костями: трансформаций, анимаций, работы с иерархией.
Параметры функции:
- Bone Name (Name) — имя кости, которую нужно найти.
- Return Value (int) — возвращаемое значение: индекс найденной кости в массиве костей текущего Skeletal Mesh. Если кость не найдена, возвращается INDEX_NONE.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Bone Index (индекс кости) — целочисленный идентификатор кости в массиве костей текущего Skeletal Mesh.
- INDEX_NONE: специальная константа Unreal Engine, означающая «не найдено» (обычно —1).
Get Bone Name

Blueprint-функция Get Bone Name в Unreal Engine — это метод класса Skinned Mesh Component, который возвращает имя кости по её индексу в текущем скелетном меше компонента.
Официальная справка: Get Bone Name from index.
Перевод официальной справки: Get Bone Name — возвращает имя кости по индексу.
Функция Get Bone Name позволяет получить уникальное имя кости по её целочисленному индексу в массиве костей текущего скелетного меша, используемого этим компонентом. Это имя используется для идентификации кости в различных операциях: анимация, трансформации, привязка объектов и т.д.
Если индекс некорректный, возвращается специальное значение (None).
Параметры функции:
- Bone Index (int) — индекс кости, для которой нужно получить имя. Индексация ведётся по массиву костей текущего скелетного меша.
- Return Value (Name) — возвращаемое значение: имя кости по указанному индексу. Если индекс некорректный, возвращается None.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Bone Index (индекс кости) — целочисленный идентификатор кости в массиве костей текущего Skeletal Mesh.
- None — специальное значение, означающее отсутствие валидного имени.
Get Parent Bone

Blueprint-функция Get Parent Bone в Unreal Engine — это метод класса Skinned Mesh Component, который возвращает имя родительской кости для указанной кости. Если кость не существует или это корневая кость, возвращает None.
Официальная справка: Get Parent Bone of the input bone.
Перевод официальной справки: Get Parent Bone — возвращает родительскую кость для указанной кости.
Функция Get Parent Bone ищет родительскую кость для кости с заданным именем в текущем скелетном меше компонента. Если кость найдена и не является корневой, возвращается имя её родителя. Если кость не найдена или она является корневой (не имеет родителя), возвращается специальное значение None.
Использование функции позволяет определять иерархию костей для анимации, трансформаций и других операций.
Параметры функции:
- Bone Name (Name) — имя кости, для которой требуется найти родителя.
- Return Value (Name) — возвращаемое значение: имя родительской кости. Если кость не найдена или она корневая, возвращается None.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Parent Bone (родительская кость) — кость, находящаяся на уровень выше в иерархии относительно рассматриваемой кости.
- Root Bone (корневая кость) — самая верхняя кость в иерархии, не имеющая родителя.
- None — специальное значение, означающее отсутствие валидного имени (например, если кость не найдена или не имеет родителя).
Bone Is Child Of

Blueprint-функция Bone Is Child Of в Unreal Engine — это метод класса Skinned Mesh Component, который проверяет, является ли кость с именем Bone Name потомком (строго дочерней костью) кости с именем Parent Bone Name.
Официальная справка: Tests if BoneName is child of (or equal to) ParentBoneName.
Перевод официальной справки: Bone Is Child Of — проверяет, является ли Bone Name дочерней костью (или равной) Parent Bone Name.
Функция Bone Is Child Of определяет, находится ли кость с именем Bone Name в иерархии скелета ниже кости с именем Parent Bone Name (то есть, является ли она её потомком).
Важно: функция возвращает True только если кости не совпадают, то есть, кость не считается дочерней самой себе. Если кости совпадают или не имеют отношения «родитель-дочерний», возвращается False.
Используется функция обычно для проверки иерархии костей при анимации, трансформациях и привязке объектов с целью определения, можно ли выполнять определённые действия с костью, основываясь на её положении в структуре скелета или в логике, связанной с наследованием трансформаций между костями.
Параметры функции:
- Bone Name (Name) — имя кости, которую проверяют на «дочерность».
- Parent Bone Name (Name) — имя предполагаемой родительской кости.
- Return Value (bool) — возвращаемое значение. Результат проверки:
- True — если кость с именем Bone Name является строго дочерней по отношению к Parent Bone Name.
- False — если кости совпадают или не являются «родитель-дочерней».
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Parent Bone (родительская кость) — кость, находящаяся на уровень выше в иерархии относительно рассматриваемой кости.
- Root Bone (корневая кость) — самая верхняя кость в иерархии, не имеющая родителя.
- Bone Hierarchy (иерархия костей) — древовидная структура, определяющая связи «родитель-дочерний» между костями скелета.
Hide Bone By Name

Blueprint-функция Hide Bone By Name в Unreal Engine — это метод класса Skinned Mesh Component, который скрывает указанную кость по имени. В текущей реализации это достигается установкой масштаба кости в 0. В отличие от скрытия по индексу, функция отслеживает список скрытых костей и обновляет его при изменении LOD.
Официальная справка: Hides the specified bone with name.
Перевод официальной справки: Hide Bone By Name — скрывает указанную кость по имени.
Функция Hide Bone By Name скрывает кость с заданным именем в текущем скелетном меше компонента. Скрытие реализовано путём установки масштаба кости в 0, что делает связанные с ней вершины невидимыми. В отличие от скрытия по индексу, функция поддерживает отслеживание списка скрытых костей и автоматически обновляет этот список при смене уровня детализации (LOD).
Второй параметр (Phys Body Option) определяет, как поступать с физическими телами, привязанными к скрываемой кости (например, оставить их, либо удалить).
Используется функция для временного скрытия частей скелетного меша и связанных с ними физических тел (например, при кастомизации персонажа, повреждениях, смене экипировки или в целях оптимизации).
Параметры функции:
- Bone Name (Name) — имя кости, которую требуется скрыть. Уникальный идентификатор кости в скелетном меше.
- Phys Body Option (Enum) — опция, определяющая, что делать с физическими телами, привязанными к скрываемой кости:
- PBO_None — ничего не делать с физическим телом.
- PBO_Term — удалить физическое тело (невозможно восстановить при повторном отображении кости).
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Physics Body (физическое тело) — физический объект, связанный с костью, используемый для симуляции физики.
- Bone Scale (масштаб кости) — масштаб кости. Установка в 0 делает связанные вершины невидимыми.
- LOD (Level of Detail) — уровень детализации меша. Рассматриваемая функция Hide Bone By Name учитывает обновление скрытых костей при смене LOD.
Un Hide Bone By Name

Blueprint-функция Un Hide Bone By Name в Unreal Engine — это метод класса Skinned Mesh Component, который отображает (делает видимой) ранее скрытую кость по имени. В отличие от скрытия по индексу, функция отслеживает список костей и обновляет его при изменении LOD.
Официальная справка: UnHide the specified bone with name.
Перевод официальной справки: Un Hide Bone By Name — отображает (делает видимой) указанную кость по имени.
Функция Un Hide Bone By Name отменяет скрытие кости с заданным именем в текущем скелетном меше компонента. Если кость была скрыта (масштаб кости был установлен в 0), функция возвращает ей видимость (масштаб восстанавливается).
В отличие от скрытия по индексу, функция поддерживает список скрытых костей и автоматически обновляет его при смене уровня детализации (LOD).
Используется функция для восстановления видимости частей скелетного меша и связанных с ними физических тел, ранее скрытых (например, при кастомизации персонажа, анимациях повреждений, смене экипировки).
Параметры функции:
Bone Name (Name) — имя кости, которую требуется сделать видимой. Уникальный идентификатор кости в скелетном меше.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Physics Body (физическое тело) — физический объект, связанный с костью, используемый для симуляции физики.
- Bone Scale (масштаб кости) — масштаб кости. Установка в 0 делает связанные вершины невидимыми.
- LOD (Level of Detail) — уровень детализации меша. Рассматриваемая функция Un Hide Bone By Name учитывает обновление скрытых костей при смене LOD.
Is Bone Hidden By Name

Blueprint-функция Is Bone Hidden By Name в Unreal Engine — это метод класса Skinned Mesh Component, который определяет, скрыта ли указанная кость по имени в текущем скелетном меше компонента.
Официальная справка: Determines if the specified bone is hidden.
Перевод официальной справки: Is Bone Hidden By Name — определяет, скрыта ли указанная кость.
Функция Is Bone Hidden By Name проверяет, скрыта ли кость с заданным именем в текущем скелетном меше компонента.
* Скрытие кости обычно реализуется установкой масштаба кости в 0 или специальным состоянием видимости. При этом, если кость скрыта напрямую или из-за того, что её родитель скрыт, функция также вернёт True. Если кость видима, вернёт False.
Используется функция для проверки текущего состояния видимости конкретной кости (например, при кастомизации персонажа, анимациях повреждений, управлении физикой).
Параметры функции:
- Bone Name (Name) — имя кости, которую требуется проверить на скрытие (уникальный идентификатор кости в скелетном меше).
- Return Value (bool) — возвращаемое значение. Результат проверки:
- True — если кость скрыта (явно или по иерархии).
- False — если кость видима.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- Bone Visibility (видимость кости) — состояние, определяющее, отображается ли кость и связанные с ней вершины меша.
- Bone Hidden (скрытие кости) — состояние, при котором кость и её дочерние кости не отображаются (например, при масштабе 0).
Transform To Bone Space

Blueprint-функция Transform To Bone Space в Unreal Engine — это метод класса Skinned Mesh Component, который преобразует позицию и вращение из мирового пространства в пространство, относительное к выбранной кости скелетного меша. Это полезно, если известна позиция объекта в мире, но для привязки к кости требуется координата относительно кости.
Официальная справка: Transform a location/rotation from world space to bone relative space.
Перевод официальной справки: Transform To Bone Space — преобразует позицию/вращение из мирового пространства в пространство, относительное к кости.
Используется Transform To Bone Space для преобразования позиции и вращения из мирового пространства (World Space) в пространство, локальное для выбранной кости скелетного меша (Bone Space), что необходимо при привязке объектов или компонентов к кости: например, если известно положение объекта в мире, но для корректной привязки требуется задать координаты относительно кости, эта функция позволяет вычислить такие значения автоматически.
Функция вычисляет, где эта точка окажется относительно выбранной кости, чтобы корректно использовать её для привязки или анимации.
Параметры функции:
- Bone Name (Name) — имя кости, относительно которой производится преобразование.
- In Position (Vector) — входная позиция в мировом пространстве.
- In Rotation (Rotator) — входное вращение в мировом пространстве.
- Out Position (Vector) — возвращаемое значение: преобразованная позиция в пространстве кости.
- Out Rotation (Rotator) — возвращаемое значение: преобразованное вращение в пространстве кости.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- World Space (мировое пространство) — глобальная система координат уровня.
- Bone Space (пространство кости) — локальная система координат относительно выбранной кости.
- Vector (вектор) — тип данных Unreal Engine для хранения 3D-позиций, состоящий из 3-float значений.
- Rotator (ротатор) — тип данных Unreal Engine для хранения вращения в трёх осях (Pitch, Yaw, Roll).
Transform From Bone Space

Blueprint-функция Transform From Bone Space в Unreal Engine — это метод класса Skinned Mesh Componentt, который преобразует позицию и вращение из пространства, локального для кости (Bone Space), в мировое пространство (World Space) для указанной кости скелетного меша.
Официальная справка: Transform a location/rotation in bone relative space to world space.
Перевод официальной справки: Transform From Bone Space — преобразует позицию/вращение из пространства, локального для кости, в мировое пространство.
Функция Transform From Bone Space используется для преобразования позиции и вращения из пространства, локального для выбранной кости скелетного меша (Bone Space), в мировое пространство (World Space), что необходимо, когда координаты объекта или компонента заданы относительно кости, а требуется узнать их положение и ориентацию в глобальной системе координат уровня для корректного взаимодействия с другими объектами или системами в Unreal Engine.
Параметры функции:
- Bone Name (Name) — имя кости, относительно которой производится преобразование.
- In Position (Vector) — позиция во внутреннем пространстве кости (Bone Space).
- In Rotation (Rotator) — вращение во внутреннем пространстве кости (Bone Space).
- Out Position (Vector) — возвращаемое значение: преобразованная позиция в мировом пространстве (World Space).
- Out Rotation (Rotator) — возвращаемое значение: преобразованное вращение в мировом пространстве (World Space).
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- World Space (мировое пространство) — глобальная система координат уровня.
- Bone Space (пространство кости) — локальная система координат относительно выбранной кости.
- Vector (вектор) — тип данных Unreal Engine для хранения 3D-позиций, состоящий из 3-float значений.
- Rotator (ротатор) — тип данных Unreal Engine для хранения вращения в трёх осях (Pitch, Yaw, Roll).
Get Num Bones

Blueprint-функция Get Num Bones в Unreal Engine — это метод класса Skinned Mesh Component, который возвращает количество костей в скелете текущего скелетного меша компонента.
Официальная справка: Returns the number of bones in the skeleton.
Перевод официальной справки: Get Num Bones — возвращает количество костей в скелете.
Функция Get Num Bones возвращает целое число, равное количеству костей, присутствующих в скелете текущего скелетного меша, используемого данным компонентом. Это значение соответствует размеру массива костей в Skeletal Mesh и включает все кости, используемые для анимации, трансформаций и других операций с мешем.
Используется Get Num Bones для получения общего количества костей в скелетном меше, что необходимо при переборе костей, анализе структуры скелета, создании пользовательских анимаций, работе с физикой, а также для отладки и автоматизации процессов, связанных с костями скелетного меша в Unreal Engine.
Параметры функции:
Return Value (int) — возвращаемое значение: количество костей в скелете текущего скелетного меша компонента.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Skeleton (скелет) — иерархическая структура костей, определяющая, как части меша могут двигаться и деформироваться.
- Skeletal Mesh (скелетный меш) — 3D-модель с костной структурой для анимации и деформации.
Find Closest Bone

Blueprint-функция Find Closest Bone в Unreal Engine — это метод класса Skinned Mesh Component, который находит ближайшую к заданной позиции кость скелетного меша и возвращает её имя. Можно дополнительно получить позицию этой кости в мировом пространстве, учитывать масштаб кости и фильтровать только кости с физическими телами.
Официальная справка: Finds the closest bone to the given location
Перевод официальной справки: Find Closest Bone — находит ближайшую кость к заданной позиции.
Функция Find Closest Bone осуществляет поиск ближайшей кости скелетного меша к заданной точке в мировом пространстве.
Она перебирает все кости и вычисляет расстояние от каждой кости до указанной позиции. При необходимости, функция может фильтровать кости: учитывать только те, у которых масштаб больше определённого значения (Ignore Scale), и/или только те, к которым привязано физическое тело (Require Physics Asset).
Имя ближайшей кости возвращается в качестве результата, а при необходимости также возвращается её мировая позиция.
Find Closest Bone используется для определения, какая кость скелетного меша находится ближе всего к заданной точке в мире, что полезно для реализации взаимодействия с персонажем (например, попадания, взаимодействия, привязки объектов), а также для навигации, анализа структуры скелета или автоматизации анимационных и физических сценариев, где важно знать ближайшую кость к определённой позиции.
Параметры функции:
- Test Location (Vector) — позиция в мировом пространстве, относительно которой ищется ближайшая кость.
- Ignore Scale (float, необязательный, по умолчанию 0.0) — если указано, будут учитываться только кости с масштабом больше этого значения.
- Require Physics Asset (bool, необязательный, по умолчанию False) — если указано значение True, будут рассматриваться только кости, имеющие физическое тело.
- Bone Location (Vector) — возвращаемое значение: возвращает мировую позицию найденной кости, либо (0,0,0), если кость не найдена.
- Return Value (Name) — возвращаемое значение: имя ближайшей найденной кости или None, если кость не найдена.
Общие понятия в контексте использования функции:
- Bone (кость) — элемент скелета Skeletal Mesh, управляющий трансформацией части меша.
- Bone Name (имя кости) — уникальное имя кости, присвоенное при создании скелета.
- World Space (мировое пространство) — глобальная система координат уровня.
- Physics Body (физическое тело) — физический объект, связанный с костью, используемый для симуляции физики.
- Bone Scale (масштаб кости) — масштаб кости (параметр Ignore Scale позволяет фильтровать кости по этому признаку).
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.