Пока люди прошлого генерируют текстуры с помощью нейросетей, люди будущего генерируют текстуры с помощью шейдер нодов в Блендере! И сегодня мы сгенерируем карбоновую текстуру, чтобы обклеить карбоном всё на свете.
Для создания такого материала нам сначала нужно сплести девять нодовых групп. Вот таких вот:
Начнем с группы Thread Math. Соберем ее из небольшого количества математических нод и посмотрим, что эта группа умеет делать.
На вход группы Thread Math подается градиент от текстуры волновой пилы. Из этого градиента формируется маска для нити будущей текстуры ткани. Параметр Thickness настроен так, чтобы управлять толщиной нити от 0 до 1. Параметры From и To указывают на то, из какой части градиента вырезать маску нити.
Из одного градиента нам будет нужно четыре нити, поэтому мы будем использовать для этого четыре группы Thread Math с последовательными значениями From и To.
Теперь нам нужно будет эти маски отдельных нитей склеивать вместе. И для этого мы создадим новую группу Threads Adds.
На вход этой группы приходит четыре отдельные маски нитей от групп Thread Math и склеиваются вместе. Если подвигать Thickness, то можно увидеть, как изменяется толщина нитей.
Теперь с помощью этих двух групп мы можем из текстуры волновой пилы добыть маски четырех продольных и поперечных нитей. Но эти маски плоские, а нам нужны объемные. Для имитации переплетения нитей сделаем новую группу Wave Color Math.
В этой группе мы впервые встречаемся с магическим числом, на первый взгляд не поддающимся разумному объяснению - это 6.283. Поэтому подробнее разберемся, что это значит. В Color приходит градиент от волновой пилы. Этот градиент сдвигается с помощью Phase. Для правильной имитации изгиба нитей нам нужно, чтобы на один волновой градиент накладывалось два пика изгибающей волны, поэтому мы pi умножаем на 2 и получаем 6.283. Просто печатаем во второй математической ноде в поле Value pi*2, жмем Энтер, и значение превращается в 6.283. Далее текстуру пилы преобразуем в текстуру синуса. В конце сжимаем яркость синуса от (-1, 1) до (-0.25, 0.25) и сдвигаем до (0, 0.5). Потому что отрицательных цветов не бывает, и нам ещё нужно немножко черно-белого пространства для других текстур, которые будут смешиваться с этой. Понятно, что ничего непонятно. Поэтому просто двигаем фазу и смотрим, как волна бегает по квадратику. Если не бегает, значит что-то собрали не так.
Следующая группа Cyrcle Gradient Math. Тут такая огромная куча нод, что я и сам уже давно забыл, что они делают.
И чтобы вспомнить, подключим к этой группе текстуру волновой пилы и увидим, что, оказывается, эта группа добавляет нитям объем. Так как на один градиент у нас будет четыре нити, в Threads Count нужно не забыть поставить 4. Этот объем мы потом смешаем с плоскими нитями и волнами на них.
Теперь сделаем группу Subtract Cross Threads.
Эта группа вырезает из маски одной продольной нити две дырки от масок двух поперечных нитей. Вот так вот.
И тут уже можно догадаться, что если нарезать таких продольных дырявых нитей и склеить их с поперечными нитями, получится эффект переплетения нитей. Но где нам взять столько нитей? Правильно. Сделаем ещё одну группу, в которой будут все эти нити на выходе. Группа Threads Math! Не путать с Thread Math!
Как мы видим, группа простая, состоит из групп, которые мы уже делали, плюс немного математических нод. На вход группы приходит Color от текстуры волновой пилы. Thickness - это всё та же толщина нити от 0 до 1. Phase задает смещение для четырех нод Wave Color Math. А Cyrcle Volume - это значение от 0 до 1, которое управляет "объемностью" нитей, если 1, то нить будет как бы круглой, а если 0, то плоской. На выход группы мы выводим четыре маски продольных нитей и четыре волны, которые будут изгибать четыре поперечных нитей. Смотрите, не перепутайте. Еще на выходе будет Color, который выводит объем нитей.
Теперь создадим группу Add Waves to Threads, которая будет добавлять изгибы на нитях.
В Threads будет приходить объем нитей, в маски - маски, в волны - волны. И тогда мы получим объемные и изогнутые нити. Вот так вот.
Как мы знаем, в реальной ткани нити состоят из ещё более тонких нитей. Поэтому добавим в нити ещё нитей, чтобы мы могли заплетать нити пока заплетаем нити. Сделаем новую группу SubThreads Settings.
Эта группа из отдельной текстуры волновой пилы рисует на нити новые нити, которые имитируют состояние нитей из более мелких нитей.
Мы собрали почти все группы и осталось самую малость. Нам надо быстренько переплести друг с дружкой все предыдущие группы внутри новой группы под названием Cloth Carbon. Тут всё очень просто, поэтому даже объяснять нет смысла.
В конце втыкаем нашу группу Cloth Carbon в основной материал, настраиваем крутилки-вертелки по вкусу и получаем... стремного вида карбон.
Не, реально, фигня какая-т получалась... Пойду лучше в нейросетях сгенерирую...