Нода «Математика» (math node)#
Нода Math позволяет выполнять математические операции.
Входы (inputs)#
Входы ноды являются динамическими. Некоторые входы доступны только для определённых операций. Например, вход Addend доступен только для оператора Multiply Add.
- Значение (value)
Входное значение. Тригонометрические функции читают это значение в качестве радиан.
- Слагаемое (addend)
Ввод слагаемого.
- Основа (base)
Ввод базы.
- Экспонента (exponent)
Ввод экспоненты.
- Эпсилон (epsilon)
Ввод эпсилона.
- Расстояние (distance)
Ввод расстояния.
- Минимум (min)
Ввод минимума.
- Максимум (max)
Ввод максимума.
- Инкремент (increment)
Ввод инкремента.
- Масштаб (scale)
Ввод масштаба.
- Градусы (degrees)
Ввод градусов.
- Радианы (radians)
Ввод радиан.
Свойства (properties)#
- Операция (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 и выполнить эту операцию независимо на каждом канале.