Разбиваем последовательность вертексов на блоки для построения полигонов

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

В общем случае разделить список объектов на блоки при помощи Python не сложно, однако нам нужно учесть, что каждый последующий полигон использует две точки от предыдущего полигона.

Поэтому при исходном наборе точек, например

нам не годится простая последовательность блоков вида

а нужна такая последовательность блоков

Т.е. блоки должны перекрываться на две точки.

Напишем функцию, которая на входе принимает последовательность точек и возвращает эту последовательность, разбитую на блоки с указанным смещением.

Во входных параметрах функции мы передаем список точек lst, количество элементов в одном блоке n, и необходимое значение для перекрытия точек в блоках offset.

Для проверки функции в действии создадим объект bmesh из текущего активного меша с последовательностью точек.

и вызовем нашу функцию

Нам необходимы блоки по 4 вертекса, поэтому в параметре n мы передаем значение равное 4, и соответственно перекрытие вертексов будет равно 2. В параметре lst мы передаем список вертексов меша.

В результате мы получаем набор нужных блоков:

Используя полученный набор мы можем строить полигоны.

Проверка на количество точек в блоке нужна чтобы не строить полигон по последнему блоку, в котором будут только два вертекса.

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

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