VScodeでのBlenderスクリプト開発環境のセットアップ
- Pythonインタープリターの選択
- BlenderのPythonバージョンの確認
- pyenvで指定のバージョンをインストール、選択
- pyenvのインストール
- pyenvでインストール可能なPythonバージョン一覧を取得
- インストール済みのPythonバージョン一覧を表示
- 特定のバージョンのPythonをインストール
- Pythonのバージョンを選択
- VScodeでPythonインタープリターを選択
- fake-bpy-module
- オペレータークラスのプロパティの構文エラー
- 【おまけ情報】printデバッグ
- 宣伝
最近は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
この時、pyenvでPythonバージョンを切り替えた直後だとrecommendedになっているインタープリターが反映されてなかったりするのですが、しばらく待ったりVScodeを再起動したりすると切り替わります。
fake-bpy-module
Blenderのスクリプトではbpy
とかbmesh
で始まる専用のモジュールが使えるのですが、VScode上ではモジュールが見つからない旨の警告が出てしまいます。当然コード補完も働きません。
そこで登場するのがnutti氏によるfake-bpy-moduleで、これらの問題を解決してくれます。インストールはpipで楽ちんです。
nutti/fake-bpy-module: Fake Blender Python API module collection for the code completion.
https://github.com/nutti/fake-bpy-module
[Blender] テキストエディタでBlenderのPython APIを補完する #Python - Qiita
https://qiita.com/nutti/items/5ef0d80f4809ded61ea4
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」という警告が出てしまいます。
厳密にはPythonの型アノテーション(型ヒント)でこういう書き方は禁止されているらしいので、警告は順当なのですが、Blenderスクリプトでは必須の書き方なので、警告だらけになって気持ち悪いです。
Call expression not allowed in type expression' error with simple Pydantic models · Issue #5457 · microsoft/pylance-release
https://github.com/microsoft/pylance-release/issues/5457
とりま、この警告を無視する設定にするしか解決策はなさそうだったので、下記のような設定を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
macOS - Blender 4.1 Manual
https://docs.blender.org/manual/en/latest/advanced/command_line/launch/macos.html
Windowsと比べて再起動のひと手間があるのが不便だなぁといつも思います。なんとかなりませんかね……?
宣伝
というわけで、Blenderスクリプトの開発環境構築に関する情報でした。
こんな記事を書いたのは最近やたらBlenderのアドオン作りにハマっているせいで、こんなのを作っています。
Romly-Romly/romly_blender_addon: 個人的に作成、使用しているBlender用のスクリプトいろいろをアドオンにまとめたもの。
https://github.com/Romly-Romly/romly_blender_addon
このアドオンはメッシュ作成機能として下記のようなユニークなオブジェクトが簡単に作れちゃいます。
- ルーローの多角形、四面体
- スフェリコン
- オロイド/アンチオロイド
- クロソイド曲線、クロソイド曲線を使った角丸
- JISねじ、ナット
- みんな大好きアルミフレーム
- ピンヘッダー
他にも、一手間で作れるけど一発で出来たら便利なオブジェクトして、原点を頂点位置や面の中心に設定した直方体、中空構造の円柱、十字架を掃引した形状などが一発で作れます。
オブジェクト作成以外では、3Dプリント用にBlenderを使っている方にはSTLをダイアログ無しで右クリックメニューから簡単にエクスポートする機能がオススメ。また、軸に沿った辺を選択する機能はインポートしたSTLオブジェクトのメッシュを綺麗にするのに役立ちます。
Blenderアドオン開発には、いちいち環境設定ウィンドウを開かずともパネルから言語設定を切り替えられる機能と、スクリプトの再読み込み&実行をまとめて行える機能がとっても便利。ぜひ使ってみて下しあ。
この記事はここで終わりです。
読んでいただきありがとうございました。
良かったらシェアしてね!
That's all for this article. Thank you for your reading.
Please share this if you like it!