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 расширяет родительский класс Actor Component функциональностью трансформации
Scene Component расширяет родительский класс Actor Component функциональностью трансформации

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

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

Эта функция предоставляет возможность получать доступ к родительскому Актору из самого компонента, что открывает большие возможности для взаимодействия с его поведением и данными. Например, с помощью функции 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 координаты самого компонента + 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 и иерархия компонентов

Родительско-дочерние отношения 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

Функции прикрепления компонентов

Scene Component: функции прикрепления компонентов
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 — возвращает количество непосредственных дочерних компонентов, прикрепленных к текущему компоненту.

Изменение локации компонентов

Scene Component: функции изменения локации компонентов
Scene Component: функции изменения локации компонентов
  • 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 — добавляет смещение к текущей позиции компонента в локальной системе координат самого компонента.

Изменение поворота компонента

Scene Component: функции изменения поворота компонентов
Scene Component: функции изменения поворота компонентов
  • Get World Rotation — возвращает текущее направление вращения компонента относительно глобальной системы координат.
  • Set World Rotation — устанавливает новое направление вращения компонента в мировых координатах.
  • Set Relative Rotation — устанавливает поворот компонента относительно родительских координат.
  • Add Relative Rotation — добавляет вращение компоненту относительно системы координат его родителя.
  • Add World Rotation — добавляет вращение компоненту в рамках мировой системы координат.
  • Add Local Rotation — добавляет вращение компоненту в рамках локальной системы координат самого компонента.

Socket (сокеты)

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

Векторы

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

Physics (физика)

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

Visible (видимость)

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

Изменение масштаба

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

Изменение трансформации

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

Другие функции

Scene Component: другие функции
Scene Component: другие функции
  • Set Hidden in Game — изменяет значение свойства Hidden In Game. Если установлено значение True, компонент становится невидимым во время игры (выключается видимость).
  • Set Mobility — устанавливает режим подвижности компонента, что влияет на оптимизацию и поведение компонента:
    Static (неподвижный, не изменяется во время игры);
    Stationary (частично подвижный, например, освещение);
    Movable (полностью подвижный).
  • Get Component Velocity — возвращает текущую скорость компонента. Если компонент симулирует физику, возвращается скорость физического тела, иначе — скорость компонента (Component Velocity). Используется для вычисления движения или эффектов, зависящих от скорости.

Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.


наш Телеграм канал

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

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