Python

Как узнать версию Python, используемую в Blender

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

Это означает, что в текущей версии Blender используется Python 3.7.0.

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

или в полной форме:

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

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

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

Использование 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 будет выглядить так: