EN
Andrey Sokolov
Andrey Sokolov
730 subscribers
goals
21 of 500 paid subscribers
Когда я наберу 500 платных подписчиков, смогу больше времени уделять записи видео и разработке аддонов для Blender.
358.51 of $ 1 128 money raised
Донаты || Donates
37.35 of $ 564 money raised
Cделать аддон True Time Remapping бесплатным для всех желающих навсегда. Make True Time Remapping add-on free for everyone forever.
112.78 of $ 113 money 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 - узел) логичнее при транслите с английского представлять, как существительное мужского рода, поскольку во-первых, в английской транскрипции оно звучит как "ноуд" с ударением на "о" и проходной "у", и я ни разу не слышал, чтобы носители языка произносили его как "нодА", а во-вторых, в переводе оно обозначает "узел", что также является существительным мужского рода. Разумеется, я не настаиваю, чтобы кто-либо менял привычное произношение. Согласно современным словарям, допустимы как мужской, так и женский варианты (нода). Но сам я использовал и буду использовать это слово исключительно, как существительное мужского рода.
avatar
Оставляю комментарий, что бы не пропадал ваш интерес. Круто описанно все, буквально недавно искал такие штуки в блендер методом тыка, и остались пробелы. Мне статья вовремя попалась.
avatar
Владислав Беленко, спасибо! Комментарии очень важны для меня. Так я могу понять, что людям это интересно.
avatar
Непонятно. У меня версия 3.2, и что-то не так работает видимо.
avatar
Денис Соколинский, скорее всего вы пытаетесь это проделать на кубе. Таким образом, центр координат - место, где должно быть тёмное пятно - оказывается внутри куба, а на всех гранях длина вектора получается равной единице, и поэтому он остаётся белым. Радиальный градиент, который даёт length - трёхмерный. Это, условно, не кружочек, а сфера. Можно либо использовать плэйн, либо на кубе предварительно сместить центр координат по оси Z на верхнюю грань (на -1) с помощью Vector Math > Add, либо сделать из "сферы" "цилиндр", предварительно изменив текстурные координаты с помощью Vector Math > Multipy со значениями осей x=1, y=1, z=0.
avatar
Andrey Sokolov, спасибо, понял.
Андрей, спасибо вам большое! Очень интересна тема математики.
avatar
Baston, отлично! Спасибо за отзыв, для меня это очень важно!
avatar
текстовые гайды по блендеру это прекрасно! спасибо большое за такой удобный формат
avatar
arilla , спасибо за обратную связь! Мне тоже кажется что такая полу-справочная информация в текстово-иллюстрированном виде лучше воспринимается, чем на видео )
avatar
Большое спасибо за уникальный контент. Отличная подача информации!
avatar
Ирена, спасибо!
avatar
Дамы и господа кто нибудь знает как на этом бусте цвет фона поменять со светлого на тёмный? А то пока на телефоне читаешь глаза можно выжечь.
avatar
Спасибо, уроки гениальны!
avatar
Maria Shevchenko, спасибо! )))
avatar
Спасибо!!! Обязательно изучу тему до конца)
avatar
Спасибо!
Шикарные уроки! Огромное спасибоClappingHandsClappingHandsClappingHands
avatar
Nikitenko Eugene, спасибо! )
avatar
Огонь. Я очень давно искал инструкцию по шейдерам. Большое вам человеческое спасибо.
avatar
Не особо понимаю на самом деле вот что: по дефолту узел математики multiply должен сделать градиент либо более резким, либо более размытым(ну, может ещё инвертировать), но в сочетании с синусом или косинусом градиент начинается расширятся и, даже повторятся, что именно делает с числами эта связка? Понимаю, что вопрос скорее к математике, но я был бы не против услышать ваш ответ, к тому же, с fraction это работает похожим образом
avatar
Estaw Estawich, multiply - это умножение. Умножение значений до синуса/косинуса влияет на длину волн. Умножение значений после синуса/косинуса изменяет амплитуду волн.
avatar
Здравствуйте Андрей! Можете пожалуйста написать, как будет выглядеть эта связь ввиди алгеброичского выражения?  
А, то я не могу до конца понять логику построения связей нод.
avatar
Alexsandr Romanov, Sin(x * 6). Мы берём числовые значения текстурных координат по оси Х, умножаем их на 6 и вычисляем синус результата.
avatar
Andrey Sokolov, Спасибо
avatar
КлассноClappingHands
avatar
Огонь! Благодарю, Андрей, узнал много нового. ThinkingFace

Subscription levels

1-й уровень

$ 2,26 per month
1-й уровень

2-й уровень

$ 5,7 per month
2-й уровень

3-й уровень

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

4-й уровень

$ 22,6 per month
4-й уровень

5-й уровень

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

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

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