Help us understand the problem. What is going on with this article?

[Blender] テキストエディタでBlenderのPython APIを補完する

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つの方式で提供しています。

  1. PyPIパッケージ
  2. GitHubで公開中のモジュール
  3. モジュールの自作

本記事ではそれぞれについて、具体的なコード補完の手順を説明します。

方法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

vscode_completion.png

PyCharm

pycharm_completion.png

方法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でコード補完するためには、次の手順に従います。

  1. Pythonの Visual Studio Code Extention をダウンロードします
  2. [File] > [Preferences] > [Settings] をクリックします
  3. settings.json が開いたら、python.autoComplete.extraPaths にモジュールのパスを設定します
{
    "python.autoComplete.extraPaths": [
        "<path-to-generated-modules>"
    ]
}

<path-to-generated-modules> には、モジュールの絶対パスを指定してください。

PyCharm

PyCharmでコード補完するためには、次の手順に従います。

  1. Windowsの場合は [File] > [Settings] をクリックして [Settings] ウィンドウを、macOSの場合は [Pycharm Menu] > [Preferences] をクリックして [Preferences] ウィンドウを開きます
  2. [Project:] > [Project Interpreter] を選択します
  3. [Project Interpreter:] の右隣にあるギアのアイコンをクリックします
  4. 表示されたポップアップメニューから [Show All...] をクリックします
  5. [Project Interpreters] ウィンドウにおいて、[Show paths for the selected Interpreter] のアイコンをクリックし、[Interpreter Paths] ウィンドウを表示します
  6. [+] アイコンをクリックすると、ファイルブラウザが立ちあがります
  7. モジュールが配置されたディレクトリを指定し、[OK] をクリックします
  8. 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のアドオン開発ライフを!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした