Python

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

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

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

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

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

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

Создание пользовательских панелей UI в Blender

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

Родительская коллекция

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

Фильтрация значений доступных для выбора в кастомном свойстве UILayout.prop()

При создании кастомных свойств, значения которых пользователь может выбирать из предлагаемого списка, часто бывает нужно ограничить перечень предлагаемых для выбора значений. Сделать предлагаемый список значений короче, убрав из него нежелательные элементы, можно при помощи функции poll.

Вывод текста в хедер окна Blender

При исполнении модальных операторов таких, как вращение (rotation), перемещение (translation) или масштабирование (scale), в хедер текущей рабочей области вьюпорта выводится текст с текущими значениями изменяемых параметров меша. При необходимости в хедер можно выводить любой требуемый текст.

Как сделать коллекцию активной

Сделать коллекцию активной в Blender Python API за одно действие нельзя. Свойство bpy.context.collection доступно только для чтения, а bpy.context.view_layer.active_layer_collection является типом LayerCollection, которому нельзя присвоить стандартный тип коллекции Collection. Для того, чтобы назначить активную коллекцию, нужно по исходной коллекции Collection определить коллекцию слоя видимости LayerCollection и уже ее устанавливать в качестве активной.

Как изменить вид курсора в Blender

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