- Unreal Engine Scene Component
- Scene Component и Actor Component
- Настройки Details
- Transform
- Rendering
- Physics
- LOD
- Attach Scene Components и иерархия компонентов
- Ключевые особенности Scene Component
- Функции класса Scene Component
- Функции прикрепления компонентов
- Изменение локации компонентов
- Изменение поворота компонента
- Socket (сокеты)
- Векторы
- Physics (физика)
- Visible (видимость)
- Изменение масштаба
- Изменение трансформации
- Другие функции
Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим класс Scene Component в Unreal Engine или, как его ещё называют, компонент сцены в Blueprint UE5 (UE4).
Но, прежде чем разбираться с компонентом сцены, рекомендую изучить более детально саму концепцию компонентов в движке Анрил Энджин, сделать это Вы можете в отдельной статье: Unreal Engine Component.
Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.
Unreal Engine Scene Component
Scene Component в Unreal Engine — это базовый класс для всех компонентов, которые могут быть размещены на игровом уровне. Он предоставляет фундаментальные свойства, такие как позиция, вращение и масштаб, необходимые для отображения и взаимодействия объектов в игровом мире, а также даёт возможность иерархического присоединения к другим компонентам сцены. Сам по себе SceneComponent не отображается визуально и не имеет специфической функциональности, но служит основой для других компонентов, которые нуждаются в пространственном положении и трансформации в 3D-мире.

Основная функциональность класса Scene Component, это хранение и управление трансформацией (положением, вращением и масштабом) в трехмерном пространстве.
Scene Component и Actor Component
Класс Scene Component является дочерним от Actor Component, расширяя его функционалом трансформации. Из этого следует, что в Scene Component доступны все настройки, а также свойства, события и функции от родительского компонента, изучить которые Вы можете в отдельной статье: Actor Component.

Также отдельно обращу внимание, так как это важно для использования компонента сцены, из родительского класса Actor Component, в нём доступна и функция Get Owner, возвращающая ссылку на Актора-владельца текущего компонента.

Эта функция предоставляет возможность получать доступ к родительскому Актору из самого компонента, что открывает большие возможности для взаимодействия с его поведением и данными. Например, с помощью функции Get Owner можно получить доступ к свойствам, функциям или другим компонентам Актора-владельца.
Настройки Details
Так как класс компонента сцены в Анрил Энджин расширяет дополнительным функционалом класс ActorComponent, то и настройки Details также несколько отличаются от родительских наличием дополнительных опций. Все опции Details здесь рассматривать не будем (их можно изучить в отдельной статье Details Actor Component), а остановлюсь только на тех, которых нет в Актор-компоненте.

