Python

Создание кастомного инструмента в Blender

В Blender, начиная с версии 2.8x, появилась новая панель инструментов, расположенная в рабочей области 3D вьюпорта с левой стороны. Создавать пользовательские инструменты и добавлять их в эту панель можно при помощи Blender Python API.

Адаптивная метрика

По умолчанию в Blender все размеры объектов проставляются в одних и тех же единицах. Однако для удобства можно использовать адаптивную метрику – мелкие объекты будут показывать размеры в сантиметрах и миллиметрах, а крупные – в метрах и километрах.

Выравнивание текста по центру в ячейках табличного UI

Вывести данные в форме таблицы в пользовательском интерфейсе Blender можно при помощи функций row() и column() элемента layout в классе Panel, от которого мы наследуем классы панелей пользовательского UI.

Создание связей между нодами Blender при помощи Python API

Обычно связь между двумя нодами в Blender создается простым перетаскиванием между нужными входными и выходными точками. Однако при необходимости соединять ноды можно и кодом в Blender Python API.

Удаление слоя видимости при помощи Blender Python API

Для того чтобы удалить имеющийся слой видимости View Layer при помощи Blender Python API, нужно вызывать метод remove() для списка всех слоев видимости текущей сцены.

Получение всех возможных значений параметра bl_context для классов панелей UI

При размещении пользовательских панелей UI на нужной вкладке в рабочей области Properties используется параметр bl_context. Указываемое в этом параметре значение отвечает за то, на какой именно вкладке будет размещаться пользовательская панель.

Переопределение контекста в Blender версии 3.2 и более поздних

В Blender Python API определенные операторы можно вызывать только в той рабочей области, для которой они предназначены. Если вызвать такой оператор в другой рабочей области, он не будет выполнен или же Blender выдаст ошибку. Для того чтобы вызвать такой оператор из непредназначенной для него области, нужно переопределить для него контекст.

Выбираем все объекты с нужным модификатором в Blender

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

Быстрое применение к объекту всех его модификаторов

Применить к объекту наложенные на него модификаторы можно последовательно проходя по списку модификаторов и вызывая оператор bpy.ops.object.modifier_apply() для применения каждого из них. Однако можно воспользоваться тем, что в depsgraph уже есть полностью просчитанные данные меша с уже примененными модификаторами и просто перестроить объект по этим данным.

Как проверить поддерживается ли в Blender нужный тип изображений

Открыть изображение/текстуру в Blender при помощи Python API можно вызывая оператор bpy.opa.image.open(…), или же напрямую через коллекцию изображений bpy.data.images.load(…).