Как назначить активный вертекс в bmesh

Точно так же как и в стандартной структуре данных меша, в объекте bmesh присутствует понятие текущего “активного” вертекса. Мы можем узнать, какой вертекс считается в bmesh в текущий момент активным, а также назначить активный вертекс в bmesh при помощи Blender Python API.

Для начала создадим объект bmesh и загрузим в него данные из текущего активного меша.

Меш должен находиться в режиме редактирования (EDIT mode).

Заодно выполним операцию ensure_lookup_table для вертексов, чтобы привести их индексы к тому же порядку, что и в исходном меше.

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

Чтобы узнать, какой вертекс является активным в настоящий момент, нам нужно просто вывести значение свойства active в истории:

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

Если вертекс уже присутствует в истории выделения, повторное добавление его в историю не будет иметь эффекта. Поэтому чтобы гарантированно добавить его на последнее место в истории (и сделать активным) предварительно его нужно из истории удалить командой remove().

Если мы теперь выведем на печать текущий активный вертекс, мы увидим нужный нам результат.

При необходимости мы можем сбросить данные из bmesh обратно в основной меш и освободить объект bmesh.

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

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