Коротко
- Material Function позволяет сохранить сеть узлов материала как отдельный ресурс и использовать её повторно.
- В примере функция Fresnel управляет эффектом, зависящим от угла, с помощью входных параметров экспоненты и интенсивности.
- Узлы Function Input и Function Output позволяют передавать данные в функцию и получать результат.
- Изменения существующей Material Function могут повлиять на материалы, в которых она используется.
Чему вы научитесь в этом руководстве?
Вместо того чтобы снова и снова собирать одну и ту же сеть узлов в разных материалах Unreal Engine, её можно объединить в Material Function. Тогда сложный фрагмент можно будет использовать в виде одного вызова функции, добавляемого в другие материалы. Следуя примеру Fresnel от Epic Games, мы создадим эффект, подчёркивающий края и позволяющий настраивать интенсивность и характер затухания.
Эффекты типа Fresnel можно применять, чтобы выделять края поверхности в зависимости от угла обзора и делать силуэт заметнее в темноте. Это не физическая симуляция освещения, а способ добавить визуальную информацию к материалу. Основная задача — поместить вычисления внутрь функции, чтобы пользователю оставалось настраивать только необходимые параметры.
Требования
Пошаговое руководство по Fresnel в источниках подготовлено для Unreal Engine 4 и опубликовано на странице документации для версии 4.27. Поэтому названия меню и интерфейс примера приведены в соответствии с этим руководством. В источниках не указаны требования к созданию аккаунта, аппаратные требования или цена продукта.
Для работы понадобятся Content Browser и Material Editor, а также Material Function и Material. В примере используются следующие узлы: Constant 3 Vector, Transform, Camera Vector WS, Dot Product, Clamp, OneMinus, Power и Multiply. Чтобы функцию можно было настраивать, мы добавим два узла Function Input, а для вывода результата — Function Output.
Пошаговое создание Material Function с эффектом Fresnel
Создайте ресурс функции. Щёлкните правой кнопкой мыши в Content Browser и выберите New > Materials & Textures > Material Function. Дайте функции название, описывающее её назначение. Использованное в примере имя Custom_Fresnel наглядно показывает, что делает функция.
Соберите первую часть вычисления угла. Откройте Material Function и добавьте в граф узлы Constant 3 Vector, Transform, Camera Vector WS и Dot Product. Установите значение синего канала узла Constant 3 Vector на 1,0. Подключите его выход к входу Transform и настройте Transform для преобразования из Tangent Space в World Space. Подключите выход Transform к входу A узла Dot Product, а выход Camera Vector WS — к входу B. Это вычисление использует соотношение между направлением поверхности и направлением камеры.
Ограничьте результат и получите эффект по краям. Подключите выход Dot Product к узлу Clamp и задайте диапазон значений от 0 до 1. Затем подключите выход Clamp к узлу OneMinus. Так получается инвертированное значение, которое передаётся на следующий этап и помогает усилить эффект по краям, как в примере.
Задайте входные параметры функции. Добавьте два узла Function Input. Назовите один Fresnel Exponent, другой — Fresnel Intensity; в полях описания можно указать, за что отвечает каждый вход. Установите для обоих входов тип Scalar. Узлы Function Input позволяют передавать значения в функцию извне; позже их можно будет подключить в материале, использующем эту функцию.
Подключите управление экспонентой и интенсивностью. Добавьте по одному узлу Power и Multiply. Подключите выход OneMinus к входу Base узла Power, а вход Fresnel Exponent — к входу Exp. Подключите выход Power к входу A узла Multiply, а Fresnel Intensity — к входу B. Таким образом, параметр экспоненты управляет распределением эффекта по краям, а интенсивность — его уровнем.
Задайте выход и скомпилируйте функцию. Подключите выход узла Multiply к Function Output. Затем нажмите Apply на панели инструментов, чтобы скомпилировать Material Function. В исходном руководстве указано, что после успешной компиляции кнопка Apply становится неактивной. Если появляется ошибка, сначала проверьте соединения и типы входов.
Проверьте функцию в материале. Создайте новый Material в Content Browser и откройте его, затем добавьте функцию Custom_Fresnel в граф. Как в примере, подключите узел Constant 3 Vector к Base Color и задайте красный цвет: R 1,0; G 0; B 0. Для настроек, помимо основного цвета, используйте четыре узла Scalar Parameter. Установите Metallic на 1,0, Roughness на 0,5, Fresnel Intensity на 1,0 и Fresnel Exponent на 5,0. Подключите выход функции к входу Emissive Color материала и скомпилируйте его. Эти значения служат начальными настройками примера; их можно менять для получения другого визуального результата.
При желании опубликуйте функцию в библиотеке. Щёлкните по пустой области графа Material Function, чтобы снять выделение узлов; основные свойства функции появятся на панели Details. Включите параметр Expose to Library, добавьте описание и укажите подходящие категории. После этого функцию можно будет найти в Material Function Library внутри Material Editor. Чтобы новая функция появилась в списке, может потребоваться перезапустить редактор.
Распространённые ошибки
В первую очередь проверьте соединения входов и выходов: функция должна получать значения через Function Input и передавать рассчитанный результат через Function Output. Данные, подключаемые к вызову функции, должны соответствовать ожидаемому типу; например, подключение неподходящего типа ко входу, который ожидает Scalar, может привести к ошибке компиляции. Чтобы проверить промежуточный результат функции, щёлкните правой кнопкой мыши по узлу и выберите Start Previewing Node — так можно просмотреть граф вплоть до этого узла.
Другой риск — неосторожное изменение функции, уже используемой в проекте. Удаление узла Function Input может привести к исчезновению соответствующего входа в материалах, использующих эту функцию. Ошибка в функции или изменение её существующего поведения также могут повлиять на корректную компиляцию или работу подключённых материалов. Поэтому перед изменением опубликованной функции стоит проверить материалы, в которых она используется, и протестировать правки на примере материала.
Чем это полезно в архитектурной визуализации и рабочих процессах?
Если в архитектурной визуализации похожие эффекты поверхностей повторяются в разных материалах, перенос общей сети узлов в Material Function может упростить организацию и поддержку проекта. Когда меняется общий расчёт в функции, отпадает необходимость по отдельности обновлять множество скопированных графов. Выделение краёв можно использовать для визуальных экспериментов, особенно если нужно подчеркнуть силуэт модели. Однако источники не содержат сведений о влиянии функции на производительность архитектурного рендеринга, аппаратных требованиях или совместимости с разными версиями Unreal Engine. Перед внедрением общих функций студиям следует сначала проверить их в используемой версии и с текущей структурой материалов, а затем применять изменения под контролем.
Что делать дальше
Для начала меняйте значения Intensity и Exponent и изучите, как меняется результат на поверхности; добавьте одну и ту же функцию в несколько материалов, чтобы оценить, как повторное использование упрощает поддержку. Понятное название, описания входов и краткое описание в библиотеке помогут команде находить нужные функции. Преобразуя другие графы материалов в функции, также делайте входы и выходы понятными: скрытая внутри функции сеть узлов должна использоваться через ясный внешний интерфейс.
Источник и лицензия
Это руководство адаптировано на турецкий язык на основе документации Epic Games Material Functions Overview, Making Material Functions и Creating Material Functions. Исходные страницы опубликованы под свободной лицензией; пример рабочего процесса с Fresnel основан на документации Unreal Engine 4.27.
Источники
Источников: 3Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных бюро и команд визуализации главное преимущество этого метода — возможность хранить повторяющиеся узлы материалов в одном месте и упростить управление изменениями. Выделение краёв также можно быстро проверить, чтобы сделать силуэт заметнее, однако его не следует рассматривать как замену физическому освещению.
Перед внедрением важно проверить пример в используемой версии Unreal Engine и убедиться, как функция повлияет на существующие материалы. Источники не содержат сведений о цене, условиях лицензирования и аппаратных требованиях, поэтому не стоит предполагать наличие преимуществ по стоимости или производительности. Студентам проще всего разобраться в принципе работы функции, начав с небольшого тестового материала.
Частые вопросы
Для чего нужна Material Function в Unreal Engine?
Она позволяет сохранить сеть узлов материала как отдельный ресурс и повторно использовать её в других материалах. Сложную сеть можно добавить в граф материала как один вызов функции.
Какие параметры можно настраивать в Material Function с эффектом Fresnel?
В этом примере Fresnel Exponent управляет распределением эффекта, а Fresnel Intensity — его интенсивностью. Начальные значения примера для них в материале — 5,0 и 1,0 соответственно.
Как отобразить Material Function в библиотеке?
Включите параметр Expose to Library в основных свойствах функции и задайте её категории. Чтобы новая функция появилась в списке, может потребоваться перезапустить редактор.



