Полезное
Мы Вконтакте
Discord канал
Material Parameter Collection(коллекции параметров) является ассетом, который хранит произвольный набор скалярных и векторных параметров, которые могут быть использованы в любом материале.
Это мощный инструмент, который художники могут использовать, чтобы менять глобальные данные во многих материалах сразу. Он также может быть использован для управления уровнем эффектов, таких как количество снега,
суммарное смешивание, сырость и т.д., которые в противном случае потребуют установки отдельных параметров во многих различных материалах на вашем уровне.
В приведенном выше примере, глобальные параметры используются для управления следующими аспектами сцены:
Material Parameter Collection создаются через Content Browser с помощью Add меню или в контекстного меню вызываемом правой кнопкой мыши, после они могут быть отредактированы и сохранены, как и любые другие ассеты.
Добавление Material Parameter Collection к любому материалу делается в несколько шагов. В следующем разделе мы рассмотрим, как добавить соответствующие ноды в очень простой материал.
Один из способов, которым можно изменять Material Parameter Collection — это блупринты. Это чрезвычайно мощный способ манипулировать Material Parameter Collection, так как он позволяет это делать в любо момент времени в игре.
Материал может ссылаться, в лучшем случае, две различных Material Parameter Collection. Material Parameter Collection может иметь до 1024 скалярных параметра и 1024 векторных параметра.
Изменение количества параметров в коллекции приведет к перекомпиляции всех материалов, которые ссылаются на эту коллекцию. Если вам нужно добавить множество параметров, это лучше будет сделать на пустой карте.
Если переименовать параметр, любые материалы, относящиеся к этому параметру будут продолжать работать. Тем не менее, любой блупринт ссылающийся на этот параметр перестанет работать.
Вы должны будете переназначить в блупринте используемое имя параметра на новое. Использование Material Parameter Collection гораздо более эффективно чем изменение множества параметров во многих материалах.
Этот документ предназначен, чтобы помочь тем, кому необходимо быстро освоить Physically Based Materials. Это предполагает, что вы по крайней мере, до некоторой степени знакомы с созданием материалов в Unreal Engine,
по крайней мере с Unreal Engine 3 или более поздней версии.
Наша цель здесь, чтобы дать вам только данные первой необходимости, как сделать стандартные материалы, используя эту систему, так как она может быть причиной путаницы, даже для тех, у кого есть опыт работы в предыдущих версиях Unreal Engine.
Мы будем концентрироваться только на тех аспектах материалов, которые связаны с нашим Physically Based подходом.
Physically Based shading означает что мы моделируем то что свет делает в реальном мире, на основе реальных физических параметров. Конечным результатом является более точный и, как правило, более естественный вид.
Physically Based Materials будут одинаково хорошо работать во всех средах освещения. Кроме того, значения, материала могут быть менее сложными и взаимозависимым, что приводит к более интуитивному интерфейсу.
Эти преимущества применимы даже для не фотореалистичной визуализации. По этим и другим причинам, в Unreal Engine 4 был принят новый подход к моделированию материалов, на основе физических параметров.
“Физическими” параметрами в нашей системе являются только четыре свойства. Это:
Эти параметры могут быть измерены у реальных материалов. Некоторые примеры будут даны ниже.
Base Color просто определяет общий цвет материала. Он принимает в значении Vector3 (RGB), и каждый канал автоматически варьируется между 0 и 1.
Измеренные значения Base Color для неметаллов (только интенсивность):
Материал | Интенсивность |
Древесный уголь | 0,02 |
Свежий асфальт | 0,02 |
Изношенный асфальт | 0,08 |
Голая почва | 0,13 |
Зеленая трава | 0,21 |
Песок пустыни | 0,36 |
Свежеуложенная бетонная смесь | 0,51 |
Океанический лёд | 0,56 |
Свежий снег | 0,81 |
Измеренные значения Base Color для металлов:
Материал | Цвет |
Железо | (0,560, 0,570, 0,580) |
Серебро | (0,972, 0,960, 0,915) |
Алюминий | (0,913, 0,921, 0,925) |
Золото | (1,000, 0,766, 0,336) |
Медь | (0,955, 0,637, 0,538) |
Хром | (0,550, 0,556, 0,554) |
Никель | (0,660, 0,609, 0,526) |
Титан | (0,542, 0,497, 0,449) |
Кобальт | (0,662, 0,655, 0,634) |
Платина | (0,672, 0,637, 0,585) |
Roughness буквально управляет тем, насколько шероховат материал. Грубый материал будет рассеивать отраженный свет в нескольких направлениях. Roughness 0 (гладкий) является зеркальным отражением и Roughness 1 (грубый) полностью матовый.
![]() Roughness 0 |
![]() Roughness 0.5 |
![]() Roughness 1 |
Roughness является свойством, которое часто будет отображаться на ваших объектах, чтобы добавить наиболее физическое изменение к поверхности.
![]() Roughness 0 |
![]() Roughness 0.5 |
![]() Roughness 1 |
Metallic буквально управляет тем, насколько металлическая ваша поверхность. Значение 0 для неметаллов и значение 1 для металлов. Для чистых поверхностей, таких как чистый металл, натуральный камень, чистый пластик и т.д. Это значение будет 0 или 1,
а не что-то между ними. При создании гибридных поверхностей, например, коррозийных, пыльных и ржавых металлов, вы можете обнаружить, что вам нужно некоторое значение в диапазоне от 0 до 1.
![]() Metallic 0 |
![]() Metallic 0.5 |
![]() Metallic 1 |
Specular как правило не используется, значение по умолчанию 0.5 для большинства случаев.
Значение от 0 до 1 используется для масштабирования текущего количества зеркальности на неметаллических поверхностях. Этот параметр не оказывает никакого влияния на металлы.
Обычно, если мы изменяем Specular, мы делаем это, чтобы добавить микро затенение, скажем, из трещин, представленных в обычной карте. Их иногда называют полостями. Как правил микро-геометрия не захватывается обычной картой теней,
по этому мы создаём специальную AO карту.Затем умножаем на конечный Base Color перед выходом и умножаем на 0,5 (Specular по умолчанию) в качестве выхода Specular.
Чтобы было ясно Base Color = Cavity * OldBaseColor, Specular = Cavity * 0,5. Это может быть использовано для управления коэффициентом преломления (IOR). Мы поняли, что это не требуется для 99% материалов.
Измеренные Specular значения:
Материал | Specular |
Стекло | 0.5 |
Пластик | 0.5 |
Кварц | 0.570 |
Лёд | 0.224 |
Вода | 0.255 |
Молоко | 0.277 |
Кожа | 0.35 |
![]() Specular 0 |
![]() Specular 0.5 |
![]() Specular 1 |
Примеры материалы. Серху: Древесный уголь, свежий бетон, изношенный асфальт. Снизу: медь, железо, золото, алюминий, серебро, никель, титан.
Модель затенения — определяет, как ваш материал буде отражать попадающий на него свет.Другими словами — он контролирует входящие данные,которые будут использованны для создания окончательного вида.
Существует шесть моделей затенения в Unreal Engine 4 : Default Lit, Unlit, Subsurface, Preintegrated Skin, Clear Coat, and Subsurface Profile. Первый из этого списка вы будете использовать как основной тип, остальные же созданы для помощи при создании более реалистичных результатов на определенных типах объектах и поверхностей.
Default Lit — как видно из названия, это вид затенения установленный по умолчанию.Это затенения модели делает использование прямого и непрямого освещения, а также отражатющей способности для отражений.
Когда вы используете Default Lit Shading Model, у вас появляется доступ к таким параметрам:
Unlit - модель затенения, которая имеет лишь один канал Emissive, для цвета который будет источать свет, но который не отбрасывает тень.
Когда вы используете Unlit Shading Model, у вас появляется доступ к таким параметрам:
Subsurface — модель освещения которая имитирует эффект подповерхностного рассеивания.Это явления реального мира, в котором свет проникает в поверхность и затем диффундирует на всем ее протяжении.Это можно увидеть на таких объектах, как лед, воск свечи, и кожи.Subsurface модель (а также Preintegrated Skin,описанный ниже), основывается на Subsurface Color.Вы можете представить себе это как цвет материи, который находится под поверхностью материи , и рассеивается через её поверхность.Для человеческой кожи, часто используют тёмно-красный цвет. А для ледяного Элементаля ниже, использовали тёмный сине-зеленый цвет, для придания чувства полупрозрачности глубины поверхности.
Больше информации про Subsurface Shading model,можно узнать тут the Subsurface Shading Model documentation.
Когда вы используете Subsurface Shading Model, у вас появляется доступ к таким параметрам:
Preintegrated Skin — очень похож на Subsurface , но затрачивает меньше ресурсов при рендеринге человеческой кожи, так как данный метод не совсем физически совершенен, в отличии от Subsurface.На картинке ниже приведён пример данной модели освещения.
Когда вы используете Preintegrated Skin Shading Model, у вас появляется доступ к таким параметрам:
Clear Coat — может быть использована для того, чтобы лучше моделировать многослойные материалы, имеющие тонкий полупрозрачный слой пленки по поверхности стандартного материала. Также, Clear Coat также может быть использована c металлической или неметаллической поверхностью.На самом деле, он был специально разработан для моделирования этой второй прослойки поверх бесцветного металла.Как пример, можно привести акриловые или покрытые лаком поверхности, или автомобильная краска.
![]() Monte Carlo референс |
![]() UE4 |
Когда вы используете Clear Coat Shading Model, у вас появляется доступ к таким параметрам:
Subsurface Profile Shading Model — очень похожа на Subsurface model и Preintegrated Skin Shading Model, но требует больше ресурсов для рендеринга, так как делает вид человеческой кожи более реалистичной.
Когда вы используете Clear Subsurface Profile Shading Model, у вас появляется доступ к таким параметрам:
Two Sided Foliag — модель затенения, введена для придания листве/растительности более натурального вида, когда она освещается.При использовании Default Lit Shading Model, листва может выглядеть почти черной.Two Sided Foliag помогает устранить эти проблемы, используя вариацию Subsurface scattering освещения, учитыващей объекты которые являются очень тонкими, помогая создать иллюзию, что свет проходит через листву. Это также помогает устранить темные участки листвы и даёт более равномерный вид освещения.
![]() Two Sided включено |
![]() Two Sided выключено |
Когда вы используете Two Sided Foliage Model, у вас появляется доступ к таким параметрам:
Режимы наложения материалов описывают как материал будет себя вести с окружающим фоном.Перефразируя, это будет звучать примерно так — режим наложения позволяет контролировать то, как движок будет комбинировать материал (источник цвета) с тем, который уже находится в буфере (целевой цвет) при визуализации этого материала оказывающегося перед другими пикселями. Для демонстрации, была создана сцена с камерой и двумя объектами.Камера будет смотреть на (или сквозь) первый объект и мы будем наблюдать, как он будет взаимодействовать с фоном, когда будем менять режимы смешивания.
Opaque Blend Mode — самый простой и частоиспользуемый режим.Он определяет поверхность, через которую свет не проходит и не проникает. Это идеальный вариант для большинства пластмасс, металлов, камня, и большинства других типов поверхности.
![]() |
![]() |
Masked Blend Mode — режим смешивания для объектов, в которых вы можете контролировать видимость в бинароном виде (вкл/выкл).Для примера рассмотрим материал, который имитирует сетчастый забор/решётка. В итоге некоторые участки видны, а некоторые невидимы.
Важно понимать разницу между прозрачным и не рендерящимся («то что не рендерится» //заменить при желании во время редактирования). Прозрачные поверхности, такие как стекло, все равно взаимодействует со светом в виде отражений (отражающая способность). Пиксели которые вызываются при режиме смешивания Masked — не отрисовываются; вы не увидите каких либо отражений на этих участках.Если вы хотите сохранить отражения или блики, вам стоит использовать Translucent Blend Mode или создать многослойный материал.
![]() |
![]() |
Когда вы используете Masked Blend Mode, необходимо обратить особое внимание на Opacity Mask Clip Value.Это скалярная величина с диапазоном от 0 до 1, которая определяет значение непрозрачности маски, текстура которой будет использоваться в качестве предельной точки, за которой все темные пиксели не рендерятся.
![]() Opacity Mask Clip Value (увы -гифка, а не слайдер) |
![]() Структура материала |
Translucent - полупрозрачный режим наложения использующийся на объектах, которые требуют некоторой прозрачности.
Этот режим наложения берёт значение Opacity текстуры и назначает все чёрные участки — прозрачными, белые — непрозрачными, а те участки которые имеют оттенки серого, имеют соответственные уровни прозрачности. Это значит, что с серой Opacity текстурой, вы можете получить полупрозрачный объект.
![]() |
![]() |
При использовании полупрозрачных материалов важно понимать, что они в настоящее время не поддерживают отражающей способности. Это означает, что вы не увидите отражений на поверхности.Впрочем, такие отражения можно сэмулировать, используя кубмапу сцены, структура материала которой :
Additive — режим смешивания, при котором пиксель материала добавляется к пикселю фона.Это очень похоже на режим наложения Linear Dodge (Add) в фотошопе. Это означает, что нет затемнения; поскольку все значения пикселей будут добавлены друг к другу, чёрное будет просто отображаться как прозрачное. Этот режим смешивания является полезным для различных специальных эффектов, таких как огонь, пар, или голограмма.
Как и с полупрозрачным режимом смешивания — этот режим не учитывает отражающей способности.Воссоздать эффект отражения можно тем же способом кубмапы, что упоминался выше.
![]() |
![]() |
Modulate - режим смешивания, просто умножает значение пикселя материала в отношении пикселя фона. Поведение очень напоминает режим наложения Multiply в фотошопе.
В структуре выше,материал был установлен в режим наложения Modulate с режимом затенения Unlit.
![]() |
![]() |
непонятно зачем тут эта гифка, но в оригинале тут стоял слайдер
Режим | Описание |
BLEND_Opaque | Окончательный цвет = цвет источника. Это означает, что материал будет отрисовыватся поверх фона. Этот режим смешивания совместим с освещением. |
BLEND_Masked | Окончательный цвет = цвет источника если OpacityMask > OpacityMaskClipValue, в противном случае пиксель отбрасывается. Этот режим смешивания совместим с освещением. |
BLEND_Translucent | Окончательный цвет = цвет источника непрозрачности + целевой цвет (1 — непрозрачность). Этот режим смешивания не совместим с динамическим освещением |
BLEND_Additive | Окончательный цвет = цвет источника + целевой цвет. Этот режим смешивания не совместим с динамическим освещением. |
BLEND_Modulate | Окончательный цвет = цвет источника х целевой цвет. Этот режим смешивания не совместим с динамическим освещением, или туманом, если это не декаль. |
В Unreal Engine 4, Material Instance являются своего рода зависимыми копиями материала. Их используют чтобы изменять те или иные параметры материала, без перекомпиляции шейдеров. Чтобы использовать Material instance необходимо заранее создавать параметры в исходном материале. Так же Material instance можно использовать, чтобы изменять визуальный вид объекта, или эффекта, прямо во время игры.
Это позволяет создать очень гибкую визуальную составляющую вашего творчества.
Инстансы материалов редактируются в специальном редакторе, отличающийся от основного редактора материалов. Более подробно можно почитать на странице «Редактор инстанс материалов«.
Несмотря на то, что Material instance позволяет самостоятельно изменять внешний вид материала, необходимо знать, что вы не сможете редактировать каждую особенность материала, по умолчанию. Чтобы получить такую возможность, вы должны создать свойства исходного материала (Master Material) и назначить их в качестве параметров. Этот процесс называется параметризация материала.
Параметр материала, выглядит в виде узла данных в редакторе материалов. Технически, это значение которое имеет имя и служит в качестве канала для отправки значений в Material Instance. Эти параметры работают из материалов.
Скажем вы хотите создать материал, цвет которого вы сможете изменить в любой момент. Для этого вы должны всего лишь создать векторный параметр и дать ему имя. После того как вы создадите material instance этого материала. Вы увидите свой параметр под категорией Vector parametrs. Там вы можете его изменять, без необходимости перекомпиляции шейдеров или необходимости создавать отдельный материал.
Здесь вы можете увидеть параметры заложенные в материал.
А здесь мы их видим уже для редактирования в Material Instance
В Unreal Engine 4 доступны для использования 2 вида Material instance
Material Instance Constant – Заранее просчитывается до игрового процессса
Material Instance Dynamic – Изменения вступают в силу в процессе игры в реальном времени
Постоянный Material Instance вычисляется только один раз, заранее, до игрового процесса. Это означает что он не может быть изменен во время игры. Однако, хоть они и являются неизменными, они имеют существенное преимущество в производительности поскольку не требуют компиляции. Например, если у вас есть игра с различными автомобилями, и все экземпляры с разными цветами, но цвета которых не изменяются в процессе игры. То лучше создавать Master Material, представляющий вариации для разных типов автомобилей. Это может быть краска, насколько физический материал металический, глянец и т.п
Material Instance Constant создаются в Content Browser и редактируются с помощью Material Instance Editor.
Material instance dynamic может быть рассчитан непосредственно во время игры или симуляции сцены. Это означает, что вы можете использовать сценарии (Blueprint или скомпилированный C++ код) чтобы изменить те или иный параметры Material instance на протяжении всей игры. Возможные применения этого ограничены только вашей фантазией. Однако стоит учитывать, что такие материалы, менее производительны чем Material instance constant.
Material instance dynamic создаются в Блупринте из основного материала (Master). В Blueprint можно применять данный материал к объекту, который имеет параметризированные свойства, и постоянно иметь к нему доступ через узел Create Dynamic Material instance. После создания Dynamic Material Instance, можно изменять параметры Material instance в игре, через сценарий Blueprint.
Что бы создать статичный инстанс внутри редактора, вам нужно кликнуть правой клавишей мыши по материалу в Content Browser, для которого хотите создать инстанс. Затем выбрать опцию Create Material Instance.
Каждый параметр в материале, может быть организован для просмотра в Material Instance Editor. Связанные параметры могут быть добавлены к группе, что позволяет их быстро найти под выбранной категорией и изменить. Параметры, которые не добавлены в какую либо группу, будут отображаться в категориях по умолчанию (как правило это категории описывающие тип параметра скалярный, векторный и т.д)
Для того чтобы добавить параметр для материала, используйте предназначенные для этого блоки категории Parameters. Есть несколько типов параметров, которые могут быть использованы, в том числе Scalar Parameter, Vector Parameter, различные параметры текстур, и Static Parameter.
После создания вашего параметра, дайте ему уникальное имя, а так же присвойте его к необходимой для вас группе. Так же необходимо задать значение которое будет использоваться по умолчанию.
Scalar Parameter является параметром, который содержит одно значение с плавающей точкой. Оно может быть использовано для управления эффектами на основе отдельных значений, таких как сила отражения, альфа линейной интерполяции, прозрачность и т.п.
Vector parameter это параметр, содержащий в себе значения 4 канального вектора или 4 значения с плавающей точкой. Как правило они используются для настраивания какого либо цвета в материале. Но так же могут быть использованы для передачи данных о местоположении или для какого либо эффекта, который требует несколько значений.
Есть несколько доступных Texture Parameter. Каждый из них зависит от типа текстуры, что он принимает или способа, в котором он используется. Код шейдера, генерируется разный, в зависимости от типа текстуры.
TextureSampleParameter2D принимается основную Texture2D
TextureSampleParameterCube принимает TextureCube или cubemap
TextureSampleparameterFlipbook принимает FlipbookTexture
TextureSampleParameterMeshSubUV принимает Texture2D, которая используется для SubUV смешивания эффектов с сеткой эмитера
TextureSampleParameterMovie принимает MovieTexture (bink видео)
TextureSampleParameterNormal принимает Texture2D, которая используется в качестве Normal map
TextureSampleParameterSubUV принимает Texture2D, которая используется для SubUV эффектов с спрайтами
Статические параметры принименяются во время компиляции, поэтому части, которые замаскированны, имеют более оптимальный код и не выполняются во время выполнения основного материала. Однако, они могут быть изменены только из MaterialInstanceEditor, и не могут быть изменены в Blueprint
Свойства материала нужны для визуализации материала и его отдельных свойств, например способность отражать окружающую среду или рельеф материала.
Не все свойства обязательно применять и вносить в них изменения, так как они имеют значения по умолчанию. Например, когда вы создаете светящийся материал, вам может понадобится только Emissive Color, так как другие свойства не будут иметь значения или будут недоступны, в зависимости от Shading Model параметра. Из-за этого важно понимать, как должен выглядеть ваш материал в итоге. Всего существует три самых важных параметра:
Blend Mode — Определяет, как материал смешивается с пикселями позади.
Shading Model — Определяет, как поверхность материала влияет на свет.
Material Domain — Определяет, как будет использоваться материал.
Редактор материалов автоматически отключает неиспользуемые свойства в зависимости от параметров.
Подробнее о параметрах материалов.
Картинки сбоку кликабельны
Base Color определяет цвет материала.
Данное свойство определяет, насколько материал металезированный. Неметалические материалы должны иметь Metallic на нуле, в то время как металические — на еденицу. Для чистых поверхностей, рекомендуется использовать значение 0 ИЛИ 1. Для грязных, ржавых и т.п поверхностей возможно потребуется использовать значение между 0 и 1.
Данное свойство влияет на то, насколько блестящий неметаллический материал. На металлический материал данное свойство влиять никак не будет.
На практике, данное свойство должно оставаться без изменений(по умолчанию — 0.5) в большинстве случаях.
Шерховатость материала. При увелечении данного свойства, материал будет сильнее рассеивать свет. Благодаря чему, нулевое значение будет означать полностью гладкий и отражающий материал, а значение 1 будет полностью рассеивать свет.
Определяет, какая часть(при использовании маски) материала будет светится.
Значения больше 1 позволят создать HDR эффект и эффект свечения.
Данное свойство определяет прозрачность материала и доступно только при Translucent Blend Mode.
0 — Полностью прозрачный
1 — Полностью видимый
Аналогично Opacity, однако используется с Masked Blend Mode. Так же отличается от Opacity тем, что имеет лишь два состояния: Полностью прозрачный или полностью видимый.
Можете использовать Opacity Mask Clip Value для того, что бы отрезать маску для использования с данным свойством.
Данное свойство использует карту нормалей, которая служит для того, что бы создать рельеф(Эффект, не реальное выдавливание) для поверхности.
Данное свойство позволяет манипулировать вертексами объекта с помощью материала. Это полезно для того, что бы менять форму статичного объекта.
При использовании WPO для того, что бы изменить границы объекта, учтите, что рендер все равно будет использовать оригинальную геометрию, поэтому могут быть артефакты в тенях.
World Displacement работает примерно как и WPO, однако использует тесселляцию вместо обычных вертексов(как WPO). Для использования данного свойства, опция Tessellation должна быть включена в параметрах материала.
Tessellation Multiplier определяет силу тесселляции и используется для того, что бы добавить делатей там, где нужно. При использовании с World Displacement значение нужно выставить больше нуля.
При использовании World Displacement для того, что бы изменить границы объекта, учтите, что рендер все равно будет использовать оригинальную геометрию, поэтому могут быть артефакты в тенях.
Определяет цвет света, который проходит свозь поверхность. Например для материала людской кожи, цвет Subsurface должен быть красным, что бы симулировать влияние крови на свет, проходящий сквось поверхность.
Данное свойство доступно только при Translucent Blend Mode.
Данное свойство отвечает за само-затенение, которое часто зависит от неровности объекта или рельефа поверхности. Обычно соеденяется с АО картой, которая генеруется сторонней программой(пр: 3Ds Max или Zbrush).
Свойство, отвечающее за приломляемость поверхности. Полезно для таких поверхностей, как стекло или вода, которые приломляют свет, проходящий свозь материал.
Коэффиценты приломления для некоторых материалов:
Воздух — 1.00
Вода — 1.33
Лед — 1.31
Стекло — 1.52
Алмаз — 2.42
Данный эффект хорошо симулирует двуслойный материал, который имеет прозрачный слой поверх. Например деревянная поверхность покрытая стеклянной плитой для гладгости. Используется с Clear Coat Shading Model параметром.
Данная модель имеет два свойства:
Clear Coat: сила эффекта. 0 — обычный материал, 1 — Материал м Clear Coat слоем. Полезно для использования маски.
Clear Coat Roughness: Шерховитость Clear Coat слоя.