В этом уроке для определения места рассечения используются локальные пространственные координаты материала, а не абсолютное положение материала в мире.
Для создания эффекта рассечения сначала нужно настроить граф узла излучения, чтобы создать сплошной материал, а затем использовать локальное пространство сетки и функцию материала, чтобы определить место рассечения.
Создание графа узлов излучения
Нажмите на корневой узел материала и выберите параметр Двухсторонний на панели Сведения.
Откройте выпадающее меню Режим смешивания и выберите С маской.
Добавьте к скопированному материалу следующие узлы, нажав правой кнопкой на графе узлов и выбрав узлы:
3 узла Constant (Константа)
2 узла Выражение Constant 3Vector
2 узла Clamp (Ограничение)
Узел Append3Vector
Узел WorldPosition
Узел Subtract (Вычитание)
Узел Dot Product (Скалярное произведение)
Узел Multiply (Умножение)
Узел Linear Interpolate (Линейная интерполяция)
Узел TrueSidedSign
Дважды нажмите на первый узел Constant3Vector и добавьте цвет внешней стороны материала.
Соедините белый контакт первого узла Constant3Vector со входом «Базовый цвет» корневого узла материала.
Соедините контакт первого узла Константа с вводом «Шероховатость» корневого узла материала и измените его значение на 0,75.
Данная конфигурация позволяет задать базовый цвет и реакцию материала на освещение объекта, к которому прикреплён материал. Следующая конфигурация создаст излучение, благодаря которому внутренняя поверхность сетки не будет прозрачной.
Соедините узел TwoSidedSign с узлом Ограничить, а затем узел Ограничить соедините с вводом «Альфа» узла Линейная интерполяция.
Дважды нажмите на второй узел Constant3vector и добавьте цвет на внутреннюю поверхность сетки. Установите связь между белым контактом узла Constant3Vector и входом А узла Lerp (Линейная интерполяция).
Выберите узел Lerp (Линейная интерполяция) и задайте для входа B значение 0,0.
Установите связь между узлом Lerp (Линейная интерполяция) и входом А узла Multiply (Умножение).
Выберите узел Multiply (Умножение) и измените значение входа B на 0,3.
Соедините узел Multiply (Умножение) со входом «Испускаемый цвет» корневого узла материала.
Блок-схема узлов излучения готова.
Граф расположения
Далее создайте граф расположения, который сможет определять местоположение сетки, чтобы удалять отдельные её части из проекта.
Вы можете скопировать узел, в котором уже используется граф излучения, и удалить часть графа, которая вам не нужна, чтобы затем добавить необходимую конфигурацию узлов для создания эффекта.
Ориентируясь на данные о местоположении сетки, вы можете использовать материал для удаления её частей. Этот эффект также можно использовать для создания анимации.
Создайте узел функции материала, нажав правой кнопкой в Редакторе материалов и напечатав в строке поиска слово Функции. Выберите настройку MaterialFunctionCall. В редакторе материалов появится узел Unspecified Function (Неопределённая функция).
У вас не получится найти конкретную функцию материала в редакторе материалов, для этого вам нужно создать узел неопределённой функции и привязать к нему функцию.
Выберите узел «Неопределённая функция» и привяжите функцию материала Локальное положение из выпадающего меню Функция материала на панели «Сведения». Узел функции материала LocalPosition автоматически появится в Редакторе материалов.
Создайте второй узел Неопределённая функция и привяжите к нему функцию ObjectLocalBounds.
Создайте и откройте новый Экземпляр материала.
Выберите Основной узел материала и поменяйте значение Режим смешивания на С маской.
Добавьте следующие узлы в Редактор материалов:
Узел Разделить
Узел Constant3Vector
Узел ComponentMask
Узел Clamp (Ограничение)
2 узла Константа
2 узла Subtract (Вычитание)
Выберите узел Constant3Vector и нажмите на него дважды, чтобы добавить цвет.
Установите связь между контактом вывода белого узла Constant3Vector и вводом «Базовый цвет» в Основном узле материала.
Выберите узел Константа и задайте для него значение 0,75.
Соедините узел Константа с вводом «Шероховатость» в Основном узле материала.
Соедините контакт Локальное положение экземпляра узла Локальное положение с вводом A узла Разделить.
Соедините контакт Максимальные локальные границы узла ObjectLocalBounds с вводом B узла Разделить.
Соедините узел Разделить с вводом B первого узла Вычитание.
Измените значение ввода A узла Вычитание на 1,0.
Соедините первый узел Вычитание с узлом Маска.
Соедините узел Маска с вводом A второго узла Вычитание.
Выберите второй узел Константа и измените его значение на 0,1.
Соедините узел Константа с вводом B второго узла Вычитание.
Соедините второй узел Вычитание с белым вводом узла Ограничить.
Измените значение Макс. узла Ограничить на 1,0.
Выберите корневой узел материала на панели «Сведения» и измените значение Режим смешивания на С маской. В основном узле материала станет доступна функция Маска прозрачности.
Соедините узел Ограничить с параметром Маска непрозрачности корневого узла материала.
После подключения узлов конфигурация должна выглядеть вот так.
Вместе с изменением значения ввода A первого узла Вычитание будет меняться внешний вид сетки.
Это позволяет определить локальное расположение объекта (градиент в X / Y / Z, при котором все значения слева / ниже / за пределами центра объекта являются отрицательными, а все значения справа / выше / до центра объекта — положительными). Эти значения определяются размером объекта в мире.
Чтобы нормализовать значения, например, поместить их в диапазон [0, 1], мы делим эти значения на их максимальную величину (которая определяется границами объекта). Вход 1 - Б переключает направление градиента, вследствие чего значения справа / сверху / спереди оказываются меньше, чем значения слева / снизу / сзади.
Узел ComponentMask является альтернативой узлу DotProduct с синим каналом: он обеспечивает тот же результат. Вы можете вычесть предельное значение — одну из констант, преобразованных в параметр, как указано выше (которая находится в диапазоне 0, 1), — и устранить все отрицательные значения, прежде чем подключать его к ячейке непрозрачности.