API

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

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

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

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

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

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

Как выбрать слой UV через Blender Python API

Управлять доступом к слоям развертки объекта при помощи Blender Python API можно через список слоев разверток uv_layers. Обращаясь к любому слою из списка мы можем сделать его активным как для выбора, так и для рендера.

Получаем веса вертексов по вертекс-группам

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

Быстрое переключение (тогглинг) шейдинга flat – smooth

Для того чтобы быстро переключaть шейдинг геометрии из плоского режима flat в сглаженный режим smooth и обратно, нужно соответствующим образом менять значение свойства “smooth” для каждого полигона меша.

Видимость объекта во вьюпорте

В ряде случаев бывает необходимо определить, виден ли в данный момент определенный объект в окне 3D вьюпорта в Blender, или – нет. В общем случае определить видимость объекта во вьюпорте можно при помощи функции location_3d_to_region_2d из модуля view3d_utils.

Отслеживание переключения между слоями видимости ViewLayer

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

Управление положением 3D вьюпорта через Blender Python API

При помощи Blender Python API можно управлять не только объектами, но и видом из 3D вьюпорта. Как и у любого объекта сцены, у вьюпорта есть матрица, при помощи которой вьюпорт можно перемещать в нужное положение.

Перевод значения из одного диапазона в другой

Функция range служит для перевода значения из одного диапазона, например от 0 до 1000 в другой, например от -1 до 1. Для быстрого получения значения в разных диапазонах, определим свою функцию range.