見出し画像

Blenderの新機能extensionsでアドオン管理を楽にする方法

Blender 4.2では目玉機能の一つとしてextensions機能が追加されました。
この機能は通常オンライン上に存在するレポジトリよりダウンロードすることを可能にし、アップデートなどの管理を行いやすくする機能です。

認証もできるようになっており、今後、Blender Marketなどでもこの方式がサポートされる可能性もあるかと思いますが、手持ちのアドオンを管理したり、また、自作のアドオンを管理したい場合に楽に管理できる方法だと思います。

設定までの流れ

まずファイルを格納するフォルダを作成します。
特に複数台で同期を取りたい場合は、Dropbox上に配置すると便利です。

そして、この中にアドオンのZIPファイルを入れていきます。

対応しているアドオン

現在、全てのアドオンが対応しているわけではなく、blender_manifest.tomlというファイルが含まれたものである必要があります。

このファイルには配布物に関する情報が含まれており、以下のようなファイルとなります。

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 = "Test Extension"
tagline = "This is another extension"
maintainer = "Developer name <email@address.com>"
# 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 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-2.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: 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",
# ]

特に古いアドオンにはこれが入っていないので、そのままextensions機能を使って読み込ませることができません。
この場合は、いくつかの方法が考えられます。

  1. blender_manifest.tomlを作成して読み込ませる。

  2. 旧来のアドオンとして読み込ませる。

現状はこの場合は2の方法を採り、対応を待つのが一番得策となります。
ただし、後述するように社内でレポジトリを構築する場合などには独自のblender_manifest.tomlを作成する、というのはメリットがあります。

尚、Blender Marketなどで販売されているアドオンの場合、概ね2024年6月~7月以降に更新されたものは対応しているものが多いようです。

フォルダの中には対応していないものがあったとしても特に障害は発生しません。

インデックスファイルを作る

フォルダに配置したアドオンはそのままではBlenderは認識しません。
認識させるためにはインデックスファイルを作成する必要があります。
これを行うためには、以下のようなコマンドを実行します。

blender.exe --command extension server-generate --repo-dir <ファイルフォルダの場所>

このコマンドを実行すると以下のような表示が出て、index.jsonというファイルが生成されます。(基本的にはエクステンションのフォルダに移動した上で、--repo-dirを「.」として指定するのが一番楽な方法となります。)

found 1 packages.

ここで、非対応のファイルが含まれていた場合は以下のような表示も併せて表示されます。

ERROR: archive validation failed 'physical-open-waters-1.2.0.zip', error: Archive has no manifest: "blender_manifest.toml"

これは、blender_manifest.tomlが発見できなかった、というメッセージであり、これらのファイルに関しては読み込み対象に入りません。

Blender側の設定

編集→プレフェレンスからプレフェレンス画面に入ります。
その中のエクステンションを入手、のタブを選択します。

エクステンションを入手

ここで右上のリポジトリのメニューを出します。

リポジトリ

「+」ボタンを押します。
ここで、「リモートリポジトリを追加」と「ローカルリポジトリを追加」の表示がでますので、「リモートレポジトリを追加」を選びます。
リモートを使用するのは今回はローカルにファイルをリモートリポジトリと見立てて使用するためです。

リモートリポジトリを追加

次に、URLを入力する画面が出てきます。
ここにファイルの場所を入力するわけですが、通常のファイル記法ではなく、URL記法を使用します。
例えば、Windowsにおける「C:\files」は「file:///C:/files/」となります。
これを得る手っ取り早い方法は、ウェブブラウザでファイルを開き、そのURL欄よりコピーする方法です。

URL入力

この後、右のメニューから「リモートをリフレッシュ」とするとインデックスに成功したファイルが表示されます。

リモートをリフレッシュ

この後は好きなアドオンを指定して「インストール」ボタンを押すことでアドオンがインストールされます。

応用

index.jsonを生成するコマンドを少し変えると、HTMLファイルを生成することができます。

blender --command extension server-generate --repo-dir <ファイルフォルダの場所> --html

このファイルは以下のような素のHTMLとして生成され、このリンクをBlenderにドラッグ・ドロップしてインストールすることも可能です。

HTMLファイル

尚、上記のHTMLには--html-templateオプションを付けることでテンプレートファイルが使用できるので、スタイルシートを付けたりできます。

このまま、HTTPサーバにアップロードするとアドオン等が公開できるので、例えばイントラネットで使用したり、公開が問題ないアドオンである場合はインターネット上で公開することもできます。

今後の発展が期待されるextension

これまではアドオンの管理は面倒くさい部分もありましたが、今回このextensionがLTS版でサポートされたこともあり、この方式がだんだんと主流になっていくと思います。
配布サーバ向けの使用の他、このような形で配布元がまだ対応していない場合もいち早く管理に使用できるものとなりますので、是非活用してみてください。