Выражения Векторных Операций в Unreal Engine 4

0
4
Выражения Векторных операций в Unreal Engine 4

AppendVector

Выражение AppendVector позволяет объединить каналы для создания вектора с большим количеством каналов, чем оригинал. Например, вы можете взять два отдельных значения Constants и добавить их для создания двухканального значения Constant2Vector. Это может быть полезно для переупорядочения каналов внутри одной текстуры или для объединения нескольких оттенков серого в одну текстуру цвета RGB.

НазваниеОписание
Свойство
AПринимает значение (я) для добавления к ним.
BПринимает значение (я), которое необходимо добавить.

Примеры: Добавление (Append ) 0,2 и 0,4 (0.2,0.4); Добавление (0.2,0.4) и (1.0) составляет (0.2,0.4,1.0).

Пример Добавления Вектора UE4

ComponentMask

Выражение ComponentMask позволяет вам выбрать конкретное подмножество каналов (R, G, B и/или A) с входа для перехода к выходу. Попытка пропустить канал через то, что не существует на входе, приведет к ошибке, если только вход не является единственным постоянным значением. В этом случае одно значение передается каждому каналу. Текущие каналы, выбранные для передачи, отображаются в строке заголовка выражения.

НазваниеОписание
Свойство
RЕсли этот флажок установлен, красный (первый) канал входного значения будет передан на выход.
GЕсли флажок установлен, зеленый (второй) канал входного значения будет передан на выход.
BЕсли этот флажок установлен, синий (третий) канал входного значения будет передан на выход.
AЕсли флажок установлен, альфа (четвертый) канал входного значения будет передан на выход.

Примеры: ComponentMask с входом (0.2,0.4,1.0) и G-каналом будет выдавать результат (0.4), который отображается как 40% яркого значения оттенков серого при использовании в качестве цветового вектора.

Пример маски компонента UE4

CrossProduct 

Выражение CrossProduct вычисляет поперечное произведение двух трехканальных входных значений вектора и выводит полученное трехканальное векторное значение. Учитывая два вектора в пространстве, поперечное произведение представляет собой вектор, перпендикулярный к обоим входам.

НазваниеОписание
Свойство
AПринимает трехканальное значение вектора.
BПринимает трехканальное значение вектора.

Пример использования: CrossProduct часто используется для вычисления направлений, перпендикулярных двум другим направлениям.

Пример кросс-продукта UE4

DeriveNormalZ

Выражение DeriveNormalZ выводит компонент Z нормали касательного пространства, заданный компонентами X и Y, и выводит полученную нормаль трехканального касательного пространства. Z рассчитывается как Z = sqrt(1 -(x * x + y * y));

НазваниеОписание
Свойство
InXYПринимает в X и Y компоненты нормали касательного пространства в виде двухканального векторного значения.

Пример Получения Нормального Z UE4

DotProduct

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

НазваниеОписание
Свойство
AПринимает значение или вектор любой длины.
BПринимает значение или вектор той же длины, что и A.

Пример Скалярное Произведение UE4

Normalize

Выражение Normalize вычисляет и выводит нормированное значение его ввода. Нормализованные векторы (также называемые «единичными векторами») имеют общую длину 1.0. Это означает, что каждая компонента входа делится на общую величину (длину) вектора.

Примеры: При прохождении (0,2,0) или (0,0.2,0) через Normalize выдается (0,1,0). Вывод (0,1, -1) через Normalize будет выводиться (0, 0.707, -0.707). Единственный частный случай – это полностью нулевой вектор, который не изменится.

Нормализированный вектор входа UE4Нормализированный вектор входаНенормализированный вектор входа UE4Ненормализированный вектор входа
Нет необходимости нормализовать выражение, которое подключается к выходному материалу Normal.

Transform

Выражение Transform преобразует трехканальное векторное значение из одной исходной системы координат в другую.

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

НазваниеОписание
Свойство
SourceУказывает текущую систему координат для преобразования вектора из нее. Это может быть один из: World, Local или Tangent.
DestinationУказывает целевую систему координат для преобразования в нее вектора. Это может быть один из: World, View, Local или Tangent.

Узел Transform учитывает зеркальные UVs, что позволяет, например, выделить, что влияет только на правый край символа.

Узел Transform полезен для генерации нормалей мирового пространства для воспроизведения образцов кубмапы. Карта нормали может быть преобразована в мировое пространство. Ниже приведен пример преобразования нормалей в мировое пространство для выборки cubemap:

Пример преобразования 1 UE4

Преобразование нормалей для просмотра пространства может быть использовано для создания краевых эффектов. Это может быть достигнуто с помощью нормалей меши для создания координат текстуры (обычно называемых “Sphere Mapping” (Сферное сопоставление)). С помощью этого метода нормали, обращенные непосредственно к камере, будут отображаться в центр координат текстуры, а нормали, перпендикулярные к камере, будут отображаться на краю координат текстуры. Ниже приведен пример отображения сфера:

Тестовая Текстура Карты Сферы UE4

Constant3vector со значением (0,0,1) подается в Transform с помощью набора TRANSFORM_View, который затем передается через ComponentMask (только через R и G). Поскольку Transform выдаст диапазон значений от -1 до 1, мы должны смещать значения, чтобы поместить их в диапазон 0 – 1. Это делается умножением на 0.5, а затем добавлением 0.5. Затем просто вставьте это в координаты текстуры. Любая текстура будет работать; Мы сделали один с тремя кольцами, чтобы эффект был очевиден.

Тестовая Текстура Карты Сферы UE4

Чтобы использовать этот эффект с картой нормали, просто замените Constant3Vector на текстуру карты нормали.

Вот пример этого материала сферы, примененного к каплевидной каменной меши:

Пример Карты Сферы UE4

VertexColor является взаимоисключающим с узлом Transform из-за ограниченных интерполяторов. Если вы используете как узел Transform, так и VertexColor, то VertexColor выйдет из белого.
В настоящее время узел преобразования не обрабатывает неравномерное масштабирование.

TransformPosition

Этот узел устарел из-за больших проблем точности, при использовании для вывода мира, отличного от источника! Вместо этого используйте узел WorldPosition.

Выражение TransformPosition может преобразовывать любую позицию из пространства экрана в пространство назначения, указанное переменной TransformType выражения. В настоящее время поддерживается только преобразование в мировое пространство. Это выражение можно использовать для получения координат мира в материале. Чтобы визуализировать мировое положение, вы можете подключить его прямо к эмиссии.