Математика в 3Д ► 11. Brick, Magic, Gradient, White Noise
Я решил, что выносить остальные текстуры в
отдельные уроки не имеет смысла. Возможно я об этом пожалею, потому что это
упростило бы мне жизнь, но у нас тут не середина третьего сезона сиквела
спиноффа, чтобы намеренно растягивать хрон, поэтому обойдёмся без нелепых
мхатовских пауз и затянутых статичных планов со многозначительных лицами
героев. Математики в оставшихся текстурах немного, либо для понимания их работы она неважна, либо очевидна. По сравнению с предыдущими, эти текстуры не универсальны и служат либо для каких-то технических целей, либо для очень узких художественных.
отдельные уроки не имеет смысла. Возможно я об этом пожалею, потому что это
упростило бы мне жизнь, но у нас тут не середина третьего сезона сиквела
спиноффа, чтобы намеренно растягивать хрон, поэтому обойдёмся без нелепых
мхатовских пауз и затянутых статичных планов со многозначительных лицами
героев. Математики в оставшихся текстурах немного, либо для понимания их работы она неважна, либо очевидна. По сравнению с предыдущими, эти текстуры не универсальны и служат либо для каких-то технических целей, либо для очень узких художественных.
🛈 Waves Texture по большому счёту стоило отнести сюда же, потому что, как мы убедились, она полностью воссоздаваема при помощи математики и векторного шума. Пусть она останется, в качестве примера того, как из подручных средств можно под определённую задачу собрать нечто осмысленное и подлежащее повторном использованию.
Буду очень благодарен всем, кто решит стать платными подписчиками или разово задонатить на означенные цели. Это сильно мотивирует на продолжение.
Как и в предыдущих уроках, используются текстурные координаты типа Object (в Geometry Nodes - Position). Слева направо показаны:
• Сдвиг вертексов относительно нормалей с помощью геометрических нодов
• Срез на плоскости
• 5 срезов, на небольшом расстоянии, наложенных друг на друга
• Трёхмерный волюметрик материал
Подробнее про то, как настроен проект, здесь.
Brick Texture
Или, иными словами - кирпичи. Технически это прямоугольные ячейки с разными значениями яркости, с регулируемым размером, с регулируемой толщиной швов и возможностью нескольких вариантов сдвига рядов.
↑ Brick Texture с настройками по умолчанию
↑ Обратите внимание, Brick Texture - двухмерная текстура. В отличие от большинства других процедурно генерируемых шумов, у неё нет третьего и четвёртого измерения, она, как картинка, проецируется на плоскость, это видно, если развернуть её по оси Х на 90 градусов.
↑ Scale в Brick Texture предсказуемо регулирует общий размер паттерна
↑ Mortar Size в Brick Texture отвечает за ширину швов, измеряется в метрах с поправкой на значение Scale. Ширина одинакова для всех кирпичей
↑ Mortar Smooth в Brick Texture изменяет уровень размытия, сглаживания швов, что может быть полезно, например, при использовании её в качестве карты высот для Bump или Displacement, предотвращая неестественные слишком острые переходы, или при наложении дополнительных масок с трещинами и неровностями по краям швов.
↑ Bias в Brick Texture выступает в качестве фактора смешивания первого и второго цветов: на -1 используется только первый цвет, на 1 - только второй, на 0 - оба цвета рандомно распределяются между кирпичами.
↑ Brick Width в Brick Texture - это длина кирпича, измеряется в метрах, с учётом параметра Scale
↑ Brick Height в Brick Texture - это высота кирпича, измеряется в метрах, с учётом параметра Scale
↑ Выход Color в Brick Texture - позволяет использовать расцветку кирпичей, определяемую тремя цветами: Color 1 и Color 2 - от какого до какого цвета изменяется расцветка самих кирпичей, Mortar - цвет швов. Использование цвета в качестве числовых значений при изменённых цветах никаких особых эффектов не даёт, используется только информация о яркости.
↑ Offset в Brick Texture - определяет, насколько ряды сдвигаются относительно друг друга. Измеряется относительный сдвиг, не метры.
↑ Frequency, которая идёт в паре с Offset в Brick Texture, определяет частоту, с которой происходит сдвиг. Например, если она выставлена на 4, то сдвигаться будет только каждый 4-й ряд.
↑ Squash
в Brick Texture регулирует уровень сжатия ряда кирпичей - выступает в качестве множителя для параметра Brick Width
в Brick Texture регулирует уровень сжатия ряда кирпичей - выступает в качестве множителя для параметра Brick Width
↑ Frequency, которая идёт в паре с Squash в Brick Texture, определяет частоту рядов, подлежащих сжатию. Например, при значении 3, сжиматься будет каждый 3-й ряд.
По Brick Texture это всё. С точки зрения практического применения, в чистом виде она может использоваться разве что в каких-то стилизованных материалах, где с художественной точки зрения оправданы идеально ровные кирпичи. В остальных случаях приходится придумывать, как добавить неровностей, и это может стать настолько нетривиальной задачей, что проще бывает просто скачать откуда-нибудь бесшовную фото-текстуру кирпичей нужной фактуры с сопутствующими картами нормалей, roughness и т.д. Поскольку и сама Brick Texture тоже двухмерная, с функциональной точки зрения, принципиального отличия не будет.
Checker Texture
Трёхмерная текстура по принципу шахматной доски.
↑ В Checker Texture минимум параметров - один цвет, второй цвет и размер кубов. Всё.
↑ В плане практического применения, помимо непосредственно основы для текстурирования шахматных досок (это почти сарказм), Checker Texture преимущественно используется в утилитарных, технических целях, чтобы посмотреть, как материал будет распространяться по объекту. Наиболее частое применение - при работе с UV-развёрткой: в качестве входящего вектора используются координаты UV, и можно править развёртку в UV-Editor и в реальном времени смотреть, как будут искажаться те или иные части текстур на поверхности объектов
Magic Texture
Трёхмерный шум. Слишком повторяющийся, чтобы быть универсальным, слишком странный, чтобы служить практической цели.
↑ Magic Texture с настройками по умолчанию
↑ В Magic Texture параметр Scale отвечает за общий размер паттерна.
↑ В Magic Texture параметр Depth, как я предполагаю, отвечает за количество фрактальных копий паттерна внутри самого себя, но это только предположение. В описании характеризуется, как уровень деталей в турбулентном шуме.
↑ В Magic Texture параметр Distortion отвечает за объём добавляемых искажений. На нулевой отметке генерируется однотонный серый цвет со значением яркости 0.5 по всем 3-м цветовым каналам.
↑ При добавлении Distortion, визуально паттерн всё больше и больше раз начинает повторять сам себя внутри каждой ячейки. Сами границы ячеек при этом не искажаются
↑ Из выхода Color можно использовать цветовую информацию. Ну, в смысле, как можно - никто вам не запретит, но если вы не делаете анимацию для документального фильма «Бханг-ласси в Варанаси», вряд ли это когда-либо вам понадобится.
Gradient Texture
Текстура с градиентами для тех, кто не проходит эти уроки и не знаком с математикой. Потому что все её режимы - это визуализация простейших математических действий.
↑ Separate XYZ > X
↑ Separate XYZ > X, Y -> (чтобы разделить оси)
Math > Arctan2 -> (чтобы пустить по кругу ось Х)
Math > Add + pi -> (чтобы вывести значения в плюсовой диапазон)
Math > Divide / (2*pi) (чтобы привести значения к диапазону от 0 до 1)
Math > Arctan2 -> (чтобы пустить по кругу ось Х)
Math > Add + pi -> (чтобы вывести значения в плюсовой диапазон)
Math > Divide / (2*pi) (чтобы привести значения к диапазону от 0 до 1)
pi в числовых параметрах Blender можно вбивать вместо числа, чтобы получить число Пи. pi*2 можно вбивать вместо числа, чтобы получить 2Пи.
↑ Vector Math > Length ->
Math > Subtract с Clamp, подключается в нижний слот, верхнее значение 1.
↑ Vector Math > Length ->
Math > Subtract с Clamp, также вычитается из 1 ->
Math > Power - возводим в квадрат, выставив нижнее значение на 2
↑ Separate XYZ > X, Y -> (чтобы разделить оси)
Math > Add (чтобы сложить их значения друг с другом)
Math > Add (чтобы сложить их значения друг с другом)
↑ Separate XYZ > X ->
Math > Power - возводим в квадрат, выставив нижнее значение на 2.001 (при чётных степенях отрицательный диапазон перекидывается в положительный)
Math > Power - возводим в квадрат, выставив нижнее значение на 2.001 (при чётных степенях отрицательный диапазон перекидывается в положительный)
↑ Ладно, ок, с Easing подловили. Это сочетание линейной и квадратной функции с мягким переходом, но какое именно в документации не пишут, а подобрать я сходу не смог. Полагаю, что сочетание возведения в степень, умножения и какой-нибудь Smooth Minimum, или вообще просто RGB Curves могут позволить настолько точнее регулировать огибающую градиента, что ради этого режима я вряд ли когда-либо вспомню о Gradient Texture. Разве что чтобы разобраться, какая за ним кроется математика, и забыть о его существовании уже навсегда.
White Noise
Просто шум - для каждого пикселя возвращает своё значение.
↑ Сам по себе используется для создания ёжиков. Шучу. Практически не используется. С его помощью иногда удобно размывать текстуры, используя его в качестве векторного шума, потому что опции Blur (размытие) в шейдерах нет и скорее всего не будет. Также его можно использовать на композитинге для подмешивания в малых объёмах к изображению "зерна", чтобы придать картинке киношности - но для этих целей лично я предпочитаю всё же использовать Noise Texture, чтобы иметь больше контроля над фактурой.
↑ В режиме 4D шум можно анимировать. Это я в Cycles быстро изменял параметр W и сделал скриншот, пока картинка не полностью успела просчитаться, чтобы было хоть какое-то отличие от предыдущей и последующей - поэтому зерно такое крупное.
↑ В режиме 1D входящий вектор не требуется, всё пространство заливается одним значением яркости, которое меняется под воздействием единственного параметра W. Это можно использовать в качестве стробоскопа, добавления мерцания или хаотичного изменения любого другого параметра в Блендер.
Если вам нравятся эти уроки, поблагодарите, пожалуйста, хотя бы мысленно, тех, кто забирает их к себе на стенки, рассказывает о них друзьям, знакомым, в сообществах, пабликах, чатах, коммьюнити. Этих людей пока очень мало, но именно благодаря их действиям вы сейчас можете видеть эти уроки.
Со своей стороны выражаю большую благодарность спонсорам. Ваша поддержка даёт мне силы продолжать.