Python

Использование IDE Microsoft Visual Studio Code для написания скриптов/аддонов в Blender

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

Одной из таких сред разработки является Visual Studio Code от компании Microsoft. Это бесплатная универсальная IDE, поддерживающая разработку на различных языках программирования, в том числе и на языке API Blender – Python.

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

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

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

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

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

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

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

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

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

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

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

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

 

Как программно переключить режим выбора: точки, ребра, полигоны

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

Режим выделения точек:

ребер:

и полигонов:

Также можно включать мультиселект, указывая совместное включение нескольких режимов. Например для точек и полигонов:

Для BMesh отдельно для вершин, ребер и граней:

Мультиселект для BMesh:

 

Изучаем петли (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 и проверять работу сразу “на чистовую”. Однако ручная переустановка аддона требует выполнения определенного набора действий, что излишне затрудняет подобную отладку. Решить данную проблему можно проводя переустановку аддона для тестов в автоматическом режиме.