Выделяем висящую геометрию в Blender

Так называемая «не-манифолд» геометрия в 3D-объектах, это отдельные, висящие в пространстве, точки, ребра или полигоны, а так же отверстия в сплошном меше, выделяется в Blender через пункт меню 3D-вьюпорта: Select — Select All By Trait — Non Manifold. Также эту команду можно выполнить при помощи Blender Python API через оператор bpy.ops.mesh.select_non_manifold(). Если же мы работаем с геометрией через объект BMesh, в нем такого специального оператора не предусмотрено. Однако мы можем выделить такую не-манифолд геометрию самостоятельно.

Для начала возьмем текущий активный объект, создадим для него объект BMesh и сбросим в него копию всей геометрии объекта. Теперь нам нужно выделить всю не-манифолд геометрию в нем. Переключимся в режим редактирования, чтобы наглядно видеть выделение точек, ребер и полигонов.

Снимем текущее выделение.

Начнем выделять не-манифолд ребра.

Будем считать не-манифолдными:

  • висящие ребра — к которым не примыкает ни одного полигона
  • к которым примыкает один полигон — это даст нам возможность выделить отверстия в сплошном меше
  • к которым примыкает больше двух полигонов

Выделим такие ребра. Для корректного выделения выделяем не только сами ребра, но еще и точки, им принадлежащие.

Выделим не-манифолд точки. Это просто точки, висящие в пространстве, т.е. к которым не принадлежат ни одного ребра.

На этом все. Сбросим результат выделения обратно в меш и очистим объект BMesh.

Как мы теперь наглядно видим, вся не-манифолд геометрия меша у нас теперь выделена и мы можем провести с ней нужные операции. Чаще всего — просто удалить.

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

0 Комментарий
Новые
Старые Популярные