Система материалов в Unreal Engine представляет собой редактор материалов на основе узлов, с помощью которого нужно соединять друг с другом текстуры, математические операции, параметры и выражения для создания внешнего вида поверхности. Система материалов оптимизирует и отрисовывает материалы в реальном времени.
Для пользователя Maya этот рабочий процесс больше всего похож на создание материалов в Hypershade, но с некоторыми важными отличиями.
Материалы в Unreal Engine созданы с использованием:
редактора материалов на основе узлов, оптимизированного для предпросмотра и выполнения процессов в реальном времени;
физически корректного рендеринга (PBR), который усиливает реалистичность с помощью заданных свойств, таких как базовый цвет, металлический блеск, шероховатость, глянец и карты нормалей;
обратной связи в реальном времени и изменений материалов в окне предпросмотра, а также освещения и отражений в реальном времени;
управляемых параметрами рабочих процессов с экземплярами материалов, которые позволяют изменять материалы через переопределения, а не через повторную компиляцию родительского материала.
Атрибуты, определяющие материал
Атрибуты, определяющие формат отрисовки и реакцию материала на освещение и поверхности в Unreal Engine, задаются его свойствами, входными данными материала и логикой графа материалов.
Свойства материала и входные данные материала
Атрибуты, определяющие материал, можно задать на панели Сведения в «Редакторе материалов». Есть три основных свойства, которые нужно задавать с учётом типа создаваемого материала. Эти свойства определяют входные данные в основном узле материала, которые вы будете использовать для настройки внешнего вида материала в графе материалов.
Назначение материала определяет, для чего вы можете использовать материал в проекте. Например, для трёхмерной поверхности, элементов интерфейса, постобработки, функций освещения или декалей.
Режим смешивания определяет, как материал смешивается с цветными пикселями окружающего фона. Это может быть непрозрачный, прозрачный, с маской, а также другие варианты смешивания.
Модель затенения определяет, как материал взаимодействует со светом, задавая внешний вид и особенности освещения поверхностей. Например, модели затенения «Ткань» и «Волосы» используют разные входные данные материала для достижения реалистичности поверхностей по сравнению с моделью затенения при освещении по умолчанию. Некоторые модели затенения усложняют используемые материалы и увеличивают их расход памяти.
Задав эти свойства материала, вы можете настроить материал, используя доступные входные данные в основном узле материала в графе материалов. Список входных данных напрямую зависит от того, какие назначение, режим смешивания и модель затенения заданы для создаваемого вами материала. Для большинства материалов, созданных в Unreal Engine, вы будете использовать следующее:
Ниже приведён пример различных входных данных узла Main Material (Основной материал) при изменении только Режима смешивания для использования различных выходных данных.
Назначение материала: Поверхность Режим смешивания: Непрозрачный Модель затенения: По умолчанию освещён | Назначение материала: Поверхность Режим смешивания: Прозрачный Модель затенения: По умолчанию освещён | Назначение материала: Поверхность Режим смешивания: С маской Модель затенения: По умолчанию освещён |
Ниже приведены некоторые распространённые названия входных данных, используемых в материалах Hypershade в Maya, и их эквиваленты в Unreal Engine. Сюда также входит их стандартный тип входных данных источника для каждого из этих входных данных в Unreal Engine при определении логики в графе материалов.
| Входные данные материала в Hypershade в Maya | Входные данные материала в Unreal Engine | Стандартный тип источника | Описание входных данных материала |
|---|---|---|---|
Цвет | Базовый цвет | Текстура или цвет | Основной рассеянный цвет поверхности. |
Отражательная способность | Металл | Скаляр или текстура | Определяет внешний вид поверхности: металлический (1) или неметаллический (0). |
Шероховатость | Шероховатость | Скаляр или текстура | Задаёт степень гладкости поверхности: от гладкой (0) до шероховатой (1). |
Отражательная способность | Глянец | Скаляр или текстура | Задаёт интенсивность отражения от неметаллической поверхности: от неотражающей (0) до отражающей (1). |
Рельеф / Нормаль | Нормаль | Текстура карты нормалей | Задаёт детализацию поверхности с помощью карты текстур. |
Излучение / Цвет излучения) / Излучение света | Цвет излучения | Цвет или текстура | Задаёт интенсивность самосвечения поверхности. |
Прозрачность / Светопроходимость | Непрозрачность | Скаляр или текстура | Задаёт степень прозрачности поверхности: от полностью прозрачной (0) до непрозрачной (1). |
Фоновый цвет | Фоновое затенение | Текстура | Задаёт степень интенсивности непрямых теней. |
Подробная информация и примеры использования этих свойств материалов и их входных данных:
Граф материалов
Граф материалов — это редактор на основе узлов, в котором нужно подключать друг к другу текстуры, выражения, математические операции и значения, чтобы задать внешний вид поверхности. Материалы могут быть как простыми, так и сложными, в зависимости от того, какую поверхность вы хотите создать.
Наиболее распространённые типы узлов, которые вы будете использовать:
Образец текстуры
Этот узел использует ресурсы текстур, такие как цветовые карты и карты нормалей.
Константы
Это однозначные числа, которые можно использовать для управления свойствами скаляра, такими как значения входных данных в узле Linear Interpolate (Линейная интерполяция), или для подключения непосредственно к входным данным основного узла материала для настройки металличности, шероховатости или непрозрачности.
Узлы Math (Математические узлы)
Это математические операции сложения, умножения, вычитания, деления, линейной интерполяции, возведения в степень, ограничения и проч.
Узлы Utility (Узлы утилиты)
Это узлы, помогающие выстраивать логику взаимодействия с другими узлами графа. К ним относятся выражения для эффекта Френеля, вектора камеры, положения в мире, координат текстуры и т. д.
Подробнее об использовании логики в графе материалов и общих функциях:
Placing Material Expressions and Functions (Вложение выражений и функций материала);
Material Expressions Reference (Справочник по выражениям материала).
Дополнительные комментарии по материалам и текстурам
Ниже приведены краткие обзоры тем, связанных с разработкой материалов в Unreal Engine. Для более подробного ознакомления с этими концепциями и их применением советуем изучить соответствующие страницы документации.
Сравнение материалов и экземпляров материалов
Система материалов в Unreal Engine разработана с учётом индивидуальной настройки и параметризации для отрисовки и освещения в реальном времени. Одним из способов оптимизации работы с материалами является использование функции создания экземпляров материала для персонализированной настройки параметров без ущерба для исходного материала, из которого создаются эти экземпляры.
Иными словами, если материал является основным ресурсом, который определяет, как будет выглядеть поверхность объекта и как она будет взаимодействовать с освещением, экземпляр материала использует атрибуты и параметры родительского или базового материала, чтобы переопределить эти значения и разнообразить и персонализировать материал. Это также может быть менее ресурсозатратным, чем использование отдельных материалов для всех объектов.
Характеристики материалов и экземпляров материалов можно разделить на следующие группы:
| Характеристика материала | Характеристики экземпляра материала |
|---|---|
Создан с использованием редактора на основе узлов. | Использует редактор на основе предоставленных параметров, которые можно переопределить из базового материала. |
Содержит все возможные входные данные функций материала, такие как цвет, металличность, шероховатость, непрозрачность и проч. | Позволяет обращаться только к параметрам, предоставленным из базового материала, которые можно переопределить. |
Перед предпросмотром изменений, внесённых в материал, его необходимо повторно скомпилировать. | Обеспечивает обратную связь в реальном времени при изменении параметров, благодаря чему повторная компиляция материала не требуется. |
Граф материалов может иметь любой уровень сложности для удовлетворения ваших требований к внешнему виду материала. | Доступ только к предоставленным параметрам позволяет повысить производительность и эффективность рабочего процесса. |
Изменение этого материала влияет на все объекты, которые его используют. | Изменение этого экземпляра материала влияет только на объекты, которые его используют, благодаря чему их можно использовать для создания нескольких похожих поверхностей, которые начинаются с одного и того же базового родительского элемента со схожими функциями. |
Советуем использовать экземпляр материала вместе с материалом в тот момент, когда нужно настроить лишь детали и параметры, такие как цвет материалов, текстуры, масштабирование и проч. Новые базовые материалы следует создавать тогда, когда нужно определить новое визуальное поведение и стиль (например, непрозрачный или полупрозрачный), которые требуют настройки новой логики в графе материалов.
Начальная настройка материалов, как правило, более длительная, а их использование более ресурсозатратное, чем использование экземпляра материала для материалов с аналогичными свойствами и атрибутами.
Подробнее об использовании материалов с экземплярами материала в проекте:
Material Instance Editor UI (Интерфейс редактора экземпляров материала);
Creating and Using Material Instances (Создание и использование экземпляров материала).
Текстуры
Как и в Maya, текстуры — это карты изображений, применяемые к атрибутам входных данных создаваемого материала, таким как базовый цвет, нормаль, шероховатость, для определения деталей поверхности. В Unreal Engine при создании материалов больше учитываются концепции физически корректного рендеринга и обратной связи в реальном времени.
При импорте текстур их можно открыть в редакторе ресурса текстуры, в котором можно просматривать их сведения, настраивать их параметры и вносить изменения.
Для оптимизации и более эффективной работы с текстурами в Unreal Engine советуем сделать следующее:
создавайте и изменяйте текстуры с помощью сторонних инструментов, прежде чем импортировать их;
используйте методы упаковки канала, чтобы объединять несколько текстур в оттенках серого для таких входных данных материала, как шероховатость, металличность и фоновое затенение, в единую текстуру RGB. Это позволит оптимизировать производительность за счёт использования одной текстуры вместо нескольких различных текстур;
движок автоматически использует сжатие текстур для создания текстур, но понимание того, как это использовать, позволит повысить визуальную точность и производительность;
не забывайте про размеры текстур. При работе в реальном времени советуем использовать текстуры с размерами, равными степени двойки (128, 512, 1024 и т. д.). В текстурах, размер которых не соответствует степени двойки, не используется система подгрузки текстуры, что может привести к визуальным артефактам при просмотре на расстоянии.
Подробнее об использовании текстур в Unreal Engine:
Using Textures in Unreal Engine (Использование текстур в Unreal Engine);
Texture Asset Editor Overview (Обзор редактора ресурсов текстур).
Система материалов Substrate
Система материалов Substrate в Unreal Engine — это подход к созданию материалов, заменяющий фиксированный набор моделей затенения и режимов смешивания на более чёткую и модульную платформу. Процесс создания материалов такой же, как и при использовании стандартной системы материалов, однако больше нет необходимости использовать отдельные материалы с одной моделью затенения и одним режимом смешивания. Вы можете легко смешивать их в этом рабочем процессе, чтобы создавать уникальные и более детализированные материалы.
Подробнее об использовании Substrate в проектах и рабочих процессах создания материалов см. в разделе Substrate Material Overview (Обзор материалов Substrate).
Физически корректный рендеринг с использованием материалов
Unreal Engine использует физически корректный рендеринг (PBR) для затенения и отрисовки, который точно симулирует взаимодействие света с поверхностями. Он обеспечивает физически правдоподобное взаимодействие со светом, что позволяет создавать реалистичные и, что более важно, предсказуемые визуальные эффекты при различных условиях освещения (прямой солнечный свет / внутреннее освещение) или даже фотореалистичные поверхности / стилизованные эффекты — от окрашенных вручную до отрисованных в технике сэл-шейдинга.
Ключевые принципы работы с материалами PBR в Unreal Engine:
Реалистичное взаимодействие со светом: поверхности точно и предсказуемо реагируют на различные настройки освещения, будь то естественное (наружное) или искусственное (внутреннее) освещение.
Согласованность с материалами для корректного отображения в различных сценах и сценариях освещения.
Упрощённый рабочий процесс, при котором художники определяют материалы по их физическим свойствам, а не по произвольным значениям, что позволяет сократить количество корректировок настроек затенения и освещения в реальном времени с мгновенным отображением результата в сцене.
Подробнее см. в разделе Physically Based Materials (Физически корректные материалы).