Instanced Materials – Приведенные Материалы в Unreal Engine 4

0
3
Instanced Materials - Приведенные Материалы UE4

В Unreal Engine 4, получение Экземпляра Материала используется для изменения внешнего вида Материала без дорогостоящей перекомпиляции Материала. В то время как типичный Материал не может быть отредактирован или изменен без повторной компиляции (что-то, что должно произойти до геймплея), Экземпляр Материала может быть изменен без такой перекомпиляции. Некоторые типы Экземпляров Материалов могут даже изменяться во время геймплея в ответ на игровые события (например, дерево, чей Материал чернеет и обугливается, когда оно горит). Это позволяет получить огромную визуальную гибкость в ваших художественных элементах.

Экземпляры и Параметры

Несмотря на то, что целью Material Instance является добавление недорогого способа редактирования внешнего вида Материала, важно иметь в виду, что вы не можете редактировать каждую отдельную деталь Материала по умолчанию. Прежде чем Экземпляр Материала действительно будет доступен для редактирования, вы должны сначала выбрать, какие свойства исходного (или основного) Материала, которые вы хотите редактировать в экземпляре, и обозначить их как параметры. Это называется параметризацией вашего Материала.

Параметр рассматривается как узел данных в редакторе материалов. Технически это именованное значение, которое служит каналом для передачи данных в экземпляр материала. Эти параметры отображаются в редакторе Экземпляра Материала или в сценарии (чертежи или код) и затем могут быть отредактированы. Скажем, например, что вы хотите создать материал, цвет которого можно изменить «на лету». Вместо того, чтобы просто присваивать значение цвету, например красному, вместо этого вы должны назначить векторный параметр для свойства базового цвета Материала. Вы должны указать имя для этого параметра. Когда вы создаете Экземпляр этого Материала, вы найдете свой указанный векторный параметр, указанный в свойствах экземпляра, и благодаря этому вы можете установить цвет на все, что пожелаете, и все без перекомпиляции.

Здесь вы можете увидеть параметры, установленные в Материале.

Параметры материалов UE4И здесь мы видим полученные в результате экспонированные параметры в Экземпляре Материала.

параметры в Экземпляре Материала UE4Константные и динамические Экземпляры Материала – Constant и Dynamic 

В Unreal Engine 4 есть 2 типа Экземпляров Материала:

  • Экземпляр Материала Constant – рассчитывается только до времени выполнения.
  • Экземпляр Материала Dynamic – может быть вычислен (и отредактирован) во время выполнения.

Экземпляр Материала Constant

Экземпляр Материала Constant представляет собой Экземпляр Материала, который вычисляет только один раз, до времени выполнения. Это означает, что он не может меняться во время игры. И хотя они остаются постоянными на протяжении всей игры, у них все еще есть преимущество в производительности, не требующее компиляции. Например, если у вас есть игра с множеством автомобилей, все с отдельными заданиями на лакировку, но цвета которых не будут меняться во время игры, оптимальным подходом было бы создание основного Материала, который представлял бы базовые аспекты общей краски автомобиля, а затем создание Константы (Constants) Экземпляра Материала, чтобы предоставить вариации для разных типов автомобилей, такие как разные цвета, различные уровни металлика, блеск и т.д.

Константы Экземпляров Материала создаются в контент браузере и редактируются с помощью Редактора Экземпляра Материала.

Экземпляр Материала Dynamic 

Экземпляр Материала Dynamic (MID) – это Инстанционный Материал, который можно вычислить во время игры (во время выполнения). Это означает, что во время игры вы можете использовать скрипт (либо скомпилированный код, либо визуальный скрипт Blueprint), чтобы изменить параметры вашего Материала, тем самым изменяя ваш Материал на протяжении всей игры. Возможные приложения для этого бесконечны: от разного уровня разрушения для изменения задания краски до смешивания в разных текстурах кожи в ответ на выражение лица.

MIDs создаются внутри скрипта либо из параметризованного Материала, либо из Экземпляра Материала Constants. В Blueprint можно взять данный Материал, который имеет параметризованные свойства, и передать его через узел Create Dynamic Material Instance. Результат этого узла затем применяется к рассматриваемому объекту через узел Set Material, в результате чего создается новый Материал, который можно изменить во время игры.Скрипт для MID UE4

Техническое приложение

Чтобы разрешить применение не-экземплярных Материалов к примитивам, используется абстрактный базовый класс MaterialInterface. Этот класс является интерфейсом как для выражений, так и для значений параметров прикладного Материала. Класс Material является подклассом MaterialInterface, который определяет выражения и значения параметров по умолчанию. Эти типы наследуют их выражения и значения параметров от их родителя, опционально переопределяя или оживляя некоторые из значений параметров.

Кстати, это означает, что если вы хотите, чтобы переменный Blueprint мог принимать либо Материал, либо Экземпляр Материала Constant, вам нужно убедиться, что она является переменной типа MaterialInterface!

Приведение Материала в Редактор

Существует два основных метода, которые можно использовать для создания экземпляра материала в редакторе.

Нажмите кнопку Add New в Контент Браузер и выберите Экземпляр Материала.

Приведение Материала в Редактор UE4Дайте имя новому Экземпляру Материала.

Имя нового экземпляра материала UE4Дважды щелкните свой новый Экземпляр Материала. Откроется Редактор Экземпляра Материала. Используйте Контент Браузер, чтобы выбрать и присвоить Материал, который будет создан для свойства Parent для нового Экземпляра Материала.

Редактор Экземпляра Материала UE4Если вы уже знаете Материал, для которого вы хотите создать экземпляр, вы также можете щелкнуть правой кнопкой мышки этот Материал в контент браузере и выбрать Create Material Instance (Создать Экземпляр Материала).

Создать Экземпляр Материала UE4Группы Параметров

Выражения параметров имеют свойство Group, которое позволяет организовывать их при просмотре в Редакторе Экземпляров Материалов. Связанные параметры могут быть добавлены в ту же группу, что позволяет быстро находить и изменять все параметры, контролирующие конкретный эффект или аспект родительского материала. Параметры, не принадлежащие группе по умолчанию, и которые будут отображаться внутри, принадлежат группе None.

Группы Параметров UE4Создание параметризованных Материалов

Чтобы добавить параметр к материалу, используйте один из типов выражения параметров в Редакторе Материалов. Существует несколько типов параметров, которые могут использоваться, включая ScalarParameter, VectorParameter, различные параметры текстуры и статические параметры.

Дайте параметру уникальное имя, назначьте его группе и дайте ему значение по умолчанию.

Параметры материалов UE4Скалярные параметры

ScalarParameter – это параметр, который содержит одно значение с плавающей запятой. Он может использоваться для управления эффектами, основанными на единичных значениях, таких как зеркальная мощность, альфа линейной интерполяции, непрозрачность и т.д.

См.  Справочную информацию Выражения Материала для полного списка и описания всех выражений.

Векторные параметры

VectorParameter представляет собой параметр, который содержит 4-канальное векторное значение или 4 значения с плавающей запятой. Они обычно используются для обеспечения конфигурируемых цветов, но также могут использоваться для представления позиционных данных или управления любым эффектом, требующим нескольких значений.

См. Справочную информацию Выражения Материала для полного списка и описания всех выражений.

Параметры текстуры

Доступны несколько параметров текстуры. Каждый из них относится к типу текстуры, который он принимает, или к способу, которым он используется. Из-за того, что генерируемый шейдерный код отличается от типа текстуры, для каждого конкретного типа текстуры требуется отдельное выражение.

  • TextureSampleParameter2D принимает базовый Texture2D.
  • TextureSampleParameterCube принимает TextureCube или cubemap.
  • TextureSampleParameterFlipbook принимает FlipbookTexture.
  • TextureSampleParameterMeshSubUV принимает Texture2D, который используется для эффектов sub-uv с эмиттером меши.
  • TextureSampleParameterMeshSubUV принимает Texture2D, который используется для эффектов смешивания sub-uv с эмиттером меши.
  • TextureSampleParameterMovie принимает MovieTexture (видеоролик).
  • TextureSampleParameterNormal a Texture2D, который используется как карта нормали.
  • TextureSampleParameterSubUV принимает Texture2D, который используется для эффектов sub-uv со спрайт-эмиттером.

См. Справочную информацию Выражения Материала для полного списка и описания всех выражений.

Статические параметры

Статические параметры Static применяются во время компиляции, поэтому они создают более оптимальный код, так как целые ветви материала, которые маскируются статическим параметром, будут скомпилированы и не будут выполняться во время работы. Поскольку они применяются во время компиляции, они могут быть изменены только из MaterialInstanceEditor, а не из скрипта.

* Предупреждение: новый Материал будет скомпилирован для каждой комбинации статических параметров в базовом материале, которые используются экземплярами!

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

См. Static Switch Parameter и Static Component Mask Parameter для получения информации о конкретных типах статических параметров.

См. Справочную информацию Выражения Материала для полного списка и описания всех выражений.