Transform
- Location (float, по умолчанию X = 0.0, Y = 0.0, Z = 0.0) — координаты расположения компонента.
- Rotation (float, по умолчанию X = 0.0, Y = 0.0, Z = 0.0) — вращение (поворот) компонента.
- Scale (float, по умолчанию X = 1.0, Y = 1.0, Z = 1.0) — масштаб компонента.
- Mobility — подвижность компонента. На выбор имеется 3 варианта подвижности:
— статичный (объект неподвижный, не изменяется во время игры);
— неподвижный (объект можно изменить в игре, но нельзя передвинуть).
— подвижный (объект можно как изменять, так и передвигать).
Причём важно знать, что всем свойствам трансформации (положению, вращению и масштабу) можно менять тип, относительно чего измеряется их трансформация. Доступно два типа измерений трансформации:
- Relative (относительный) — расположение компонента рассчитывается относительно родительского компонента, к которому прикреплён текущий компонент;
- World (мировой) — расположение компонента рассчитывается на основе глобальных мировых координат.
Сама же формула расчёта мировых координат для любого компонента достаточно простая — Relative координаты самого компонента + Relative координаты родительских компонентов (если таковые имеются) + World координаты Root Component (самого первого компонента в иерархии компонентов Актора).
Rendering
- Visible (bool, по умолчанию True) — определяет полную отрисовку и рендеринг примитива компонента (его визуальной части — Mesh или коллизии). Если значение True — примитив отрисовывается полностью, если False — примитив вообще не отрисовывается и не отбрасывает тень.
- Hidden in Game (bool, по умолчанию False) — включает возможность скрыть примитив в игре, если Visible = True.
- Use Attach Parent Bound (bool, по умолчанию False) — включает возможность использовать границы (Bounds) родительского компонента, вместо вычисления собственных границ. Что может значительно оптимизировать производительность, особенно если имеется множество компонентов, прикреплённых друг к другу, например, в модульных персонажах или сложных иерархиях.
Physics
- Should Update Physics Volume (bool, по умолчанию False) — включает обновление кэша Physics Volume, на который накладывается текущий компонент при перемещении.
LOD
- Detail Mode — режим детализации компонента. Если режим детализации компонента больше или равен режиму детализации всей системы (в настройках качества всего проекта), то примитив компонента не будет отрисовываться. На выбор имеется 4 варианта режима детализации:
— Low (низкий);
— Medium (средний);
— High (высокий);
— Epic (наивысший, эпический).
Attach Scene Components и иерархия компонентов
В Unreal Engine все компоненты Scene Component (и их дочерние классы) внутри их Актора-владельца в обязательном порядке всегда прикрепляются друг к другу (Attach), образуя иерархию с родительско-дочерними отношениями и обеспечивая тем самым, что дочерний компонент всегда будет перемещаться, вращаться и масштабироваться вместе со своим родителем. При этом каждый компонент сцены может иметь любое количество дочерних, но только один родительский компонент.
В целом, тема иерархии и корневого компонента сцены (Scene Root Component) рассмотрена в общей статье про компоненты, поэтому изучить Вы её можете по данной ссылке: иерархия компонентов и Root Component.
Ключевые особенности Scene Component
- Базовый класс — многие компоненты, которые отображаются или участвуют в физическом взаимодействии, наследуются от Scene Component (через промежуточный абстрактный класс Primitive Component, отвечающий за рендеринг и визуализацию), включая Static Mesh Component, Skeletal Mesh Component, Camera Component, Spring Arm Component и многие другие.
- Трансформация — основная функциональность Scene Component, это хранение и управление трансформацией (положением, вращением и масштабом) в трехмерном пространстве.
- Иерархия и прикрепление — благодаря свойству трансформации, компоненты SceneComponent создают иерархию прикреплений друг к другу (иерархию вложенности). Один компонент сцены может быть прикреплен к другому или к Актору-владельцу (через Root Component). Это создает иерархию вложенности компонентов. Причём свойства трансформации вложенных компонентов зависят от родительских элементов. Поэтому изменяя трансформацию родительского компонента, также автоматически будет изменятся трансформация у вложенных элементов.
- Относительная трансформация — каждый SceneComponent имеет собственную относительную трансформацию, зависящую от родительского компонента.
- Мировая трансформация — мировая трансформация рассчитывается на основе относительной трансформации и трансформации родительских компонентов.
- Редактирование в редакторе — свойства SceneComponent (позиция, вращение, масштаб) могут быть легко изменены в редакторе Unreal Engine.
Функции класса Scene Component
Функции прикрепления компонентов

- Attach Component To Component — прикрепляет текущий компонент к другому компоненту, а при необходимости — и к конкретному Socket (держателю).
- Attach Actor To Component — данная функция не относится к Scene Component (она является функцией класса Actor), но всё-же имеет прямое отношение к компоненту сцены, прикрепляя объект Актора к конкретному указанному компоненту (класса SceneComponent и выше).
- Get Attach Parent — возвращает родительский компонент, к которому прикреплён текущий компонент.
- Get Attach Socket Name — возвращает имя сокета (точки привязки) родительского компонента, к которому прикреплен текущий компонент.
- Get Parent Components — возвращает для текущего компонента массив всей иерархии родительских компонентов.
- Get Children Components — возвращает массив всех дочерних компонентов, прикрепленных к текущему компоненту.
- Get Child Component — возвращает конкретный дочерний компонент по его порядковому номеру из перечня дочерних элементов.
- Get Num Children Components — возвращает количество непосредственных дочерних компонентов, прикрепленных к текущему компоненту.
Изменение локации компонентов

- Get World Location — возвращает текущее абсолютное положение компонента в мировом пространстве.
- Set World Location — устанавливает новую мировую позицию компонента в трёхмерном пространстве игры.
- Set World Location And Rotation — устанавливает новую позицию компонента и его разворот в мировых координатах.
- Get Relative Location — возвращает текущее значение относительного местоположения компонента.
- Set Relative Location — устанавливает новые координаты компонента относительно его родительского элемента.
- Set Relative Location And Rotation — задаёт новое положение и угол поворота компонента относительно его родителя.
- Add Relative Location — добавляет смещение к текущей относительной позиции компонента.
- Add World Offset — добавляет смещение к текущей позиции компонента в мировых координатах.
- Add Local Offset — добавляет смещение к текущей позиции компонента в локальной системе координат самого компонента.
Изменение поворота компонента

- Get World Rotation — возвращает текущее направление вращения компонента относительно глобальной системы координат.
- Set World Rotation — устанавливает новое направление вращения компонента в мировых координатах.
- Set Relative Rotation — устанавливает поворот компонента относительно родительских координат.
- Add Relative Rotation — добавляет вращение компоненту относительно системы координат его родителя.
- Add World Rotation — добавляет вращение компоненту в рамках мировой системы координат.
- Add Local Rotation — добавляет вращение компоненту в рамках локальной системы координат самого компонента.
Socket (сокеты)

- Does Socket Exist — проверяет, существует ли сокет с заданным именем на компоненте. Возвращает значение True, если сокет найден, иначе False. Используется для проверки наличия точек привязки (Sockets), к которым можно прикреплять другие компоненты или объекты.
- Get All Socket Names — возвращает список всех имён сокетов, определённых на данном компоненте. Используется для перебора всех доступных точек привязки.
- Get Socket Location — возвращает позицию сокета или кости в мировых координатах. Используется для точного позиционирования объектов относительно скелета или компонента.
- Get Socket Rotation — возвращает вращение (Rotator) сокета или кости в мировых координатах. Позволяет получить ориентацию точки привязки.
- Get Socket Transform — возвращает полную трансформацию (позицию, вращение, масштаб) сокета или кости в мировых координатах. Используется для комплексного управления положением и ориентацией.
Векторы

- Get Forward Vector — возвращает для компонента вектор направления вперёд в мировых координатах (ось X). Часто используется для определения направления взгляда или движения объекта.
- Get Right Vector — возвращает для компонента вектор направления вправо в мировых координатах (ось Y). Используется для вычисления бокового направления относительно компонента.
- Get Up Vector — возвращает для компонента вектор направления вверх в мировых координатах (ось Z). Используется для ориентации и вычисления вертикального направления.
Physics (физика)

- Get Physics Volume — возвращает физический объём (Physics Volume), в котором в данный момент находится компонент. Физический объём определяет свойства среды, например, воду или зону с низкой гравитацией.
- Is Any Simulating Physics — проверяет, симулируется ли физика для указанного тела компонента. Возвращает значение True, если физика активна.
- Is Simulating Physics — проверяет, симулируется ли физика для указанного тела компонента с учётом конкретной кости скелета. Возвращает значение True, если компонент участвует в физическом симуляции.
Visible (видимость)

- Is Visible — возвращает значение True, если компонент видим в текущем контексте (например, в игре или редакторе). Используется для проверки состояния видимости.
- Set Visibility — устанавливает видимость компонента. Если вызывается во время игры, позволяет включать или отключать отображение компонента.
- Toggle Visibility — переключает текущее состояние видимости компонента: если был видим — станет невидим, и наоборот.
Изменение масштаба

- Get World Scale — возвращает масштаб компонента в мировых координатах. Используется для вычисления реального размера объекта в мире.
- Set Relative Scale 3D — устанавливает локальный (относительный) масштаб компонента по осям X, Y, Z относительно родителя.
- Set World Scale 3D — устанавливает масштаб компонента в мировых координатах. Делает компонент нужного размера относительно мировых осей.
Изменение трансформации

- Reset Relative Transform — сбрасывает относительную трансформацию компонента относительно его родителя к значению по умолчанию (обычно нулевое смещение, без вращения и масштаб 1).
- Set Absolute — устанавливает, какие части трансформации (позиция, вращение, масштаб) должны быть абсолютными в мировом пространстве, а какие — относительными к родителю. Позволяет гибко управлять поведением трансформации.
Другие функции

- Set Hidden in Game — изменяет значение свойства Hidden In Game. Если установлено значение True, компонент становится невидимым во время игры (выключается видимость).
- Set Mobility — устанавливает режим подвижности компонента, что влияет на оптимизацию и поведение компонента:
— Static (неподвижный, не изменяется во время игры);
— Stationary (частично подвижный, например, освещение);
— Movable (полностью подвижный). - Get Component Velocity — возвращает текущую скорость компонента. Если компонент симулирует физику, возвращается скорость физического тела, иначе — скорость компонента (Component Velocity). Используется для вычисления движения или эффектов, зависящих от скорости.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.