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

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

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

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

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

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

2.78

Вышел релиз Blender 2.78.

Дистрибутив доступен для скачивания с официального сайта.

2.78 (заставка от JURI UNT)
2.78 (заставка от JURI UNT)

Создание панелей для размещения интерфейса пользователя (UI) в аддонах Blender

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

Эта статья для Blender 2.79 и старших версий. Руководство для более поздних версий Blender смотрите здесь.

Весь доступный интерфейс пользователя Blender располагается на панелях, три из которых используются в работе чаще всего. Это T-панель – открывается и скрывается по нажатию клавиши t, N-панель – открывается и скрывается по нажатию на клавишу n, и панель свойств Properties – вызывается в главном меню любого окна выбором его типа как Properties.

API Blender предоставляет возможность определить свою пользовательскую панель для размещения кнопок вызова функционала аддона в любой из этих главных панелей.

Создание аддона для Blender

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

Пользовательский аддон в Blender
Пользовательский аддон в Blender

Подключение дополнений (аддонов)

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

Для примера подключим к Blender дополнение, позволяющее по нажатию определенной комбинации клавиш выполнить рендер с показом сетки (wireframe-рендер).

Подключение внешней IDE PyCharm для написания скриптов в Blender

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

Внешняя IDE для написания скриптов в Blender
Внешняя IDE для написания скриптов в Blender

Создание резьбы

Для создания резьбовых соединений в Blender проще всего воспользоваться плагином, например Bolt Factory, который идет в стандартной комплектации. Однако возможностей плагина не всегда хватает, да и наложение Subdivision Surface на созданную модификатором резьбу дает не очень красивый результат. Впрочем, резьбу не сложно создать вручную.

Резьбовые соединения
Резьбовые соединения

Создадим высокополигональную резьбу, подходящую для рендера любого крупного плана.

Заполнение объема насыпанием

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

Банка, заполненная предметами
Банка, заполненная предметами

Все это можно сделать и вручную. Создавать копии заполняющих объектов и располагать друг над другом в случайном порядке. Однако при таком подходе слишком много сил и времени уходит на постоянные проверки, чтобы объекты не пересекались друг с другом и со стенками заполняемого объекта. Чтобы облегчить себе работу, можно воспользоваться инструментом Rigid Body – аналогом твердотельной симуляции в Blender.