Blender Advent Calendar 2019 の23日目の記事です。
Blenderのスクリプトやアドオンを作るとき、テキストエディタを使ってソースコードを編集することが多いと思います。
テキストエディタを利用するメリットの1つとして、コード補完機能による開発の効率化がありますが、Blenderが提供するPython APIの一部はPythonのソースコードではなく、バイナリデータとして提供されるため、そのままではコードを補完できません。
このような問題を解決するため、Blenderが提供するPython APIのインタフェース部分のみを記述した疑似モジュール「fake-bpy-module」を開発しました。
「fake-bpy-module」を利用することで、基本的にコード補完機能を持つすべてのエディタで、BlenderのPython APIに関してコード補完できます。
本記事では、「fake-bpy-module」を使って、Visual Studio CodeとPyCharm上でコード補完する方法を紹介します。
前提条件
本記事で対象とするBlenderのバージョンは 2.80 とします。
「fake-bpy-module」がサポートするバージョンは、GitHubの README を参考にしてください。
「fake-bpy-module」は、Windows/Mac/Linuxのいずれの環境でも動作しますが、Type Hint機能が導入された Python 3.6 以上のPythonでなければ、補完機能が利用できないことに注意してください。
将来的には、Blender 2.81以降のバージョンに対応したモジュールを提供予定です。
「fake-bpy-module」の提供形態
「fake-bpy-module」は、以下の3つの方式で提供しています。
- PyPIパッケージ
- GitHubで公開中のモジュール
- モジュールの自作
本記事ではそれぞれについて、具体的なコード補完の手順を説明します。
方法1:PyPIパッケージ
1. pipコマンドを用いてパッケージをインストール
pipコマンドを利用することで、PyPIに登録されている「fake-bpy-module」をインストールできます。
次に示すコマンドを実行して、「fake-bpy-module」をインストールしてください。
$ pip install fake-bpy-module-<version>
ここで <version>
には、Blenderのバージョンを指定します。
Blender 2.8に対応する「fake-bpy-module」をインストール場合は、次のコマンドを実行します。
$ pip install fake-bpy-module-2.80
pipを利用できる環境であれば、pipを利用して「fake-bpy-module」をインストールするのが簡単で確実ですが、pipを利用できない環境の場合は、別の方法を試みてください。
2. エディタでコード補完を確認する
pipコマンドを用いてパッケージをインストールした場合、コード補完するための各エディタの設定は不要です。
Visual Studio CodeとPyCharmそれぞれについて、コード補完の例を示します。
Visual Studio Code
PyCharm
方法2:GitHubで公開中のモジュール
1. GitHubからモジュールをダウンロードする
「fake-bpy-module」は、GitHubでも公開 しています。
モジュール一式をまとめたファイルは、fake_bpy_modules_<Blenderのバージョン>-<モジュールを作成した年月日>.zip
として公開しているため、環境にあわせて必要なモジュールをダウンロードします。
ここでは、2019/10/8に作成したBlender 2.80向けのモジュール である fake_bpy_modules_2.80-20191008.zip
をダウンロードします。
ダウンロードが完了したら、ファイルを解凍します。
2. エディタにモジュールのパスを伝える
エディタにモジュールのパスを伝え、コード補完できるようにします。
モジュールのパスを伝える方法は、エディタによって異なります。
Visual Studio Code
Visual Studio Codeでコード補完するためには、次の手順に従います。
- Pythonの Visual Studio Code Extention をダウンロードします
- [File] > [Preferences] > [Settings] をクリックします
-
settings.json
が開いたら、python.autoComplete.extraPaths
にモジュールのパスを設定します
{
"python.autoComplete.extraPaths": [
"<path-to-generated-modules>"
]
}
<path-to-generated-modules>
には、モジュールの絶対パスを指定してください。
PyCharm
PyCharmでコード補完するためには、次の手順に従います。
- Windowsの場合は [File] > [Settings] をクリックして [Settings] ウィンドウを、macOSの場合は [Pycharm Menu] > [Preferences] をクリックして [Preferences] ウィンドウを開きます
- [Project:] > [Project Interpreter] を選択します
- [Project Interpreter:] の右隣にあるギアのアイコンをクリックします
- 表示されたポップアップメニューから [Show All...] をクリックします
- [Project Interpreters] ウィンドウにおいて、[Show paths for the selected Interpreter] のアイコンをクリックし、[Interpreter Paths] ウィンドウを表示します
- [+] アイコンをクリックすると、ファイルブラウザが立ちあがります
- モジュールが配置されたディレクトリを指定し、[OK] をクリックします
- Windowsの場合は [Settings] ウィンドウ、macOSの場合は [Preferences] ウィンドウが閉じるまで、[OK] を複数回クリックします
3. エディタでコード補完を確認する
方法1の方式でモジュールをインストールした場合と同様、それぞれのエディタでコード補完できるようになります。
方法3:モジュールの自作
1. Blenderのバイナリをダウンロードする
公式のBlenderのダウンロードサイト から、対象となるBlenderのバイナリをダウンロードします。
Blender 2.80のバイナリは、https://download.blender.org/release/Blender2.80/ で公開されています。
2. Blenderのソースコードをcloneする
次に示すコマンドを実行し、Blenderのソースコードをダウンロードします。
$ git clone git://git.blender.org/blender.git
3. GitHubのfake-bpy-moduleプロジェクトをcloneする
次に示すコマンドを実行し、GitHubに公開されているfake-bpy-moduleプロジェクトをcloneします。
$ git clone https://github.com/nutti/fake-bpy-module.git
4. 「fake-bpy-module」を生成する
次に示すコマンドを実行し、「fake-bpy-module」を生成します。
$ cd fake-bpy-module/src
$ sh gen_module.sh <source-dir> <blender-dir> <branch/tag/commit> <output-dir> <mod-version>
-
<source-dir>
:Blenderのソースコードのルートディレクトリ -
<blender-dir>
:Blenderのバイナリが配置されたディレクトリ -
<branch/tag/commit>
:生成するモジュールに対応する、Blenderのソースコードのブランチ -
<output-dir>
:モジュールの生成先ディレクトリ -
<mod_version>
:指定したバージョンについて、mods
ディレクトリに配置したパッチを使ってAPIを修正する
仮に2から連続してコマンドを実行してきた場合は、次のようにコマンドを実行します。
$ cd fake-bpy-module/src
$ sh gen_module.sh ../../blender <1でダウンロードしたBlenderのバイナリが配置されたディレクトリ> v2.80 out 2.80
5. エディタにモジュールのパスを伝える
方法2の方式に従い、モジュールのパスをエディタに伝えます。
6. エディタでコード補完を確認する
方法1や方法2の方式と同様、それぞれのエディタでコード補完できるようになります。
まとめ
「fake-bpy-module」を使って、BlenderのPython APIを、Visual Studio CodeとPyCharm上でコード補完する方法を紹介しました。
コード補完を利用することで、Blenderのスクリプトやアドオン開発の効率がよくなるため、ぜひ活用してみてください。
本記事では紹介していませんが、PyPIパッケージを利用しない場合でも、Visual Studio CodeやPyCharmに限らず、すべてのエディタでコード補完するための方法を、GitHubのプロジェクトページにて ドキュメント を公開しています。
こちらもぜひ参考にしてみてください。
なお、「fake-bpy-module」はOSSとして公開していますので、バグ報告 や プルリク などのContributionは大歓迎です!
それでは、ぜひ楽しいBlenderのアドオン開発ライフを!