Находим кривую с минимальной длиной при помощи Blender Geometry Nodes

Пусть у нас в сцене в Blender изначально имеется объект, состоящий из несколько кривых, и нам нужно сделать что-то с той кривой, у которой длина наименьшая из всех. Выделить нужную нам кривую поможет связка из нескольких геометрических нод.

Для примера создадим объект, состоящий из нескольких вложенных кривых. Добавим в сцену кривую в виде окружности (shift + a – Curve – Circle), перейдем в режим редактирования (tab), сделаем несколько копий (shift + d) и изменим их масштаб (s – перемещаем мышку).

Откроем рабочую область Geometry Nodes и нажатием кнопки New создадим начальное нодовое дерево.

Длины кривых мы можем получить при помощи нода Spline Length (shift + a – Curve – Read – Spline Length). С его выхода “Length” мы получим список длин всех кривых объекта.

Чтобы найти наименьшее значение в полученном списке, мы можем использовать нод Attribute Statistic (shift + a – Attribute – Attribute Statistic). Прилинкуем этот нод к основной ветке Geometry и подадим на его вход “Attribute” список длин кривых, полученный с нода Spline Length.

Теперь на выходе “Min” нода Attribute Statistic мы получим одно минимальное значение из переданного списка, т.е. длину самой короткой кривой.

Пока мы нашли только минимальную длину и, для того чтобы перейти от найденной длины к кривой которой она принадлежит, воспользуемся простым нодом сравнения.

Добавим нод Compare (shift + a – Utilities – Math – Compare) и подадим на его входы “A” и “B” соответственно минимальную длину, полученную с нода Attribute Statistic и список длин кривых, получаемых с нода Spline Length. Режим работы нода переключим в “Float – Equal”.

С выхода “Result” нода Compare (теперь его название преобразовалось в Equal) мы получаем логическое значение “Истина” только для той кривой из списка, длина которой равна минимальной найденной длине среди всех кривых.

Это значение мы теперь можем использовать для работы с найденной кривой. Например, мы можем удалить ее. Для этого добавим нод Delete Geometry (shift + a – Geometry – Operations – Delete Geometry) в основную ветку нодового дерева. Прилинкуем выход нода Compare (Equal) ко входу “Selection” нода Delete Geometry.

Таким образом мы оставляем для удаления только найденную нами кривую с наименьшей длиной. Которая, как мы видим, успешно удаляется.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии