Нода «Математика» (math node)¶
Нода Math позволяет выполнять математические операции.
Входы (inputs)¶
Входы ноды являются динамическими. Некоторые входы доступны только для определённых операций. Например, вход Addend доступен только для оператора Multiply Add.
- Значение (value)
Входное значение. Тригонометрические функции читают это значение в качестве радиан.
- Слагаемое (addend)
Ввод слагаемого.
- Основа (base)
Ввод базы.
- Экспонента (exponent)
Ввод экспоненты.
- Эпсилон (epsilon)
Ввод эпсилона.
- Расстояние (distance)
Ввод расстояния.
- Минимум (min)
Ввод минимума.
- Максимум (max)
Ввод максимума.
- Инкремент (increment)
Ввод инкремента.
- Масштаб (scale)
Ввод масштаба.
- Градусы (degrees)
Ввод градусов.
- Радианы (radians)
Ввод радиан.
Свойства¶
- Операция (operation)
Математическая операция, применяемая к вводным значениям:
- Функции (functions)
- Добавить (Сложить) (add):
Сумма двух значений.
- Вычесть (subtract):
Разность двух значений.
- Перемножить (multiply):
Произведение двух значений.
- Разделить (divide):
Деление первого значения на второе значение.
- Умножить и сложить (multiply add):
Сумма произведения двух значений со слагаемым.
- Мощность / Возвести в степень (power):
Возведение базы в степень экспоненты.
- Логарифм (logarithm):
Логарифм значения с базой в качестве основания.
- Квадратный корень (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):
Возвращает дробную часть значения.
- Усечённый модуль (truncated modulo):
Выводит остаток после деления первого значения на второе значение.
- Остаток по модулю (floored modulo):
Возвращает положительный остаток операции деления.
- Обернуть (wrap):
Выводит значение между Min и Max на основе абсолютной разницы между вводным значением и ближайшим целым числом, кратным Max, меньшему, чем значение.
- Привязать (snap):
Округляет вводное значение в меньшую сторону до ближайшего целого числа, кратного Increment.
- Пинг-понг (ping-pong):
Значение на вывод перемещается между 0.0 и Scale в зависимости от вводного значения.
- Тригонометрические (trigonometric)
- Синус (sine):
Синус вводного значения.
- Косинус (cosine):
Косинус вводного значения.
- Тангенс (tangent):
Тангенс вводного значения.
- Арксинус (arcsine):
Арксинус вводного значения.
- Арккосинус (arccosine):
Арккосинус вводного значения.
- Арктангенс (arctangent):
Арктангенс вводного значения.
- Арктан2 (arctan2):
Выводит арктангенс первого значения, делённого на второе значение, измеренное в радианах (Inverse Tangent).
- Гиперболический синус (hyperbolic sine):
Гиперболический синус вводного значения.
- Гиперболический косинус (hyperbolic cosine):
Гиперболический косинус вводного значения.
- Гиперболический тангенс (hyperbolic tangent):
Гиперболический тангенс вводного значения.
- Конвертация (conversion)
- В радианы (to radians):
Преобразует ввод из градусов в радианы.
- В градусы (to degrees):
Преобразует вводные данные из радианов в градусы.
- Ограничение (clamp)
Ограничивает вывод диапазоном от 0.0 до 1.0. См.: «Clamp».
Выходы (outputs)¶
- Значение (value)
Вывод числового значения.
Примеры¶
Ручная сборка Z-маски¶
Верхняя нода Render Layers имеет куб, который находится примерно в 10 единицах от камеры. Нижняя нода Render Layers имеет плоскость, которая покрывает левую половину вида и находится в 7 единицах от камеры. Обе проходят через соответствующие ноды Map Value для умножения значения глубины на 0.05 и фиксирования её на [0.0, 1.0], проводя её к подходящему диапазону для отображения в виде цвета.
Нода Minimum выбирает наименьшее из двух значений глубины в каждом пикселе. В левой половине она выбирает плоскость (потому что она ближе куба), а в правой половине она выбирает куб (потому что он ближе фона, который бесконечно далёк).
Нода Maximum выбирает наибольшее из двух значений глубины в каждом пикселе. В левой половине она выбирает куб (потому что он дальше, чем плоскость), а в правой половине она выбирает фон (потому что он дальше, чем куб).
Использование функции синуса для пульсаций¶
В этом примере нода Time Curve выводит линейную секвенцию от 0 до 1 в течение 101 кадра. В кадре 25 – выходное значение равно 0.25. Это значение умножается на 2 × pi (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.5 (таким образом масштабируя выходные данные к диапазону от 0 до 1). По умолчанию Color Ramp преобразует эти значения в оттенки серого. Таким образом, средний серый соответствует выходным данным синуса 0.0, чёрный -1.0, а белый 1.0. Как видите, \(sin(pi/ 2) = 1.0\). Как будто у вас есть собственный визуальный калькулятор цвета! Анимация этой конструкции нод обеспечивает плавную циклическую секвенцию в диапазоне оттенков серого.
Используйте эту функцию для изменения, к примеру, альфа-канала изображения, чтобы реализовать эффект затухания/проявления. Изменяйте Z-канал, чтобы переместить сцену в фокус / из фокуса. Изменяйте значение цветового канала, чтобы заставить цвет «пульсировать».
Осветление (масштабирование) канала¶
В этом примере нода Math «Multiply», увеличивает канал яркости (Y) изображения, чтобы сделать его светлее. Обратите внимание, что следует использовать ноду Map Value с активными параметрами min() и max(), чтобы усечь диапазон вывода до допустимых значений. При таком подходе, для создания изображения с высоким динамическим диапазоном, можно использовать логарифмическую функцию. В этом конкретном примере также можно использовать ноду Brightness/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 Color и выполнить эту операцию независимо на каждом канале.