Ищем ближайшие вертексы

Одна из самых частых задач при работе с геометрией мешей через Ptyhon API в Blender — нахождение ближайших соседних вертексов для определенной точки. Найти все ближайшие вертексы, лежащие в пределах определенного расстояний от нужного нам вертекса мы можем при помощи инструментов BMesh и KD-Tree.

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

Создадим объект BMesh и сразу скопируем в него геометрию текущего активного меша.

Теперь создадим дерево KD-Tree. Заполним его данными с координатами всех точек меша. Также сделаем предрасчет — балансировку дерева.

Допустим, мы хотим найти все точки, лежащие от выделенных, в пределах расстояния 0.7. Зададим его.

Пройдем в цикле по всем выделенным вертексам.

Чтобы при помощи KD-Tree найти все нужные точки, используем метод find_range(), в параметры которого мы передаем координаты выделенной точки и расстояние, в пределах которого искать. Метод возвращает координаты, индекс и расстояние до каждой найденной точки. Выделим ее и выведем ее данные в консоль.

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

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

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

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