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

Полный список установленных в Blender аддонов можно получить с помощью addon_utils:

Имея список аддонов, получить версию нужного аддона по его имени можно следующим образом:

Где ADD-ON_NAME — имя нужного аддона.

Если у аддона отсутствует указание версии, будет возвращет результат

 

Изучаем петли (loops)

В общем понимании «петля» или в терминологии 3D – «луп» (с английского loop – петля) обычно представляет собой последовательное выделение нескольких точек, ребер или полигонов меша.

Однако во внутренней структуре меша присутствует отдельный элемент, который тоже называется «луп» (будем придерживаться терминологии) и представляет собой условную комбинацию одного вертекса с одним ребром меша. Попробуем разобраться, для чего нужны эти «лупы».

Читать далее «Изучаем петли (loops)»

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

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

Читать далее «Как передать дополнительные параметры в скрипт или аддон при запуске Blender из командной строки»

Создание переключателя Radiobutton в интерфейсе аддона Blender

Переключатели состояний или так называемые Radio button — «радиокнопки» используют в случае, если нужно ограничить выбор какого-либо значения одним вариантом из нескольких имеющихся. В интерфейсе Blender есть множество подобных кнопок, например переключение между цветным и черно-белым режимами рендера или назначение режима маппинга текстуры к объекту. Подобные кнопки можно создавать и в интерфейсе разрабатываемых для Blender аддонов.

Рассмотрим, как можно создать свою собственную кнопку-переключатель с выбором одного из нескольких заданных значений.

Читать далее «Создание переключателя Radiobutton в интерфейсе аддона Blender»

Как проверить, зарегистрирован ли оператор в API Blender

Аддон или скрипт может содержать внутри себя несколько различных операторов, и не все они могут быть зарегистрированны в системе при выполнении функции register(). Чтобы убедиться, что нужный оператор зарегистрирован в API Blender, необходимо выполнить следующую команду:

где:

_operator_bl_idname_ — текстовое значение свойства оператора bl_idname.

Например для оператора:

команда проверки его регистрации в API будет выглядить так:

 

Как программно проверить, зарегистрирован ли установленный в Blender аддон

Для того, чтобы установленный в Blender аддон начал работу его необходимо зарегистрировать — отметить чекбокс рядом с названием аддона в окне User Preferences — Add-ons.

Чтобы узнать, зарегистрован ли нужный аддон, необходимо выполнить следующую команду:

где:

add-on_name — имя файла аддона (без расширения .py) или имя пакета аддона, если он установлен пакетом.

Отладка многофайлового аддона в Blender быстрой переустановкой

Для отладочного запуска разрабатываемого многофайлового аддона в Blender удобно использовать следующую систему. Однако описанный поход обладает одним недостатком: импортируемые в файле __init__.py модули становятся доступны только после выполнения самого файла (после того, как отработает функция register() ). Это означает, что любые обращения к импортируемым модулям до их регистрации вызовут ошибку. В большинстве случаев это не критично, однако вызовет проблемы, если в аддоне например используется наследование от класса, описанного в импортируемом модуле т.к. описание классов в модуле обрабатывается раньше инициализации аддона.

Чтобы получить больше свободы при работе с импортируемыми модулями, для отладки аддона можно использовать другой принцип — не запускать аддон непосредственно из директории разработки, а инсталлировать его в Blender и проверять работу сразу «на чистовую». Однако ручная переустановка аддона требует выполнения определенного набора действий, что излишне затрудняет подобную отладку. Решить данную проблему можно проводя переустановку аддона для тестов в автоматическом режиме.

Читать далее «Отладка многофайлового аддона в Blender быстрой переустановкой»

Как удалить и установить аддон Blender через python API

Установкой и удалением аддонов Blender можно управлять через python API. Для этого в скрипте нужно использовать следующие команды:

Деактивация аддона:

Удаление аддона:

Читать далее «Как удалить и установить аддон Blender через python API»

Редактирование свойств Custom Properties меша через API Blender

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

где:

  • property_name — имя добавляемого свойства
  • property_value — значение, присваиваемое этому свойству

После выполнения команды новое свойство будет доступно в окне Properties панели Object подпанели Custom Properties.

Как и любое свойство объекта, созданное нами свойство обладает рядом параметров, просмотреть которые можно нажав на кнопку Edit. К этим параметрам также можно получить доступ через API.

Читать далее «Редактирование свойств Custom Properties меша через API Blender»

Работа с UV через API Blender

Доступ к активной развертке:

Доступ к развертке по имени:

Читать далее «Работа с UV через API Blender»

Создание плавающей панели в аддонах Blender

Для размещения элементов пользовательского интерфейса при разработке аддонов Blender кроме обычных панелей (N/T/Properties) и их подпанелей можно использовать и так называемые плавающие панели — появляющиеся на экране в произвольном месте при нажатии пользователем определенного сочетания клавиш или при совершении им какого-либо действия. Простейшим примером таких панелей является панель, появляющаяся при нажатии клавиши f6 сразу после добавления в сцену какого-либо объекта (shift+a).

API Blender предоставляет разработчикам возможность создавать подобные панели для своих аддонов. Рассмотрим процесс создания плавающей панели на примере всплывающего окна с сообщением типа «Messagebox».

Читать далее «Создание плавающей панели в аддонах Blender»

Активные объекты

Как обращаться через Blender Python API к активным (выделенным) объектам при написании скриптов/аддонов:

  1. Активное окно (в котором происходит действие):

  1. Активная сцена:

  1. Активный (выделенный) меш:

  1. Активный (выделенный) нод материала (в окне NODE_EDITOR):

  1. Активный (выделенный) нод материала (в окне COMPOSITING):

  1. Текущий текст в окне TEXT_EDITOR:

  1. Текущая развертка (UV-Map):

Читать далее «Активные объекты»

Как получить структуру объекта Blender

При написании скриптов в Blender часто нужно узнать полный список свойств какого-либо объекта для того, чтобы обращаться к ним в дальнейшем через Blender API. Рассмотрим, как можно получить список свойств и методов, доступных для исследуемого объекта.

Читать далее «Как получить структуру объекта Blender»

Подключение к базе данных MySQL из Blender

Хранение информации в удаленной базе данных стало обычной практикой при разработке программных продуктов. Blender — не исключение. При написании скриптов и аддонов, разработчик может столкнуться с необходимостью обращения к базе данных, чтобы получить из нее или записать в нее необходимые данные. MySQL на сегодня является одной из самых распространенных и общедоступных баз данных и хорошо подходит для работы с Blender.

Взаимодействие Blender с базой данных MySQL через Python API не преставляет особых сложностей, однако сначала необходимо выполнить некоторую подготовку:

Читать далее «Подключение к базе данных MySQL из Blender»

Привязка к кадрам

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

В качестве примера создадим несложную анимацию, последовательно превращающую одну из букв произвольного текста из строчной в заглавную.

Читать далее «Привязка к кадрам»

Создание многофайлового аддона

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

Blender на уровне Python поддерживает модульную систему компоновки кода, что позволяет разносить логические части аддона по отдельным файлам, после чего подключать их для использования там, где необходимо. Даже если вы ни разу не задумывались об использовании модулей, создавая скрипты или аддоны, вы с ними уже сталкивались — любой код, сохраненный в файл *.py, представляет из себя отдельный самостоятельный модуль. Просто ваш аддон состоял всего лишь из одного модуля. Сложные же аддоны могут состоять из нескольких десятков подключенных модулей.

Мультифайловый аддон
Мультифайловый аддон

Читать далее «Создание многофайлового аддона»

Задание координат рамки рендера

В Blender есть возможность ограничить область рендера — выделив с помощью специальной рамки часть будущего изображения и отметив чекбокс Border во вкладке Render — Dimensions окна Properties. Если такая рамка задана — отрендерена будет только ограниченная рамкой область изображения.

Рамка рендера
Рамка рендера

Для того, чтобы задать рамку рендера через Blender API есть два варинта:

Читать далее «Задание координат рамки рендера»

Создание в аддонах Blender переменных с сохраняемыми значениями

Все определенные пользователем классы (панели, операторы), если они зарегистрированы в API, существуют только пока запущен сам графический редактор Blender. В момент закрытия программы все они удаляются из памяти. Поэтому, даже если внутри пользовательских классов определены какие-то переменные, все значения этих переменных при перезапуске программы будут сброшены.

Однако, иногда бывает необходимо использовать в аддоне Blender переменную, значение которой не будет потеряно в процессе перезапуска программы. Чтобы переменная сохраняла свое значение, нужно создать ее в виде специального класса — свойства (property), и присоединить к какому-либо объекту, свойства которого сохраняются в *.blend файле.

Читать далее «Создание в аддонах Blender переменных с сохраняемыми значениями»

Переменные в классах-операторах Blender API

Пользовательские классы-операторы, наследованные от bpy.types.Operator, являются статическими классами. Следовательно в них могут быть определены только статические переменные.

Определение статической переменной sampleVar в классе-операторе SampleClass:

Читать далее «Переменные в классах-операторах Blender API»