Создание строчки с помощью геометрических нод в Blender.
Первый этап.
Самая простая строчка с помощью геометрических нод
- Выделяем рёбра, вдоль которых хотим видеть строчку, Edge - Mark Sharp (это один из возможных способов, но далеко не единственный)
- Конвертируем эти рёбра в кривые с помощью Mesh to Curve, подключая в Selection именованный атрибут - sharp_edge
- Делаем Resample Curve с нужным шагом Length - это будет длина стежка
- Конвертируем Curve to Mesh, чтобы разбить на отдельные рёбра через Split Edges
- Снова конвертируем в кривые
- И опять Curve to Mesh, только уже с сечением в виде круга с 4 точками (фактически квадрат). Не забудьте поставить галочку Fill Caps.
- Подразбиваем полученную сетку с помощью Subdivision Surface.
Второй этап
Поворот и масштабирование стежков
- Сразу после Split Edges вставляем ноду Set Position – через неё мы будем изменять позицию отдельных точек объекта и поэтому..
- .. ставим ноду Position, которая её считывает.
- Будем использовать Vector Rotate для поворота вектора Position. В ней есть 3 входа для векторов: первый – это что будем вращать, туда Position ноду подключаем.
- Второй вход – центр вращения. Тут я использовал Evaluate on Domain в режиме Vector / Edge, чтобы на выходе получить позицию не точек, а рёбер.
- Ось, относительно которой будет вращение, тут нужен перпендикуляр к поверхности – это вектор нормали – Normal.
- С масштабированием проще, нода Scale Elements в режиме Edge и будет масштабировать все рёбра (стежки).
Третий этап
Делаем стежки более реалистичными
- Вставляем после Scale Elements ноду Extrude Mesh с выдавливанием вертексов на отрицательное значение по направлению нормали (Normal)
- Перенесём подразбиение сразу после экструда, чтобы сгладить форму стежка.
- Мне захотелось немного уменьшить толщину нитей по краям, как если бы они были немного сдавлены отверстием, в которые они заходят. Для этого проводим Spline Parameter – Factor через ноду..
- .. Float Curve, чтобы с помощью неё задать форму изменения сечения стежка.
- Вставил ещё один Set Position, чтобы управлять смещением стежка по нормали к поверхности – нода Vector Math – Scale на небольшое значение.
Четвёртый этап.
Делаем автоматическую развёртку всем стежкам
- Для каждого сплайна, который подходит к Curve to Mesh мы «запекаем» его длину (Length) с помощью Capture Attribute.
- Вставляем ноду Store Name Attribute, чтобы записать именованный атрибут с названием UVMap. Выбираем запись типа 2D Vector и пишем для Face Corner.
- Объединяем длины сплайнов в ноде Combine XYZ для X и Y значений. Таким образом мы как бы преобразовали параметры длины пути и длины формы в плоские UV координаты.
- Упаковываем всё через ноду Pack UV Island без вращения. Теперь вы можете видеть, что развёртка для стежков полностью готова.
Пятый этап (бонус)
А что, если нам надо 2 стежка параллельно?
- Дублируем сплайны через Duplicate Elements, Amount = 2.
- Теперь надо сместить одну копию влево, другую вправо, для этого используем ноду Set Position.
- Сложность в том, что нам надо сместить сплайны перпендикулярно его направлению и вдоль вектора касательной к поверхности исходного меша. Этот вектор можно найти, сделав векторное произведение (Cross Product) нормали поверхности (Normal) и вектора касательной сплайна (Tangent).
- Мы нашли вектор, но нам надо сместить один сплайн в направлении этого вектора, а второй в обратную сторону, т.е. со знаком «-». Вставляем ноду Vector Math – Scale. Этот коэффициент сейчас и будем рассчитывать.
- Для расчёта Scale используем данные Duplicate Index (для нашего случае это будет индекс 0 и 1 для первого и второго сплайна, соответственно). Если вычтем из этого индекса 0,5, получим значения -0,5 и 0,5 соответственно. Но в Blender 1 единица это 1 метр, поэтому через ноду Math в режиме умножения (Multiply) мы умножаем этот коэффициент на небольшое значение, в моём случае 0,02, что соответствует двум сантиметрам между рядами строчек.
PS: В версии Blender 5.2 появилась новая нода – Mesh Bevel, с помощью которой можно делать фаски на выделенных рёбрах, таким образом можно автоматически ещё и геометрию швов сделать, например, как на этом видео:
Если есть вопросы – спрашивайте. Не хотелось слишком подробно расписывать. В любом случае будет непонятно, пока вы сами не попробуете. Так что – пробуйте! Для начала можете взять все настройки и коэффициенты с моих скринов, ну а потом бесконечное поле для самостоятельных экспериментов. Удачи! 😉
Канал в ТГ | Группа ВК






