API

Портирование аддона для Blender 2.7 в Blender 2.8

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

Изменения, которые необходимо внести в код аддона, чтобы он заработал в Blender 2.80:

Является ли свойство объекта read-only – только для чтения

Для того, чтобы проверить, является ли какое-либо свойство любого объекта Blender (меша, нода, модификатора и т.д.) read-only – “только для чтения”, нужно выполнить следующие действия:

  1. Для проверки через функцию is_property_readonly нужно выполнить команду вида:

<объект>.is_property_readonly(‘<название свойства>’)

  1. Для проверки через структуру rna нужно выполнить команду вида:

<объект>.bl_rna.properties[‘<название свойства>’].is_readonly

Например свойство меша is_editmode (находится ли меш в режиме редактирования) для активного меша:

Как узнать, в какой версии Blender был создан blend-файл

Для того, чтобы узнать, в какой версии Blender был сохранен blend-файл, нужно:

  • Открыть файл в Blender
  • В окне Python Console выполнить команду:

или можно открыть blend-файл для просмотра в любом текстовом редакторе, напрмер Notepad++. Версия Blender будет указана в первых 15 символах.

Также версию открытого blend-файла можно посмотеть в окно Outliner в блоке Data Blocks:

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

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

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

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

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

 

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

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

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

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

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

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

Переключатели состояний или так называемые Radio button – “радиокнопки” используют в случае, если нужно ограничить выбор какого-либо значения одним вариантом из нескольких имеющихся. В интерфейсе Blender есть множество подобных кнопок, например переключение между цветным и черно-белым режимами рендера или назначение режима маппинга текстуры к объекту. Подобные кнопки можно создавать и в интерфейсе разрабатываемых для 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 и проверять работу сразу “на чистовую”. Однако ручная переустановка аддона требует выполнения определенного набора действий, что излишне затрудняет подобную отладку. Решить данную проблему можно проводя переустановку аддона для тестов в автоматическом режиме.