Scene Component в Unreal Engine — разбираем компонент сцены в Blueprint UE5 (UE4)

Друзья, приветствую, с Вами Будуев Антон. В данной статье мы обсудим и разберём класс 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 в Unreal Engine предоставляет фундаментальные свойства, такие как позиция, вращение и масштаб в 3D-мире
Scene Component в Unreal Engine предоставляет фундаментальные свойства, такие как позиция, вращение и масштаб в 3D-мире

Основная функциональность класса Scene Component, это хранение и управление трансформацией (положением, вращением и масштабом) в трехмерном пространстве.

Scene Component и Actor Component

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

Scene Component в Unreal Engine расширяет родительский класс Actor Component функциональностью трансформации
Scene Component расширяет родительский класс Actor Component функциональностью трансформации

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

Функция Get Owner в Unreal Engine
Функция Get Owner в Unreal Engine

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

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

Настройки Details

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

Настройки Details класса Scene Component в Unreal Engine
Настройки Details класса Scene Component в Unreal Engine

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 варианта подвижности:
    — статичный (такой объект вообще никак нельзя изменить в игре).
    — неподвижный (объект можно изменить в игре, но нельзя передвинуть).
    — подвижный (объект можно как изменять, так и передвигать).

Причём важно знать, что всем свойствам трансформации (положению, вращению и масштабу) можно менять тип, относительно чего измеряется их трансформация. Доступно два типа измерений трансформации:

Типы трансформации Scene Component

  • 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 и иерархия компонентов

Родительско-дочерние отношения Scene ComponentВ 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 формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.

Оцените статью
( 1 оценка, среднее 5 из 5 )
Поделитесь этой статьей со своими знакомыми в социальных сетях, возможно, эта статья кому-то будет полезна
Unreal Engine - это просто
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.