Andrey Sokolov

Andrey Sokolov 

Blender 3D

768subscribers

89posts

goals4
5 of 500 paid subscribers
Когда я наберу 500 платных подписчиков, смогу больше времени уделять записи видео и разработке аддонов для Blender.
$462.22 of $1 412 raised
Донаты || Donates
$46.75 of $706 raised
Cделать аддон True Time Remapping бесплатным для всех желающих навсегда. Make True Time Remapping add-on free for everyone forever.
$141.14 of $142 raised
На дисковый накопитель 4Tb для хранения бэкапов курса «Blender Избушка».

Математика в 3Д ► 01. Cоздание форм

Всем привет. Сегодня я хочу показать несколько простейших примеров создания различных форм и градиентов в материалах Блендер с использованием математики. Буду очень благодарен всем, кто решит стать платными подписчиками или разово задонатить на означенные цели. Это сильно меня замотивирует на продолжение.
Такие формы можно использовать, например, в качестве масок для смешивания разных материалов друг с другом, для формирования новых систем координат для ваших текстур, для анимации и интересных переходов. А можно просто раскрашивать с помощью ColorRamp и использовать в качестве цвета в материале.
Чтобы определить, как формы будут располагаться в 3Д пространстве, нам понадобятся исходные текстурные координаты, определяющие уникальные числовые значения для каждой точки 3Д пространства. С этими числовыми значениями мы и будем, для начала, работать, преобразовывая их в цвет и изменяя их математически, чтобы изменять получающуюся форму.
Для этой задачи мы будем использовать Shift+A > Input > Texture Coordinate. В режиме Object этот нод** задаёт систему координат, центром которой является origin объекта (оранжевая точка в центре объекта, от которой считается location объекта). В центре системы координат числовые значения по осям X, Y и Z равны нулю, что эквивалентно чёрному цвету. С удалением от центра, значения начинаются меняться - увеличиваться и уменьшаться по каждой оси, в зависимости от её направления. Так, в 1 метре по оси X справа от центра значение по оси X будет равно 1 (что эквивалентно белому цвету), а в 1 метре слева от цента значение X будет равно-1.
Мы можем увидеть, как выглядят числовые значения координатной сетки (0 - чёрный цвет, 1 - белый цвет) с помощью Shift+A > Convertor > Separate XYZ
1. Простые градиенты - с использованием текстурных координат типа Object  в сочетании с Shift+A > Convertor > Separate XYZ
2. Полоски - с использованием синуса и косинуса. Изменяя значение Multiply (умножение), можно регулировать ширину и, соответственно, количество полосок
3. «Часовой» градиент - с использованием арктангенса. Можно использовать для формирования новой системы координат, для создания переходов или в сочетании с дополнительной математикой.
Добавляем синус или косинус- получаем радиально расходящиеся лучи, Multiply определяет количество лучей:
4. Радиальный градиент - с использованием длины вектора
Просто для справки, длина вектора - равна квадратному корню (Square Root) скалярного произведения (Dot Product) вектора самого на себя:
А скалярное произведение векторов (Dot Product), в свою очередь, равно сумме произведений отдельных осей их координат: x1 · x2 + y1 · y2 + z1 · z2. Это не обязательно заучивать, (хотя вреда не будет), я привожу это здесь, чтобы у вас было представление о том, из скольких и каких именно простейших математических операций может складываться работа одного нода - в данном случае, Vector Math в режиме Length:
5. Инвертирование - с помощью вычитания из единицы
6. Экспоненциальное затемнение полутонов  - с использованием возведения значений в степень
Любые математические операции можно использовать в любых сочетаниях друг с другом:
7. Изменение исходных текстурных координат для изменения форм. В этом примере мы вращаем исходную систему координат (в нижней части экрана) с помощью нода Shift+A > Vector > Mapping и его параметра Rotation, к которому подключен нод Shift+A > Convertor > Combine XYZ, чтобы можно было удобно регулировать значения вращения для отдельных осей. Вращая исходную систему координат, мы вращаем и конечную форму.
8. Изменение параметров не одним числом, а областью значений - ключевой момент, который очень важно понять. Когда мы изменяем какой-либо параметр в Блендер, меняя его числовое значение, как мы делали выше, в этот момент не просто изменяется одна цифра, но это число присваивается каждой точке 3Д пространства. То есть изменяя параметр, мы равноразмерно меняем его для каждой точки 3Д пространства. Но мы не обязаны это делать равноразмерно. Подключая вместо одно-числовых параметров другие ноды, дающие на выходе область значений - например, градиенты - мы можем менять любой параметр, в соответствии с их выходными значениями. Чему будут равны значения градиентов в каждой точке пространства (напомню, что чёрный - это 0, а белый - это 1), такое число в этой точке пространства и будет присвоено изменяемому параметру.
В этом примере Convertor > Vector Math > Length ближе к центру равно нулю, а ближе к краям становится единицей. Применяя этот нод для определения вращения системы координат по оси Z, мы видим, что в центре вращение остаётся равным нулю, а ближе к краям начинает увеличиваться, и лучи начинают "завихряться" - потому что ближе к краям растёт значение Length:
Возможности применения этого безграничны, ведь это касается абсолютно любых параметров в любых нодах - будь то математика, векторная математика, настройки шейдеров, отдельные одиночные или векторные параметры.
Конечно, всё это очень простые примеры, рассчитанные на тех, кто только-только начинает своё знакомство с процедурным созданием материалов, но в то же время, они являются ключевыми для дальнейшего понимания. С помощью математики и комбинирования вышеописанных действий можно создавать очень, очень крутые штуки. Все те же принципы можно использовать не только в материалах, но и, например, в Geometry Nodes для генерации уникальной геометрии. Это практически безграничная и очень интересная тема.
P.S. Если эта тема интересна и вам, и вы бы хотели, чтобы я её развивал, пожалуйста, подписывайтесь на эту страничку на Boosty, ставьте лайки и пишите комментарии: мой интерес будет напрямую зависеть от вашего интереса и активности.
_________________________________________
** Я убеждён, что слово нод (от англ. Node - узел) логичнее при транслите с английского представлять, как существительное мужского рода, поскольку во-первых, в английской транскрипции оно звучит как "ноуд" с ударением на "о" и проходной "у", и я ни разу не слышал, чтобы носители языка произносили его как "нодА", а во-вторых, в переводе оно обозначает "узел", что также является существительным мужского рода. Разумеется, я не настаиваю, чтобы кто-либо менял привычное произношение. Согласно современным словарям, допустимы как мужской, так и женский варианты (нода). Но сам я использовал и буду использовать это слово исключительно, как существительное мужского рода.
СЛЕДУЮЩИЙ УРОК →
Оставляю комментарий, что бы не пропадал ваш интерес. Круто описанно все, буквально недавно искал такие штуки в блендер методом тыка, и остались пробелы. Мне статья вовремя попалась.
Владислав Беленко, спасибо! Комментарии очень важны для меня. Так я могу понять, что людям это интересно.
Непонятно. У меня версия 3.2, и что-то не так работает видимо.
Денис Соколинский, скорее всего вы пытаетесь это проделать на кубе. Таким образом, центр координат - место, где должно быть тёмное пятно - оказывается внутри куба, а на всех гранях длина вектора получается равной единице, и поэтому он остаётся белым. Радиальный градиент, который даёт length - трёхмерный. Это, условно, не кружочек, а сфера. Можно либо использовать плэйн, либо на кубе предварительно сместить центр координат по оси Z на верхнюю грань (на -1) с помощью Vector Math > Add, либо сделать из "сферы" "цилиндр", предварительно изменив текстурные координаты с помощью Vector Math > Multipy со значениями осей x=1, y=1, z=0.
Andrey Sokolov, спасибо, понял.
Андрей, спасибо вам большое! Очень интересна тема математики.
Baston, отлично! Спасибо за отзыв, для меня это очень важно!
текстовые гайды по блендеру это прекрасно! спасибо большое за такой удобный формат
arilla , спасибо за обратную связь! Мне тоже кажется что такая полу-справочная информация в текстово-иллюстрированном виде лучше воспринимается, чем на видео )
Большое спасибо за уникальный контент. Отличная подача информации!
Ирена, спасибо!
Дамы и господа кто нибудь знает как на этом бусте цвет фона поменять со светлого на тёмный? А то пока на телефоне читаешь глаза можно выжечь.
Спасибо, уроки гениальны!
Maria Shevchenko, спасибо! )))
Спасибо!!! Обязательно изучу тему до конца)
Спасибо!
Шикарные уроки! Огромное спасибоclapping_handsclapping_handsclapping_hands
Nikitenko Eugene, спасибо! )
Огонь. Я очень давно искал инструкцию по шейдерам. Большое вам человеческое спасибо.
Не особо понимаю на самом деле вот что: по дефолту узел математики multiply должен сделать градиент либо более резким, либо более размытым(ну, может ещё инвертировать), но в сочетании с синусом или косинусом градиент начинается расширятся и, даже повторятся, что именно делает с числами эта связка? Понимаю, что вопрос скорее к математике, но я был бы не против услышать ваш ответ, к тому же, с fraction это работает похожим образом
Estaw Estawich, multiply - это умножение. Умножение значений до синуса/косинуса влияет на длину волн. Умножение значений после синуса/косинуса изменяет амплитуду волн.
Здравствуйте Андрей! Можете пожалуйста написать, как будет выглядеть эта связь ввиди алгеброичского выражения?  
А, то я не могу до конца понять логику построения связей нод.
Alexsandr Romanov, Sin(x * 6). Мы берём числовые значения текстурных координат по оси Х, умножаем их на 6 и вычисляем синус результата.
Andrey Sokolov, Спасибо
Классноclapping_hands
Огонь! Благодарю, Андрей, узнал много нового. thinking_face
Спасибо большое, хоть и не с первого раза понял, но уверен это важные матерьялы для обучения Шейдингу и работе с Геонодами. Не нашёл так подробно об их работе, пока нигде.
Просто вау!
Информация на вес золота, всё супер понятно, и без воды
Услада для глаз
3. "Часовой" градиент. Никак не могу понять, почему обратное направление оси x соответствует Pi/2, а не просто Pi. Там же даже по градиенту видно, что arctan2(y/x) == 1 находится в 1-ой четверти, а не во 2-ой, как нарисовано на плейне. Это не ошибка?
Subscription levels6

1-й уровень

$2.83 per month
1-й уровень

2-й уровень

$7.1 per month
2-й уровень

3-й уровень

$14.2 per month
3-й уровень

4-й уровень

$28.3 per month
4-й уровень

5-й уровень

$71 per month
5-й уровень

Максимальная поддержка

$142 per month
Максимальная поддержка
Go up