Создание Функций Материала в Unreal Engine 4

0
7
Создание Функций Материала в Unreal Engine 4

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

Не забудьте проверить документ Создание функций Материала, так как он также содержит много полезной информации о том, как создавать и использовать функции материала.

Функции Материала – это небольшие фрагменты графиков материалов, которые могут быть сохранены в пакетах и ​​повторно использованы в нескольких материалах. Функции Материала позволяют сэкономить и быстро повторно использовать сложные сети Material Graph в других Материалах, а также разрешить абстрагирование более сложных сетей на отдельные узлы, что облегчает создание материалов для художников.

Создание Функций Материала

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

  1. Первое, что нам нужно сделать, это создать Функцию Материала. Это можно сделать  путем правого клика в контент браузере, выбрав New > Materials & Textures > Material Function.

2. Как только функция материала будет создана, ее нужно назвать. Ваше имя должно быть как можно более наглядным, чтобы, когда кто-то смотрит на вашу функцию материала, то может легко понять, что она делает. В этом примере мы будем называть наш узел Custom_Fresnel. Вы можете переименовать свою функцию материала, выбрав ее в окне Content Browser, нажав F2 на клавиатуре, а затем ввести нужное имя.

Построение Функции Материала

  1. Теперь, когда функция материала была создана и переименована, давайте откроем ее, используя Левую кнопку мышки, дважды щелкнув ею по контент браузеру. Когда вы это сделаете, у вас должно получиться что-то похожее на следующее.Material Function Editor UE4
Редактор свойств материала работает очень похоже на то, как работает редактор материалов, две самые большие различия между тем, что делает панель Details и как работает узел «Окончательный материал». Вы можете больше узнать о том, как работает редактор функций материалов, но просматривая обзор функций материалов.

2. Теперь, когда откроется редактор свойств материала, давайте начнем создавать наш эффект Френеля. Поскольку эффект Френеля работает на основе углов обзора, нам нужно будет сравнить текущий угол поверхности с углом нашей камеры, а затем использовать это для определения нашего значения Френеля. Чтобы сделать это внутри нашего шейдера, мы используем узел Dot Product для сравнения нашего текущего угла камеры с углом обзора поверхности. Чтобы выполнить этот тип вычислений с узлами Material, нам понадобится использовать следующие узлы.

  • Constant 3 Vector Node x 1
  • Transform Node x 1
  • Dot Product Node x 1
  • Camera Vector WS Node x 1

Вы можете добавить вышеупомянутые узлы к графику свойств материала несколькими способами, но проще всего найти каждый узел в меню Paletteа затем выбрать узел с помощью левой кнопки мышки и перетащить его в график материалов. По завершении вы должны получить что-то похожее на это:узлы материальной функции UE4

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

3. Когда узлы помещены вниз, настало время установить их и соединить их вместе. Сначала установите синий канал Blue Channel в Constant 3 Vector в 1.0, так как это будет представлять значение Z в нашем термине Френеля. Затем возьмите вывод узла Constant 3 Vector и проложите его во вход узла векторного преобразования Vector Transform. Также убедитесь, что узел Transform Node настроен так, что мы трансформируемся из Tangent Space в World Space. Затем возьмите вывод узла Vector Transform и подключите его ко входу A узла Dot Product. После того, как это будет завершено, возьмите вывод узла Camera Vector и проложите его на вход B узла Dot Product. Когда вы закончите, у вас должно получиться что-то похожее.

настройка узлов Material Function UE44. Следующее, что мы хотим сделать, это добавить узел Clamp Node, чтобы закрепить наши результаты в диапазоне от 0 до 1, чтобы убедиться, что мы не получим ошибок, которые могут вызвать артефакты рендеринга. Вы можете найти узел Clamp, выполнив поиск в меню Palette и перетащив его в График Материалов. Когда вы закончите, у вас должно получиться что-то похожее.

добавить узел Clamp Node UE45. После узла Clamp нам нужно добавить узел One-Minus node, чтобы инвертировать наш эффект так, чтобы влияние оказывалось только на грани. Вы можете найти узел One-Minus, выполнив поиск OneMinus в палитре. По завершении вы должны получить что-то похожее на следующее.

добавить узел One-Minus node UE46. Затем нам нужно добавить два узла ввода функций Function Input. Узлы Function Input – это то, как мы поставляем нашу Функцию Материала со значениями или текстурами, если они помещены внутри другого Материала. Чтобы добавить Function Input к нашему материалу, сделайте поиск Function Input в Палитре, а затем перетащите его в График Материалов. После того, как вы разместите его, вы можете его дублировать, сначала выбрав узел, а затем нажав Ctrl + W на клавиатуре. Когда вы закончите, у вас должно получиться что-то похожее.Узлы Function Input UE4

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

 

7. Теперь нам нужно настроить два узла ввода функций, которые были созданы таким образом, чтобы эта функция материала могла использоваться в Материалах. Если вы выберете один из узлов Function Input, а затем посмотрите на панель Details, вы заметите, что для заполнения достаточно нескольких вариантов. В этом примере мы будем заполнять только Input NameDescriptionInput Type и Preview Value. Когда это будет завершено, ваши узлы ввода функций должны выглядеть следующим образом.

  • Exponent Input Exponent Input UE4
  • Intensity Input 

Intensity Input  UE4

Для получения дополнительной информации о том, что делает каждый из узлов Input Function, ознакомьтесь с документацией узла Input Function.

8. Теперь, когда теперь устанавливаются узлы ввода функций, теперь нам нужно добавить Power Node к Графику Материалов. Мы используем Power Node, чтобы мы могли либо увеличить, либо уменьшить спад нашего эффекта Френеля. Это поможет подтолкнуть эффект Френеля ближе или дальше от краев меши, в которой он находится. Чтобы добавить Power Node, найдите его в Палитре, а затем перетащите его в График Материалов. Когда вы закончите, у вас должно получиться что-то похожее.

добавить Power Node к Графику Материалов UE49. Затем мы добавим Multiply Node, чтобы мы могли контролировать интенсивность эффекта Френеля. Чтобы добавить узел Multiply, найдите его в Palette, а затем перетащите его в График материалов. Когда вы закончите, у вас должно получиться что-то похожее.

Добавить узел Multiply Node UE410. Теперь пришло время подключить вместе все узлы, которые нам нужно добавить в Material Graph. Во-первых, нам нужно подключить выход узла OneMinus к Базовому входу узла Power. Затем нам нужно подключить наш первый узел Function Input, Fresnel Exponent, в инпут Exp узла Power. Как только это будет завершено, мы должны затем подключить выход узла Power ко входу A узла Multiply, а затем подключить наш второй Function Input, Frennel Intensity, ко входу B узла Multiply. Наконец, нам нужно взять вывод узла Multiply и подключить его ко входу узла Output Result.

11. После того, как все узлы Material были подключены, нам необходимо скомпилировать Функцию Материала, нажав кнопку Apply на главной панели инструментов. Если Функция Материала скомпилирована правильно, кнопка Apply будет недоступна. По завершении вы должны получить нечто похожее на следующее изображение.скомпилировать Функцию Материала UE4

Использование Функций Материала

  1. Закончив работу с Материалом, закройте Редактор Функций Материала и создайте новый Материал в контент браузере. Чтобы создать новый Материал, щелкните правой кнопкой мышки в контент браузере, а затем выберите Материал из списка Basic Assets List и назовите новый материал Fresnel_Material.

2. Когда создан Fresnel_Material, откройте его, дважды щелкнув по нему левой кнопкой мышки в контент браузере. Открыв Материал, давайте сначала добавим новую созданную Функцию Материала, перетащив ее из контент браузера в наш Материал.

3. В этом примере мы добавим следующие узлы в наш Материал, чтобы у нас был немного лучший просмотр. Не забудьте найти перечисленные ниже узлы для поиска имени узла в меню Палитры, а затем перетащить узел из меню Палитра прямо в График Материалов. Когда вы закончите, у вас должно получиться нечто похожее.

  • Constant 3 Vector Node x 1
  • Scalar Parameter x 4

перетащить узел в График Материалов UE44. Теперь, когда все узлы были добавлены, пришло время подключиться к соответствующим входам и выходам. Сначала подключите Constant 3 Vector к инпуту Базового Цвета на главном шейдерном узле Main Shader. Затем подключите один из Constant One ко входу Metallic узла Main Shader. Затем подключите другой элемент Constant One ко входу Roughness на узле Main Shader. Наконец, нам захочется подключить последние два узла Constant One к Fresnel Intensity и Fresnel Exponent, а затем подключить вывод узла Custom_Fresnel ко входу Emissive Color на узле Main Shader. Когда вы закончите, у вас должно получиться что-то похожее.

5. Теперь, когда узлы подключены ко входу Main Material, пришло время добавлять значения к узлам. Заполните каждый из соответствующих узлов со следующими значениями и после завершения убедитесь, что вы Компилируете свой материал. Когда вы закончите, у вас должно получиться что-то похожее.

  • Base Color: R:1.0 G:0 B:0
  • Metallic: 1.0
  • Roughness: 0.5
  • Fresnel Intensity: 1.0
  • Fresnel Exponent: 5.0

скомпилировать материал UE46. Теперь Материал готов к компиляции и использованию на вашем уровне. Вот пример того, как он выглядит применительно к некоторой случайной меши на уровне по умолчанию.

Создание Функций Материала в Unreal Engine 4Вывод

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