Static Mesh в Unreal Engine

Приветствую, друзья, с Вами Будуев Антон. В данной статье мы разберём один из самых основных ассетов в Unreal Engine — Static Mesh, или, как говорят по-русски, статический Меш (сетка) в UE5, UE4.

Но сначала определимся, что такое Mesh.

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

Unreal Engine Mesh

Mesh (Меш, сетка) — это компонент в Unreal Engine, представляющий собой 3D-модель. По сути, это набор соединённых между собой вершин, рёбер и граней, определяющих форму объекта в трёхмерном пространстве. Где:

  • вершина (Vertex) — это точка в 3D-пространстве, определяющая положение объекта. Множество вершин создаёт каркас модели;
  • ребро — линия, соединяющая две вершины;
  • грань  — поверхность, образованная тремя (или более) вершинами, соединёнными ребрами. В Unreal Engine в целях оптимизации используются треугольные грани (Triangles).
Mesh оружия в Unreal Engine, состоящий из 10317 Triangles и 8503 Vertex
Mesh оружия в Unreal Engine, состоящий из 10317 Triangles и 8503 Vertex

Более подробно о Мешах и их основных типах Вы можете узнать в отдельной статье: Unreal Engine Mesh.

А в этой статье далее перейдём к разбору Static Mesh.

Static Mesh в Unreal Engine

Static Mesh (статический Меш) — это базовый тип Mesh в Unreal Engine, который не подвержен анимации. Он представляет собой 3D-модель, форма которой не изменяется динамически во время игры. В лучшем случае Static Mesh может иметь модификацию преобразования (местоположения, поворота или масштаба), которая применяется ко всему объекту сразу.

Статический Меш идеально подходит для объектов, которые остаются неподвижными или не претерпевают значительных деформаций, таких здания, стены, полы, потолки, скалы, деревья, камни, столы, стулья, кровати и прочие предметы.

Static Mesh - статический меш
Static Mesh — статический меш

Static Mesh представляет собой основной элемент, используемый в Unreal Engine для создания уровней, окружения или других статичных элементов. Благодаря своей неизменности и настройки уровней детализации, а также использования современной технологии Nanite, статические Меши хорошо оптимизированы для рендеринга, что позволяет Unreal Engine эффективно обрабатывать большое количество таких Мешей в одной сцене.

Еще раз подчеркну, ключевая особенность Static Mesh заключается в том, что его форма остаётся неизменной после загрузки в движок.

Хотя название подразумевает, что объект статичен, то есть якобы не может двигаться, на самом деле слово «статический» относится не к отсутствию движения, а к неспособности объекта изменять свою форму с помощью анимации. Это означает, что Mesh является статическим, если форма его геометрии остаётся неизменной. Однако в процессе игры объект всё равно может динамически перемещаться, вращаться или изменять свой масштаб.

Unreal Engine в целях прототипирования, обучения и простого моделирования предоставляет 5 стандартных форм Static Mesh, доступных для размещения в игровом мире через меню Quickly add to the Project / Shapes в Unreal Engine Editor.

  • Cube — куб;
  • Sphere — сфера;
  • Cylinder — цилиндр;
  • Cone — конус;
  • Plane — плоскость.
Стандартные формы Static Mesh в Unreal Engine: Cube, Sphere, Cylinder, Cone, Plane
Стандартные формы Static Mesh в Unreal Engine: Cube, Sphere, Cylinder, Cone, Plane

Если требуется более сложная форма статического Mesh, то её можно создать двумя способами:

  1. Используя специальный инструмент Modeling Mode (режим моделирования), входящий в состав Анрил Энджин.
Режим Modeling Mode
Режим Modeling Mode
  1. Либо импортировав готовый Static Mesh, созданный в специализированных программах для 3D-моделирования.

Импорт Static Mesh

Статические Меши обычно создаются в специализированных 3D-редакторах, таких как Blender, Maya, 3ds Max. И импортируются в движок в наиболее распространённом формате для импорта Мешей — FBX (Filmbox). Также поддерживаются OBJ и некоторые другие форматы.

Для импорта Static Mesh в Unreal Engine перейдите в Content Browser, нажмите кнопку Import и выберите файл Меша на компьютере. Откроется окно настроек импорта FBX Import Options.

Импорт Static Mesh
Импорт Static Mesh

В данном диалоговом окне содержится множество опций для импорта Меша, изучить детально которые Вы можете в отдельной статье: FBX Import Options.

После определения настроек нажмите кнопку Import. Как результат, ассет импортированного файла появится в Content Browser, двойной щелчок по которому откроет специализированный редактор Static Mesh Editor, где можно настроить различные свойства этого Меша.

Основные свойства Static Mesh

Material

Material (материал) — это свойство Static Mesh, определяющее внешний вид объекта.

Материалы используются для задания текстур, цвета, прозрачности и других визуальных характеристик 3D-модели. Когда материал назначается Static Mesh, он применяется к его поверхности. Каждая грань (полигон) модели может быть связана с конкретным слотом материала, который определяется в процессе создания модели во внешнем 3D-редакторе. Эти слоты сохраняются в файле FBX при экспорте и импорте в Unreal Engine.

После того как статический Меш был импортирован в движок, используя в редакторе Static Mesh Editor меню Material Slots вкладки Details, имеется возможность работы с каждым из слотов материалов, назначая в него новый материал.

Слот материалов в Static Mesh
Слот материалов в Static Mesh

Collision

Collision (коллизия, столкновение) — свойство Static Mesh, определяющее взаимодействие текущего объекта с другими объектами в сцене. Коллизии используются для обнаружения столкновений, предотвращающих прохождения через объекты, или для обнаружения пересечений с целью вызова событий, запускающих соответствующую логику, обрабатывающую это взаимодействие.

Static Mesh могут импортироваться со встроенной коллизией, созданной вместе с моделью в 3D-редакторах. Также коллизию можно создать вручную или автоматически в редакторе Static Mesh Editor. Всего статический Меш поддерживает 2 вида коллизий:

  1. Simple Collision (простая форма столкновения) — базовый тип коллизии, в которой для определения границ столкновения объектов вместо использования сложной детализированной геометрии самой модели используются геометрические примитивы, такие как кубы, сферы, капсулы и выпуклые оболочки. Добавляется простая коллизия в редакторе Static Mesh через меню Collision.
Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision
Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision
  1. Complex Collision (сложная форма столкновения) — представляет собой более продвинутый метод обработки коллизий, который способствует более точному взаимодействию объектов в игре. Данная коллизия создаётся движком автоматически, используя оригинальную геометрию трёхмерных моделей Mesh, чтобы обеспечить максимальную точность в определении границ объектов.

Более подробно ознакомиться с простой и сложной коллизиями Вы можете в отдельной статье: Simple и Complex Collision.

Nanite

Nanite — это революционная технология визуализации, представленная в Unreal Engine (UE5), которая позволяет использовать невероятно детализированные модели (с миллионами полигонов) без значительного влияния на производительность. Nanite автоматически управляет уровнем детализации (LOD), упрощая геометрию для удаленных или менее важных частей сцены, что делает эту технологию идеальной для работы со статическими объектами высокой детализации.

Nanite анализирует геометрию модели и решает, какие части нужно отображать с полной детализацией, а какие можно упростить. Это происходит в реальном времени, без необходимости вручную настраивать LOD или упрощать модели.

Включение данный технологии для конкретного Static Mesh, а также её настройка производится в редакторе Static Mesh Editor в меню Nanite Settings вкладки Details, опции которой мы подробно будем рассматривать в отдельной статье, посвящённой редактору Static Mesh Editor.

Nanite Settings в Static Mesh Editor
Nanite Settings в Static Mesh Editor

LOD

LOD (Level of Detail) — это процесс создания нескольких версий Static Mesh с различным уровнем детализации. Он служит для оптимизации производительности на разных расстояниях от камеры. Уровень детализации определяется количеством вершин и треугольников в статическом Меше. Чем их меньше, тем менее детализированной становится 3D-модель, и тем меньше места она занимает в памяти.

LOD, как и другие свойства Меша, также настраивается в редакторе Static Mesh Editor во вкладке Details. Данный процесс мы подробно рассмотрим в отдельной статье.

Sockets

Sockets (сокеты) — это специальные точки привязки, которые можно добавить к Static Mesh, чтобы прикреплять к ним другие объекты, эффекты или компоненты. Они используются для точного позиционирования и ориентации объектов относительно 3D-модели.

Например, сокеты используются для прикрепления оружия к рукам персонажа, размещения светильников на стенах или декоративных элементов у мебели. Добавление частиц дыма, огня или звуковых источников в определенных точках модели.

Sockets позволяют программно управлять положением и ориентацией объектов, что упрощает создание сложных взаимодействий.

Сокеты настраиваются в Static Mesh Editor в отдельной вкладке Socket Manager.

Добавление Socket в Static Mesh Editor
Добавление Socket в Static Mesh Editor

Static Mesh Actor

При размещении объекта Static Mesh на игровом уровне он становится объектом Static Mesh Actors, а иначе говоря, Актором.

Actor в Unreal Engine — это абсолютно любой объект, который можно разместить на игровом уровне. Это может быть как статичная 3D-модель, так и анимированный персонаж, камера, звуковой файл и многое другое. Таким образом, Актором является всё, что размещается на уровне. И не обязательно, чтобы этот объект отображался визуально. Кроме того, все Акторы поддерживают 3D-преобразования, такие как перемещение, вращение и масштабирование в игровом мире.

Один и тот же файл ассета Static Mesh может иметь неограниченное число объектов Static Mesh Actors, размещённых в мире. Причём, наследуя одни и те же настройки от родительского Static Mesh, объекты-Акторы могут переопределять их. Таким образом, используя один объект статического Меша несколько раз на уровне, можно придать каждому Актору этого Меша уникальный внешний вид.

Например, имея один Static Mesh скамейки, в игровом мире можно разместить любое количество Акторов этих скамеек, где каждый Актор может переопределить свойство материала во вкладке Details.

Переопределение материала в Static Mesh Actor
Переопределение материала в Static Mesh Actor

Отдельно стоит заметить, что на самом деле любые Акторы содержат в себе 3D-модель статического Меша не напрямую, а через специальный компонент Static Mesh Component, который является неким «держателем» Static Mesh в этом Акторе.

Именно через данный компонент в конкретном Акторе движком предоставляется возможность детальной настройки модели статического Меша (настроек материала, коллизии, освещения и теней, рендера, физики и много другого).

Static Mesh Component, содержащий Static Mesh скамейки внутри Актора SM_Couch
Static Mesh Component, содержащий Static Mesh скамейки внутри Актора SM_Couch

Blueprint-функции, связанные в Unreal Engine со Static Mesh

Функции, изменяющие состояние Static Mesh

  • Add Material — динамически добавляет новый материал к существующему Static Mesh и возвращает наименование слота с добавленным материалом. Что позволяет динамически менять внешний вид объекта во время выполнения игры.
  • Add Socket — динамически добавляет объект Socket к существующему статическому Мешу.
  • Build from Static Mesh Descriptions — создаёт уровни детализации (LOD) статического Меш из переданного массива Static Mesh Descriptions.
  • Create Static Mesh Description — создаёт новый, пустой объект Static Mesh Description для описания Static Mesh.
  • Remove Socket — удаляет существующий объект Socket из текущего Static Mesh во время выполнения игры.

Функции, возвращающие значения

  • Find Socket — ищет и возвращает объект Socket с указанным именем, если он существует в текущем статическом Меше. При наличии нескольких сокетов с одинаковым названием возвращается первый.
  • Get Bounding Box — возвращает ограничивающий параллелепипед (Bounding Box), который полностью охватывает геометрию Static Mesh.
  • Get Bounds — возвращает границы (Bounds), охватывающие геометрию Static Mesh. Текущая функция предоставляет более детальную информацию о расположении и размерах объекта, чем Get Bounding Box, так как возвращает не только ограничивающий параллелепипед (Bounding Box), но и сферу (Bounding Sphere), которые полностью охватывают геометрию Меша.
  • Get Material — возвращает материал по индексу слота материала.
  • Get Material Index — возвращает индекс слота материала по названию этого слота.
  • Get Num LODs — возвращает количество уровней детализации (LODs), содержащихся в текущем статическом Меше.
  • Get Num Sections — возвращает количество секций в указанном уровне детализации (LOD). 0 — означает самый высокий уровень детализации.
  • Get Num Triangles — возвращает общее количество треугольников (полигонов) в указанном уровне детализации (LOD).
  • Get Sockets by Tag — возвращает массив всех Socket-ов, прикрепленных к Static Mesh, которые имеют указанный тег.
  • Get Static Mesh Description — возвращает объект описания Static Mesh Description, ссылающийся на Mesh Description указанного уровня детализации (LOD).

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


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

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

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