なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Blender Extensions Platform に自作アドオンを対応させよう

Blender は 4.2 から、無料かつ OSS なアドオンであれば、登録・承認をされることで Blender Extensions Platform から簡単にインストールやアップデートができるようになります。 詳しくは3D人さんのブログがわかりやすいです:

3dnchu.com

今回、昔から配布していたちょっと人気なアドオンを Extensions Platform に提出し、無事承認されたので必要な作業をまとめます。

extensions.blender.org

まずは、 __init__.py にて定義していた bl_info = { ... } を削除します。これは blender_manifest.toml に取って代わられました。 blender_manifest.toml__init__.py があるディレクトリに、以下のような形式で記述します。

schema_version = "1.0.0"
id = "drag_and_drop_support"
maintainer = "Natsune Mochizuki <メールアドレス>"
name = "Drag and Drop Support"
tagline = "Support and improve drag and drop imports in Blender. "
version = "1.0.0"
type = "add-on"

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

# Optional list defined by Blender and server, see:
# https://docs.blender.org/manual/en/dev/advanced/extensions/tags.html
tags = ["3D View", "Import-Export"]

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:MIT",
]
# Optional: required by some licenses.
copyright = [
  "2018-2024 Natsune Mochizuki",
]

# 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: 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 models from the disk"
# clipboard = "Copy and paste bone transforms"

# Optional: build settings.
# https://docs.blender.org/manual/en/dev/advanced/extensions/command_line_arguments.html#command-line-args-extension-build
[build]
paths_exclude_pattern = [
  "__pycache__/",
  "/.git/",
  "/*.zip",
]

[build] のセクションはコマンドラインからビルドしない場合、必要ないので削除してかまいません。 必須ポイントとなっているのが permissions で、例えば通信を行うなら network を、ファイルをディスクから・ディスクへ読み書きするなら files を指定するなどが必要です。 今回のアドオンの場合は、ファイルを読み込むので files パーミッションを追加しています。 仮にパーミッションを指定せずに提出した場合、レビューで指摘されるので、どうすれば良いか分からない場合はいったん記述無しで提出しても良いでしょう。

その他コード面は Preferences などを使用していなければ特に変更すること無く、動作確認して動いていれば提出が可能です。 提出はアカウントを作成した後、下記ページから可能です。 Extension 名などは blender_manifest.toml から自動設定されます。

Sign in - Blender ID - blender.org

アップロード後は画像を設定します。必須なのは下記の通り:

  • アイコン画像 (256x256 正方形)
  • 機能を説明する画像 (1920x1080 or 16:9 の画像)
  • プレビュー画像 or 動画 (16:9)

また、審査中でも Approval Queue から他の人も一応ダウンロードすることは可能です:

extensions.blender.org

他の人の Extension の審査状況がどうなっているかなども見ることができるので、あらかじめチラ見しておくと、審査をスムーズに進めることができると思います (よく見るのが "Blender" という名前を使わないで、と指摘されているケース)。 ということで、メモでした。