閉じる

UI言語[UI Language]

記事自体は翻訳されません! 記事によって英語版があったりなかったりします。翻訳がある記事は文頭に記載があるよ!
Each articles themselves will not be translated by this setting. Some of article has translation and some of them doesn't. You will notice if the article has its translation by its preamble!

テーマ[Theme]


アイキャッチ画像

VScodeでのBlenderスクリプト開発環境のセットアップ


最近はBlenderのアドオン作りにハマっているので、その開発環境構築用のメモ書きです✍


Pythonインタープリターの選択

Blenderは内部に独立したPython環境を持っているので、VScodeでスクリプトを開発する時はPythonのバージョンを合わせておくと、使える構文などがはっきりして良いかと。Blender上でPythonのバージョンを確認して、pyenvで同じバージョンのPythonをインストール、選択しておきます。

BlenderのPythonバージョンの確認

Blender上のPythonコンソールから、下記のスクリプトを実行すればPythonのバージョンを確認できます。

import sys
print(sys.version)

ちなみに、Blender 4.0では3.10.13、2024/04/23時点で最新であるBlender 4.1では3.11.6でした。

pyenvで指定のバージョンをインストール、選択

pyenvのインストール

Homebrew🍺から。

brew install pyenv

pyenvでインストール可能なPythonバージョン一覧を取得

そのままだと沢山のPythonバージョンが表示されてしまうので、grepで絞り込むと見やすいです。

pyenv install --list
pyenv install --list | grep "3.11"

インストール済みのPythonバージョン一覧を表示

pyenv versions

特定のバージョンのPythonをインストール

pyenv install 3.11.0

Pythonのバージョンを選択

pyenv global 3.11.0

VScodeでPythonインタープリターを選択

コマンドパレット( command+shift+P ) → Python: Select Interpreter

VScode Python: Select Interpreter
VScode Python: Select Interpreter

この時、pyenvでPythonバージョンを切り替えた直後だとrecommendedになっているインタープリターが反映されてなかったりするのですが、しばらく待ったりVScodeを再起動したりすると切り替わります。


fake-bpy-module

Blenderのスクリプトではbpyとかbmeshで始まる専用のモジュールが使えるのですが、VScode上ではモジュールが見つからない旨の警告が出てしまいます。当然コード補完も働きません。
そこで登場するのがnutti氏によるfake-bpy-moduleで、これらの問題を解決してくれます。インストールはpipで楽ちんです。

pip install fake-bpy-module

自動的に最新のAPIバージョンがインストールされますが、特に対応したいBlenderのバージョンがある場合はバージョンを指定できます。

pip install fake-bpy-module-4.0

GithubのREADMEにサポートされているバージョンの一覧があります。


オペレータークラスのプロパティの構文エラー

fake-bpy-moduleで唯一解決できないのが、Blenderのオペレータークラスのプロパティの構文エラーです。例えば、下記のようなコードにPylanceで「Call expression not allowed in type expression」という警告が出てしまいます。

Pylance: Call expression not allowed in type expression
Pylance: Call expression not allowed in type expression

厳密にはPythonの型アノテーション(型ヒント)でこういう書き方は禁止されているらしいので、警告は順当なのですが、Blenderスクリプトでは必須の書き方なので、警告だらけになって気持ち悪いです。

とりま、この警告を無視する設定にするしか解決策はなさそうだったので、下記のような設定をVScodeのワークスペース設定に追加することで対応します。

// Blenderスクリプトの FloatProperty などで Call expression not allowed in type expression の警告が出てしまうので無視する
"python.analysis.diagnosticSeverityOverrides": {
	"reportInvalidTypeForm": "none"
},

以上、お疲れ様でした。ここまでの作業でそれなりに快適なBlenderスクリプト/アドオン開発環境が整えられたハズです。


【おまけ情報】printデバッグ

Blenderスクリプトに書いたprint文は、下記の方法で見ることが出来ます。

Windows

Blenderのメインメニューの 〈Window〉〈Toggle System Console〉で表示されるDOSプロンプトウィンドウで確認できます。

macOS

Blenderをターミナルから起動すると、そのターミナルに表示されます。
ターミナルからBlenderを起動するには、下記。

/Applications/Blender.app/Contents/MacOS/Blender

Windowsと比べて再起動のひと手間があるのが不便だなぁといつも思います。なんとかなりませんかね……?


宣伝

というわけで、Blenderスクリプトの開発環境構築に関する情報でした。
こんな記事を書いたのは最近やたらBlenderのアドオン作りにハマっているせいで、こんなのを作っています。

このアドオンはメッシュ作成機能として下記のようなユニークなオブジェクトが簡単に作れちゃいます。

romly_blender_addonで作れるオブジェクトの一部
romly_blender_addonで作れるオブジェクトの一部

作成可能なオブジェクトの一部

他にも、一手間で作れるけど一発で出来たら便利なオブジェクトして、原点を頂点位置や面の中心に設定した直方体、中空構造の円柱、十字架を掃引した形状などが一発で作れます。

オブジェクト作成以外では、3Dプリント用にBlenderを使っている方にはSTLをダイアログ無しで右クリックメニューから簡単にエクスポートする機能がオススメ。また、軸に沿った辺を選択する機能はインポートしたSTLオブジェクトのメッシュを綺麗にするのに役立ちます。

Blenderアドオン開発には、いちいち環境設定ウィンドウを開かずともパネルから言語設定を切り替えられる機能と、スクリプトの再読み込み&実行をまとめて行える機能がとっても便利。ぜひ使ってみて下しあ。

この記事のタグ[This article is filed under]: Blender[Blender] | Python[Python] | Visual Studio Code[Visual Studio Code] | ハウツー[How to]


この記事はここで終わりです。
読んでいただきありがとうございました。
良かったらシェアしてね!

That's all for this article. Thank you for your reading.
Please share this if you like it!

Twitter | Reddit | Facebook | Pinterest | Pocket

前の記事[Prev Post]

前の記事のアイキャッチ画像

キースイッチマウスを組み立てたよ