Создать аддон для Blender проще, чем кажется. Достаточно знать основы Python, иметь ясную идею, что должен делать плагин, и следовать проверенной структуре. В большинстве случаев процесс сводится к написанию скрипта с заданными методами, упаковке его в архив и установке через интерфейс программы. Даже первый рабочий прототип можно сделать за час, если не усложнять задачу.
В этой статье разберём весь путь: от подготовки среды до отладки и распространения. Покажу, какие инструменты понадобятся, как избежать типичных ошибок и где искать вдохновение для собственных аддонов. Если вы уже пробовали писать скрипты для Blender, часть шагов покажется знакомой — но здесь собран полный чек-лист для работы без лишних итераций.
Подготовка: что нужно знать перед началом
Перед тем как сделать аддон для Blender, проверьте три вещи: версию программы, знание Python и цель плагина.
Версия Blender. Аддоны часто зависят от API, который меняется между релизами. Если пишете для Blender 3.6, тестируйте на ней — в 4.0 что-то может сломаться. Узнать текущую версию можно в Help → About Blender. Для совместимости с несколькими версиями используйте условные проверки в коде.
Знание Python. Без него не обойтись: API Blender построено на этом языке. Достаточно базового синтаксиса (функции, классы, импорты) и понимания, как работать с модулями. Если опыта нет, пройдите бесплатный курс по Python на Codecademy или Coursera — хватит 2–3 недели.
Цель аддона. Чётко сформулируйте, что он должен делать. Например: «автоматически создавать UV-развёртку для стандартных примитивов» или «добавлять кастомные материалы в один клик».ем чем конкретнее задача, тем прощеть код.
Используйте официальную документацию Blender по Python API: она обновляется вместе с программой и содержит примеры кода для всех основных функций.
| Файл/папка | Назначение | Обязателен? |
|---|---|---|
__init__.py | Манифест аддона с метаданными и регистрацией классов | Да |
operators.py | Определяет кастомные операторы (действия) | Нет |
panels.py | Создаёт панели в интерфейсе Blender | Нет |
icons/ | Хранит пользовательские иконки | Нет |
ui.py | Определяет кастомные элементы UI (меню, диалоги) | Нет |
Структура аддона: из чего состоит плагин
Любой аддон для Blender — это набор файлов с определённой структурой. Минимальная рабочая версия состоит из одного файла .py, но для сложных плагинов потребуется больше.
Базовые элементы:
- Манифест (
__init__.py) — обязательный файл, который Blender ищет при установке. Здесь прописываются метаданные: имя аддона, версия, автор, описание и ссылка на документацию. - Основной скрипт (
operatots.py,panels.py) — содержит классы операторов, панелей и других компонентов интерфейса. - Ресурсы (
icons/,presets/) — папки для иконок, пресетов или других статических файлов.
Выбор типа аддона: что он будет делать
Аддоны для Blender делятся на несколько типов в зависимости от функционала. От типа зависит структура кода и сложность реализации.
Операторы (Operators). Самый простой тип — выполняют одно действие по нажатию кнопки или горячей клавиши. Пример: удаление всех объектов сцены одним кликом. Подходит для автоматизации рутинных задач.
Панели (Panels). Добавляют новые вкладки или секции в интерфейс Blender. Часто используются для группировки операторов или отображения кастомных настроек. Например, панель для настройки камеры в 3D-печати.
Модификаторы (Modifiers). Расширяют функционал стандартных модификаторов. Сложный тип, требует глубокого понимания API. Пример: кастомный модификатор для генерации процедурных текстур.
Импорт/экспорт (Import/Export). Аддоны для работы с нестандартными форматами файлов. Например, импорт моделей из SketchUp или экспорт в glTF с кастомными настройками.
Утилиты (Utilities). Вспомогательные инструменты без прямого отображения в UI. Пример: скрипт для автоматического переименования объектов по заданному шаблону.
Написание кода: основные шаги
Теперь перейдём к практике. Рассмотрим создание простого аддона-оператора, который добавляет куб с заданными параметрами.
- Создайте папку для аддона. Назовите её, например,
add_custom_cube. Внутри создайте файл__init__.py. - Заполните манифест. В
__init__.pyдобавьте базовую информацию:bl_info = { "name": "Add Custom Cube", "author": "Your Name", "version": (1, 0), "blender": (3, 6, 0), "location": "View3D > Add > Mesh > Add Custom Cube", "description": "Adds a cube with custom dimensions", "warning": "", "category": "Add Mesh", }Здесьblenderуказывает минимальную версию программы,location— где будет отображаться кнопка вызова аддона. - Создайте класс оператора. В том же файле добавьте:
import bpy from bpy.types import Operator from bpy.props import FloatProperty class OBJECT_OT_AddCustomCube(Operator): bl_idname = "object.add_custom_cube" bl_label = "Add Custom Cube" bl_options = {'REGISTER', 'UNDO'} size: FloatProperty( name="Size", default=2.0, min=0.1, max=10.0, ) def execute(self, context): bpy.ops.mesh.primitive_cube_add(size=self.size, location=(0, 0, 0)) return {'FINISHED'}Здесьbl_idname— уникальный идентификатор оператора,size— кастомный параметр. - Зарегистрируйте оператор. В конце файла добавьте:
classes = (OBJECT_OT_AddCustomCube,) def register(): for cls in classes: bpy.utils.register_class(cls) def unregister(): for cls in classes: bpy.utils.unregister_class(cls) if __name__ == "__main__": register()
- Добавьте вызов в меню. Чтобы оператор появился в интерфейсе, добавьте функцию для регистрации в меню:
def menu_func(self, context): self.layout.operator(OBJECT_OT_AddCustomCube.bl_idname) def register(): for cls in classes: bpy.utils.register_class(cls) bpy.types.VIEW3D_MT_mesh_add.append(menu_func) def unregister(): for cls in classes: bpy.utils.unregister_class(cls) bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)
⚠️ Внимание: Не изменяйте стандартные классы Blender напрямую — это может привести к краху программы. Всегда используйте API для регестрации кастомных элементов.
Отладка и тестирование: как проверить аддон
Перед установкой аддон нужно протестировать. Blender позволяет делать это прямо в программе без перезапуска.
Способ 1: Запуск из текстого редактора. Откройте Blender, перейдите в Scripting workspace. В текстовом редакторе откройте файл __init__.py и нажмите Run Script. Если ошибок нет, аддон появится в меню Add → Mesh.
Способ 2: Установка через интерфейс. Архивируйте папку с аддоном в .zip. В Blender перейдите в Edit → Preferences → Add-ons → Install, выберите архив и активируйте аддон. После установки он будет доступен до перезапуска программы.
Способ 3: Консоль Python. Для отладки используйте встроенную консоль (Window → Toggle System Console). Здесь отображаются ошибки Python, что помогает быстро находить баги.
| Тип ошибки | Причина | Как исправить |
|---|---|---|
| AttributeError | Обращение к несуществующему атрибуту | Проверьте названия классов и методов в API |
| TypeError | Несоответствие типов данных | Убедитесь, что передаёте правильные типы (float, int, string) |
| KeyError | Отсутствует ключ в словаре | Проверьте, что все обязательные ключи (например, в bl_info) заполнены |
| RuntimeError | Ошибка выполнения (например, отсутствует контекст) | Используйте context для доступа к данным сцены |
Дополнительные функции: расширение возможностей
Базовый аддон работает, но его можно улучшить. Добавим к нашему оператору кастомные параметры и панель для управления ими.
Добавление параметров. В классе оператора можно задать дополнительные свойства. Например, цвет куба:
color: FloatVectorProperty( name="Color", subtype='COLOR', size=4, min=0.0, max=1.0, default=(1.0, 0.0, 0.0, 1.0), # Красный цвет по умолчанию )В методе
execute используйте этот параметр, чтобы задать цвет материала куба.
Создание панели. Чтобы управлять параметрами из интерфейса, создайте панель в файле panels.py:
import bpy
from bpy.types import Panel
class OBJECT_PT_CustomCubePanel(Panel):
bl_label = "Custom Cube Settings"
bl_idname = "OBJECT_PT_custom_cube_panel"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "Custom Tools"
def draw(self, context):
layout = self.layout
props = context.scene.custom_cube_props
layout.prop(props, "size")
layout.prop(props, "color")
layout.operator("object.add_custom_cube")
Не забудьте зарегистрировать панель в __init__.py.
Чем проще аддон, тем легче его поддерживать. Не усложняйте функционал без необходимости — лучше выпустите минимальную рабочую версию и дорабатывайте её по отзывам пользователей.
Упаковка и распространение аддона
Когда аддон готов, его нужно правильно упаковать и подготовить к распространению. Это важно, если вы планируете делиться им с другими.
Упаковка. Архивируйте папку с аддоном в .zip. Убедитесь, что внутри архива нет лишних файлов (например, временных или системных). Структура должна выглядеть так:
add_custom_cube/ ├── __init__.py ├── operators.py └── panels.py
Документация. Добавьте файл README.md с описанием функционала, инструкцией по установке и примерами использования. Для сложных аддонов полезно создать отдельную страницу на GitHub или Blender Market.
Тестирование на разных версиях. Проверьте аддон на нескольких версиях Blender, если хотите обеспечить максимальную совместимость. Для этого используйте портативные версии программы.
Публикация. Загрузите аддон на специализированные площадки:
- Blender Market — платная и бесплатная площадка для аддонов.
- GitHub — бесплатный хостинг кода с возможностью управления версиями.
- Blend Swap — сообщество для обмена моделями и аддонами.
Чек-лист перед публикацией аддона
Часто задаваемые вопросы
Нужно ли знать C++ для создания аддонов?
Нет. Все аддоны для Blender пишутся на Python. C++ используется только для разработки самого движка Blender, что не требуется для создания плагинов.
Можно ли продавать аддоны для Blender?
Да, но есть нюансы. Blender — программа с открытым исходным кодом (лицензия GPL), поэтому если ваш аддон использует код из ядра Blender, он также должен быть открытым. Однако если код полностью ваш, можно продавать его на правах proprietary software. Уточняйте условия на официальном сайте.
Как отладить аддон, если он не появляется в меню?
Проверьте три момента: 1) правильность bl_idname в классе оператора; 2) вызов функции menu_func в register(); 3) отсутствие ошибок в консоли (Window → Toggle System Console). Часто проблема в опечатках или неверной регистрации.
Где искать вдохновение для новых аддонов?
Изучайте форумы Blender Artists и Reddit (r/blender), где пользователи делятся идеями. Посмотрите на существующие аддоны в Blender Market — часто можно улучшить или комбинировать их функционал. Также анализируйте свой рабочий процесс: что вы делаете вручную и хотите автоматизировать?