Узел 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
The input value is read with without regard to its sign. This turns negative values into positive values.
- 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
Round the input value to the nearest integer.
- Floor
Округляет входное значение в меньшую сторону до ближайшего целого числа.
- Ceil
Округляет входное значение в большую сторону до ближайшего целого числа.
- Truncate (отсечение)
Выводит целую часть значения.
- Fraction
- Modulo
Выводит остаток после деления первого значения на второе значение.
- Wrap
Выводит значение между Min и Max на основе абсолютной разницы между входным значением и ближайшим целым числом, кратным Max, меньшему, чем значение.
- Snap
Round the input value to down to the nearest integer multiple of 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).
In the case of a color image, you need split it into separate RGB channels using Separate/Combine RGBA nodes and perform this operation on each channel independently.