API

Обрезание значения по границам

Для того чтобы обрезать (clip) значение по границам – проверить, не выходит ли значение за заданные пределы и если нет – то вернуть само значение, а если выходит – максимально возможное граничное значение, можно с помощью очень простой функции.

Переопределяем контекстное меню полностью

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

Загружаем аддон всегда последним

В некоторых случаях, необходимо обеспечить, чтобы аддон всегда загружался при запуске Blender последним, после того, как будут загружены все остальные аддоны. Это может понадобиться, если аддон конфликтует с какими-то другими аддонами или использует функционал из других аддонов, который должен быть доступен уже при старте аддона.

Порядок загрузки аддонов

При старте Blender все активные аддоны загружаются последовательно, один за другим. Какой из аддонов будет загружен раньше, определяется его порядковым номером в списке bpy.context.preferences.addons.

Получение координат точек Lattice

Модификатор Lattice используется для упрощения процесса деформации высокополигональных мешей при помощи несложных каркасных объектов с небольшим числом точек. Каркас накладывается на меш и связывается с ним, после чего манипулируя точками каркаса можно деформировать сам меш. Для получения координат точек каркаса через Blender Python API, нужно обратиться к свойству каркаса “points”.

Добавление новых пунктов в контекстное меню

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

Загружаем в сцену объекты по именам из внешнего blend-файла

Для того чтобы загрузить в сцену нужные меши по именам из внешнего blend-файла можно использовать оператор wm.append или же воспользоваться механизмом BlendDataLibraries.

Как выделить все объекты в коллекции

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

Как отследить переключение между объектным режимом и режимом редактирования объекта

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

Правильное использование foreach_set

foreach_set – это удобная обертка в Blender Python API для быстрого присвоения каждому элементу коллекции bpy_prop_collection нужного значения. Однако при использовании этой функции разработчики скриптов часто сталкиваются с появлением не совсем очевидной ошибки.