Получаем активные вертекс, ребро и грань меша при помощи Blender Python API

Для работы с геометрией объектов в Blender очень часто нужно знать, какой именно вертекс (ребро или грань) в данный момент являются активными. Определить активные элементы геометрии меша не сложно при помощи Blender Python API.

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

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

Активный полигон

Получить активный полигон для текущего объекта проще всего. В списке полигонов меша есть свойство “active”, в котором хранится индекс текущего активного полигона.

Получить указатель на полигон по индексу можно из того же самого списка.

Активный вертекс

Получить указатель на активный вертекс объекта мы можем при помощи объекта bmesh и его списка “select_history” в котором хранится вся история выделений геометрии. Активный вертекс – это всегда последний выделенный вертекс в истории выделений.

Создадим объект bmesh и сбросим в него геометрию текущего меша. Также согласуем порядок индексов в bmesh с порядком индексов в исходной геометрии меша.

Обратимся к истории выделения, если она существует, и получим последний в списке объект нужного там типа – вертекс.

Для быстроты поиска, мы реверсируем список выделения и берем первый элемент в нем нужного нам типа. Если выделенных вертексов в истории не находится, мы получаем None.

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

Активное ребро

Указатель на активное ребро мы можем получить точно так же, как и на активный вертекс. Через объект bmesh и историю выделения.

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

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

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