Bounding Box

Bounding Box – это прямоугольный параллелепипед, описанный вокруг всех точек меша. Обычно Bounding Box используется для

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

Для каждого меша в сцене Bounding Box рассчитывается автоматически, и пересчитывается при каждом изменении меша.

Получить координаты всех углов Bounding Box для любого объекта можно через его свойство bound_box, которое представляет собой массив bpy_prop_array с набором координат. Каждый элемент массива bound_box в свою очередь представляет собой массив из трех координат точки:

Координаты Bounding Box объекта считаются в его локальной системе координат. Чтобы получить глобальные координаты Bounding Box (в системе координат сцены) нужно ее локальные координаты умножить на матрицу мира объекта.

Также следует учитывать, что Bounding Box рассчитывается для базового объекта, т.е. получаемые координаты зависят, например, от того, включены ли модификаторы в стеке объекта или нет.

Для того, чтобы получить финальные координаты Bounding Box нужно использовать рассчитанный evaluated меш. Получить рассчитанный объект из текущего можно при помощи Depsgraph:

Теперь мы можем получить финальные координаты углов Bounding Box:

Для примера поставим в каждый угол Bounding Box объекта пустышку. Пройдясь по списку финальных координат углов Bounding Box, создадим для каждого из них пустышку и поместим в координаты угла:

Весь код целиком:


*.blend и *.py файлы с примером для моих подписчиков на Patreon.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии