Узел Math
Узел Math позволяет выполнять математические операции.
Входы
Входы узла являются динамическими. Некоторые входы доступны только в определённых операциях. Например, вход Addend доступен только в операторе Multiply Add.
- Value
Входное значение. Тригонометрические функции читают это значение как радианы.
- Addend
Вход Addend.
- Base (основание)
Вход основания.
- Exponent (экспонента)
Вход экспоненты.
- Epsilon
Вход Эпсилон.
- Distance (расстояние)
Вход расстояния.
- Min
Вход минимума.
- Max
Вход максимума.
- Increment (увеличение)
Вход инкремента.
- Scale (масштаб)
Вход масштаба.
- Degrees (градусы)
Вход градусов.
- Radians (радианы)
Вход радиан.
Свойства
- Операция
Математическая операция, применяемая к входным значениям:
- Functions (функции)
- Add:
Сумма двух значений.
- Subtract:
Разность между двумя значениями.
- Multiply:
Произведение двух значений.
- Divide (деление):
Деление первого значения на второе значение.
- Multiply Add:
Сумма произведения двух значений со значением Addend.
- Power:
Возведение базы (Base) в степень экспоненты (Exponent).
- Logarithm (логарифм):
Логарифм значения с базой (Base) в качестве основания.
- Square Root (квадратный корень):
Квадратный корень значения.
- Inverse Square Root (обратный квадратный корень):
Единица, делённая на квадратный корень значения.
- Absolute:
Входное значение читается без учёта его знака. Это превращает отрицательные значения в положительные значения.
- Exponent (экспонента):
Возводит число Эйлера в степень значения.
- Comparison (сравнение)
- Minimum (минимум):
Выводит наименьшее из входных значений.
- Maximum (максимум):
Выводит наибольшее из двух входных значений.
- Less Than (меньше чем):
Выводит 1.0, если первое значение меньше второго. В противном случае вывод равен 0.0.
- Greater Than (больше чем):
Выводит 1.0, если первое значение больше второго. В противном случае вывод равен 0.0.
- Sign (знак числа):
Извлекает знак входного значения. Все положительные числа выведут 1.0. Все отрицательные числа выведут -1.0. И значение 0.0 выведет 0.0.
- Compare (сравнение):
Выводит 1.0, если разница между двумя входными значениями меньше или равна Epsilon.
- Smooth Minimum (сглаженный минимум):
- Smooth Maximum (сглаженный максимум):
- Rounding (округление)
- Round:
Округляет входное значение до ближайшего целого числа.
- Floor:
Округляет входное значение в меньшую сторону до ближайшего целого числа.
- Ceil:
Округляет входное значение в большую сторону до ближайшего целого числа.
- Truncate (отсечение):
Выводит целую часть значения.
- Fraction:
Returns the fractional part of the value.
- Modulo:
Выводит остаток после деления первого значения на второе значение.
- Wrap:
Выводит значение между Min и Max на основе абсолютной разницы между входным значением и ближайшим целым числом, кратным Max, меньшему, чем значение.
- Snap:
Округляет входное значение в меньшую сторону до ближайшего целого числа, кратного Increment.
- Ping-pong:
Выходное значение перемещается между 0.0 и Scale в зависимости от входного значения.
- Trigonometric (тригонометрические функции)
- Sine:
Синус.
- Cosine:
Косинус.
- Tangent:
Тангенс.
- Arcsine:
Арксинус.
- Arccosine:
Арккосинус.
- Arctangent:
Арктангенс.
- Arctan2:
Выводит арктангенс первого значения, делённого на второе значение, измеренное в радианах.
- Hyperbolic Sine:
Гиперболический синус.
- Hyperbolic Cosine:
Гиперболический косинус.
- Hyperbolic Tangent:
Гиперболический тангенс.
- Преобразование
- To Radians (в радианы):
Преобразует вход из градусов в радианы.
- To Degrees (в градусы):
Преобразует входные данные из радианов в градусы.
- Clamp
Ограничивает вывод диапазоном от 0.0 до 1.0. См. Clamp.
Выходы
- Value
Выход числового значения.
Примеры
Ручная Z-маска
В этом примере есть одна сцена, ввёденная верхним узлом Render Layers, который имеет куб, расположенный примерно в 10 единицах от камеры. Нижний узел Render Layers вводит сцену с плоскостью, которая покрывает левую половину вида и находится в 7 единицах от камеры. Оба передаются через соответствующие узлы Map Value для деления Z-буфера на 20 (умножьте на 0.05, как показано в поле Size) и ограничиваются минимумом/максимумом 0.0/1.0 соответственно.
Для функции minimum узел выбирает те значения Z, где соответствующий пиксель находится ближе к камере; поэтому он выбирает значения Z для плоскости и части куба. Фон имеет бесконечное значение Z, поэтому оно зафиксировано на 1.0 (показано белым цветом). В максимальном примере значения Z куба больше, чем у плоскости, поэтому они выбраны для левой стороны, но слои рендеринга Z плоскости бесконечны (отображены в 1.0) для правой стороны, поэтому они выбраны.
Использование функции синуса для пульсаций
В этом примере узел Time выводит линейную последовательность от 0 до 1 в течение 101 кадра. В кадре 25 выходное значение равно 0.25. Это значение умножается на 2 × пи (6.28) и преобразуется в 1.0 с помощью функции синуса, поскольку \(sin(2 × pi/ 4) = sin(pi/ 2) = +1.0\).
Поскольку функция синуса может выводить значения в диапазоне от (-1.0 до 1.0), узел Map Value масштабирует это значение до 0.0–1.0, беря входные данные (от -1 до 1), добавляя 1 (превращая 0 в 2) и умножая результат наполовину (таким образом масштабируя вывод от 0 до 1). Узел Color Ramp по умолчанию преобразует эти значения в оттенки серого. Таким образом, средне-серый соответствует выходному сигналу синуса 0.0, черный -1.0, а белый 1.0. Как видите, \(sin(pi/ 2) = 1.0\). Как иметь свой собственный визуальный калькулятор цвета! Анимация этой настройки узла обеспечивает плавную циклическую последовательность в диапазоне оттенков серого.
Используйте эту функцию для изменения, к примеру, альфа-канала изображения, чтобы реализовать эффект затухания/проявления. Изменяйте Z-канал, чтобы переместить сцену в фокус / из фокуса. Изменяйте значение цветового канала, чтобы заставить цвет «пульсировать».
Осветление (масштабирование) канала
В этом примере узел Math (Multiply) увеличивает канал яркости (Y) изображения, чтобы сделать его светлее. Обратите внимание, что следует использовать узел Map Value с активными параметрами min() и max(), чтобы усечь выходной диапазон до допустимых значений. При таком подходе для создания изображения с высоким динамическим диапазоном можно использовать логарифмическую функцию. В этом конкретном примере также можно использовать узел Bright/Contrast, который позволяет упростить управление яркостью изображения.
Ограничение выбора цвета (постеризация)
В этом примере мы ограничиваем значения цвета одним из шести значений: 0, 0.2, 0.4, 0.6, 0.8, 1.
Чтобы разбить непрерывный диапазон значений от 0 до 1 на определённый набор значений, используется следующая функция: \(round(x × n - 0.5) / (n - 1)\), где «n» — количество возможных выходных значений, а «x»» — цвет входного пикселя. Подробнее об этой функции.
Чтобы реализовать эту функцию в Blender, рассмотрите настройку узла выше. Мы связываем математические узлы в функцию, которая принимает каждый цвет (значения от 0 до 1), умножает его на шесть, желаемое количество делений (значения становятся от 0 до 6), смещает его на 0.5 (от -0.5 до 5.5) , округляет значение до ближайшего целого числа (выдает 0, 1, 2, 3, 4, 5), а затем делит цвет пикселя изображения на пять (0.0, 0.2, 0.4, 0.6, 0.8, 1.0).
В случае с цветным изображением необходимо разбить его на отдельные каналы RGB с помощью узлов Separate/Combine RGBA и выполнить эту операцию на каждом канале независимо.