Выпуклая оболочка

Функция convex_hull() позволяет создать для меша выпуклую оболочку – форму, которая полностью охватывает меш по его крайним точкам. С ее помощью можно быстро строить упрощенные модели из сложных мешей.

Для того чтобы воспользоваться функцией convex_hull() необходимо инициировать структуру данных bmesh.

Создадим bmesh и загрузим в него геометрию текущего выделенного меша.

Вызовем функцию convex_hull для построения выпуклой оболочки вокруг геометрии, находящейся в bmesh.

В функцию передается два параметра:

  • указатель на геометрию bmesh
  • набор точек, вокруг которых будет построена выпуклая оболочка

В нашем случае мы передаем во втором параметре все точки меша.

Функция возвращает словарь с четырьмя ключами:

  • geom – список точек из которых построена выпуклая оболочка
  • geom_interior – список всех точек геометрии
  • geom_unused – список неиспользованных в просчете точек, если они есть
  • geom_holes – список точек, образующих отверстия в оболочке, если они есть

Эту информацию можно использовать, например, для того чтобы выделить точки, образующие только саму построенную оболочку.

Для этого предварительно нужно снять выделение со всех точек:

А после вызова convex_hull() выделить точки из списка по ключу geom:

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

Полный код:

 

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

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