Контроль угла между полигонами при помощи Blender Geometry Nodes

При помощи Geometry Nodes в Blender можно управлять геометрией меша, ориентируясь на ее изгиб, т.е. на угол между соседними полигонами. Это позволяет по-разному обрабатывать гладкую “органическую” геометрию и жесткие “hard surface” поверхности.

Основным инструментом, позволяющим разграничить геометрию на гладкую и жесткую, является нод Edge Angle, который определяет угол между двумя соседними полигонами.

Добавим в сцену Сюзанну (shift + a – Mesh – Monkey), назначим ей модификатор Geometry Nodes и нажатием на кнопку New создадим начальное нодовое дерево.

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

Добавим нод Edge Angle (Mesh – Read – Edge Angle).

Добавим два нода Compare для сравнения угла с числом (shift + a – Utilities – Compare). Первый нод переключим в режим Grater Than or Equal – этому условию будет соответствовать угол между полигонами больше или равный заданному. Второй переключим в режим Less Than – угол между полигонами меньше заданного. Слинкуем выход Unsigned Angle нода Edge Angle со входами A обоих нодов Compare.

Нод Edge Angle выдает результат в радианах. Чтобы сравнивать с привычными нам градусами, добавим нод Math (shift + a – Utilities – Math – Math) и переключим его в режим Radians. Слинкуем его выход Value со входами B обоих нодов Compare.

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

Добавим два нода Mesh to Curve (shift + a – Mesh – Operators – Mesh to Curve) и подключим их в основную ветку геометрии нодового дерева. Выходы нодов Compare соединим с соответствующими входами Selection обоих этих нодов.

Добавим далее в каждую ветку по ноду Curve to Mesh (shift + a – Curve – Operators – Curve to Mesh). Добавим также нод Curve Circle (shift + a – Curve – Primitives – Curve Circle) п подключим его выход Curve ко входам Profile Curve обоих нодов Curve to Mesh. В поле Radius установим значение равное 0.01.

Таким образом мы делаем обводку по ребрам меша при помощи кривых.

Если мы сейчас подключим одну из получившихся у нас веток геометрии к ноду Group Output, мы увидим часть обводки, которая соответствует условию, выставленному нами для угла – больше или меньше. Меняя угол в ноде To Radians можно наблюдать изменение в обводке.

Добавим в каждую ветку по ноду Set Material (shift + a – Material – Set Material). Создадим два разноцветных материала и установим их в поля каждого из нодов.

Теперь нам осталось только объединить всю геометрию при помощи нода Join Geometry (shift + a – Geometry – Join Geometry). Соберем через него все ветки геометрии в одну.

Теперь мы можем удобно отслеживать угол – ребра для которых у прилегающих к ним полигонов угол будет больше или равны заданному, будут окрашены в один цвет, а те, где угол между полигонами меньше заданного – в другой.

Изменяя значение заданного угла в ноде To Radians можно визуально наблюдать соответствие условию на меше.

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

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии