- Unreal Engine Scene Component
- Scene Component и Actor Component
- Функция Get Owner в компоненте сцены
- Настройки Details
- Attach Scene Components и иерархия компонентов
- Ключевые особенности Scene Component
- Функции класса Scene Component
- Функции прикрепления компонентов
- Изменение локации компонентов
- Изменение поворота компонента
Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим и разберём класс 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.

Функция Get Owner в компоненте сцены

Также отдельно обращу внимание, так как это важно для использования компонента сцены, из родительского класса 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 координат с World координатами Root Component (самого первого компонента в иерархии компонентов Актора), то есть, с координатами объекта Actor.
Rendering:
- Visible (bool, по умолчанию True) — определяет полную отрисовку и рендеринг примитива компонента (его визуальной части — Mesh, коллизии). Если значение True — примитив отрисовывается полностью, если False — примитив вообще не отрисовывается и не отбрасывает тень.
- Hidden in Game (bool, по умолчанию False) — включает возможность скрыть примитив в игре, если Visible = True.
Rendering / Advanced:
- Use Attach Parent Bound (bool, по умолчанию False) — включает возможность прикрепить текущий компонент к границам родительского элемента, что благотворно влияет на оптимизацию игры.
Physics / Advanced:
- Should Update Physics Volume (bool, по умолчанию False) — включает обновление кэша Physics Volume, на который накладывается текущий компонент при перемещении.
LOD / Advanced:
- 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 — добавляет вращение компоненту в рамках локальной системы координат самого компонента.
Статья дописывается. Функции будут ещё добавляться.
Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.