Як Створити Розширення#

Створення розширення займе тільки декілька кроків:

  1. Відкрийте директорію яка містить код звичайного розширення або файл теми.

  2. Додати blender_manifest.toml файл з усіма потрібними мета-даними (name, maintainer, ...).

  3. Використовуйте Blender інструмент командного рядка щоб створити .zip файл розширення.

Як опублікувати Blender Платформу Розширень:

Розширення буде утримуватись для перегляду, та буде опубліковане як тільки команда модерації дозволить це.

Файли Розширення#

Розширення обмінюється як .zip архів який містить файл маніфесту та інші файли. Очікувані файли залежать від типу розширення.

Звичайне розширення#

Звичайне розширення має містити мінімум маніфест та __init__.py файл, поки інші більш комплексні звичайні розширення мають декілька різних .py файлів або wheels(крутяться) разом.

my_extension-0.0.1.zip
├─ __init__.py
├─ blender_manifest.toml
└─ (...)

Тема розширення#

Тема розширення тільки потребує маніфест файл та .xml файл теми.

my_extension-0.0.1.zip
├─ blender_manifest.toml
└─ theme.xml

Примітка

Розширення можуть опціонально мати всі свої файли всередині теки (всередині архіву). Це є звичайною поведінкою при зберігані файлів сховищ як ZIP з платформ контролю версій.

Маніфест#

Маніфест, це файл з усіма мета-даними які потрібні для розширення, щоб бути обчисленим. Цей приклад є гарною початковою точкою для blender_manifest.toml який повинен бути в середині .zip.

schema_version = "1.0.0"

# Example of manifest file for a Blender extension
# Change the values according to your extension
id = "my_example_extension"
version = "1.0.0"
name = "My Example Extension"
tagline = "This is another extension"
maintainer = "Developer name <[email protected]>"
# Supported types: "add-on", "theme"
type = "add-on"

# # Optional: link to documentation, support, source files, etc
# website = "https://extensions.blender.org/add-ons/my-example-package/"

# # Optional: tag list defined by Blender and server, see:
# # https://docs.blender.org/manual/en/dev/advanced/extensions/tags.html
# tags = ["Animation", "Sequencer"]

blender_version_min = "4.2.0"
# # Optional: Blender version that the extension does not support, earlier versions are supported.
# # This can be omitted and defined later on the extensions platform if an issue is found.
# blender_version_max = "5.1.0"

# License conforming to https://spdx.org/licenses/ (use "SPDX: prefix)
# https://docs.blender.org/manual/en/dev/advanced/extensions/licenses.html
license = [
  "SPDX:GPL-3.0-or-later",
]
# # Optional: required by some licenses.
# copyright = [
#   "2002-2024 Developer Name",
#   "1998 Company Name",
# ]

# # Optional: list of supported platforms. If omitted, the extension will be available in all operating systems.
# platforms = ["windows-x64", "macos-arm64", "linux-x64"]
# # Other supported platforms: "windows-arm64", "macos-x64"

# # Optional: bundle 3rd party Python modules.
# # https://docs.blender.org/manual/en/dev/advanced/extensions/python_wheels.html
# wheels = [
#   "./wheels/hexdump-3.3-py3-none-any.whl",
#   "./wheels/jsmin-3.0.1-py3-none-any.whl",
# ]

# # Optional: add-ons can list which resources they will require:
# # * files (for access of any filesystem operations)
# # * network (for internet access)
# # * clipboard (to read and/or write the system clipboard)
# # * camera (to capture photos and videos)
# # * microphone (to capture audio)
# #
# # If using network, remember to also check `bpy.app.online_access`
# # https://docs.blender.org/manual/en/dev/advanced/extensions/addons.html#internet-access
# #
# # For each permission it is important to also specify the reason why it is required.
# # Keep this a single short sentence without a period (.) at the end.
# # For longer explanations use the documentation or detail page.
#
# [permissions]
# network = "Need to sync motion-capture data to server"
# files = "Import/export FBX from/to disk"
# clipboard = "Copy and paste bone transforms"

# # Optional: advanced build settings.
# # https://docs.blender.org/manual/en/dev/advanced/extensions/command_line_arguments.html#command-line-args-extension-build
# [build]
# # These are the default build excluded patterns.
# # You only need to edit them if you want different options.
# paths_exclude_pattern = [
#   "__pycache__/",
#   "/.git/",
#   "/*.zip",
# ]

Необхідні значення:

blender_version_min:

Мінімальна підтримувана версія Blender - використовуйте щонайменше 4.2.0.

id:

Унікальний ідентифікатор для розширення.

license:

Список ліцензій, використовуйте SPDX ідентифікатор ліцензій.

maintainer:

Підтримувач розширення.

name:

Повна назва розширення.

schema_version:

Внутрішня версія формату файлу - використовуйте 1.0.0.

tagline:

One-line short description - cannot end with punctuation.

type:

«звичайне розширення», «тема».

version:

Версія розширення - повинно слідувати за версійною семантикою.

Опціональні значення:

blender_version_max:

Версія Blender, що не підтримує розширення, нижчі версії підтримуються.

website:

Вебсайт для розширення.

copyright:

Деякі ліцензії потребують авторського права, авторські права повинні бути «Рік Назва» або «Рік-Рік Назва».

tags:

Список тегів. Дивіться список доступних тегів.

платформи:

Список підтримуваних платформ. Якщо пропущено, розширення буде доступне на всіх операційних системах. Доступними опціями є [«windows-x64», «windows-arm64», «macos-x64», «macos-arm64», «linux-x64»]

wheels:

Список відносних файлових-шляхів Python Wheels.

permissions:

Add-ons can list which resources they require. The available options are files, network, clipboard, camera, microphone. Each permission should be followed by an explanation (short single-sentence with no end punctuation (.)).

Опціональні значення для «build»:

Ці значення використовуються лише build під-командою.

paths:

Список файлових-шляхів відносних до маніфесту, щоб включити їх в себе при створені пакунку.

paths_exclude_pattern:

Список файлових шляхів щоб вилучити ті, що включені під час створення пакунку.

Шаблон повинен бути сумісний і збігатись з gitignore.

Зауважте, що встановлюючи це значення, воно не буде підтримуватись коли paths також вказано.

Якщо [build] таблиця не вказана, наступні типові значення будуть використані:

[build]
paths_exclude_pattern = [
  "__pycache__/",
  ".*",
  "*.zip",
]
Зарезервовано:

Ці значення не повинні бути вказані в TOML та є зарезервованими для внутрішнього використання.

  • [build.generated]

Примітка

Всі значення які присутні в маніфест файлі повинні бути заповненні (тобто, не можуть бути пустими, ні текст "", ні список []).

Якщо ви не хочете встановити одне із опціональних значень, просто взагалі вилучіть його з маніфесту.

Командний рядок#

Розширення можуть бути створені, перевірені та встановлені за допомогою командного рядка.

Щоб створити пакунок визначений в поточній директорії використовуйте наступні команди:

blender --command extension build

Дивіться build документи.

Що перевірити маніфест без створення пакунку:

blender --command extension validate

Ви також можете перевірити пакунок без його розпакування спочатку.

blender --command extension validate add-on-package.zip

Дивіться validate документації.

Сайти сторонніх розробників#

Якщо ви хочете розміщувати розширення самі, дивіться Створення Сховища Розширень документації.