Контроль угла между полигонами при помощи 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 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии