LoginSignup
11
11

More than 1 year has passed since last update.

Jupyter NotebookからPythonのAPIでBlenderを操作する

Last updated at Posted at 2022-05-27

はじめに

オープンソースの3DCGソフトBlenderにはPythonのAPIが用意されていて、オブジェクトを作成したりアニメーションのキーフレームを打ったりすることができます。

ガッツリ開発する場合、VSCodeで編集するのが主流のようですが、はじめましてのAPIとはJupyter Notebookがないと仲良くなれない体になってしまったので、どうにかJupyter NotebookからBlenderのAPIを触れないものかと調べてみることにしました。

2022-05-28-11-25-04_6.gif

結果、Jupyter Notebook上でBlenderのAPIをいじくることができる、blender_notebookなるものを見つけたので実装までの流れを紹介します。
操作によって動作がもっさりすることがありますが、開発前や練習時など、ちょっと試してみる場合には便利です。

何度かAvastがざわざわしましたが無視しました。

1. BlenderのPythonバージョンの確認

今回一番重要な点は、Jupyter Notebookを実行する環境のPythonバージョンとインストールされているBlenderのPythonバージョンが一致している必要があることです。

インストールされているBlenderのPythonバージョンの確認

Blenderをインストールしていない場合はインストールしてください。

  1. Blenderを起動します。
  2. Scriptingタブをクリックします。
    blenote01.jpg
  3. 右下に表示されるこの部分を確認します。
    blenote02.jpg

Blender3.1.2のpythonバージョンは3.10.2でした。
※Blender2.82のpythonバージョンは3.7.4でした。

2. Anacondaで仮想環境を作成

Anacondaで仮想環境を作成しました。

Anacondaをインストールしていない場合はAnacondaをインストールしてください。
https://www.anaconda.com/products/distribution

Anacondaをインストール済みでも、古いバージョンの場合、新しいPythonに対応していない場合があるのでアップデートしてください。エラーが出てからでも大丈夫だと思います。

早速仮想環境を作成します。

conda create -n 好きな名前 python=上記で確認したBlenderのPythonバージョン

自分の環境の場合、BlenderのPythonバージョンは3.10.2だったので、Pythonバージョン3.10のblenderという名前の仮想環境を作成します。

コマンドプロンプト
conda create -n blender python=3.10

※BlenderのPythonバージョンが3.7.4だった場合、こうなります。

例)BlenderのPythonバージョンが3.7.4だった場合
conda create -n blender python=3.7

途中で下記のような表示が出たらyを入力してエンターを押してください。

Proceed ([y]/n)?

3. blender_notebookをインストール

作成した仮想環境をアクティベート

まず、作成した仮想環境をアクティベートします。

activate 仮想環境の名前

今回は、blenderという名前の仮想環境を作成したので、

コマンドプロンプト
activate blender

と入力します。
下記のように文頭に作成した仮想環境の名前(今回の場合blender)が表示されれば成功です。

例)自分の環境の場合
(blender) C:\Users\Owner>

blender_notebookを仮想環境にインストール

コマンドプロンプト
pip install blender_notebook
例)自分の環境の場合
(blender) C:\Users\Owner>pip install blender_notebook

Successfully installed なんちゃらとお馴染みの表示が出たらインストール完了です。

BlenderのKernelを作成

Jupyter Notebook用のカーネルを作成します。

blender_notebook install --blender-exec="Blenderインストール先の起動ファイルのパス"

自分の環境の場合、WindowsでBlenderのバージョンが3.1(※BlenderのPythonのバージョンではなくBlenderのバージョン)なので、

コマンドプロンプト
blender_notebook install --blender-exec="C:\Program Files\Blender Foundation\Blender 3.1\blender.exe"
例)自分の環境の場合
(blender) C:\Users\Owner>blender_notebook install --blender-exec="C:\Program Files\Blender Foundation\Blender 3.1\blender.exe"

となります。

Blenderのバージョンが異なる場合や、インストール先を変更している場合は変更が必要です。
※Blenderのバージョンが2.82だった場合、こうなります。

例)Blenderのバージョンが2.82の場合
blender_notebook install --blender-exec="C:\Program Files\Blender Foundation\Blender 2.82\blender.exe"
Current python interpreter version is not 3.7!
blender_notebook will link pip packages installed in this interpreter to the
blender embedded python interpreter. Mismatch in python version might cause
problem launching the jupyter kernel. Are you sure to continue?
 [y/N]:

何か聞かれますがPythonのバージョンは確認済みなので、yを入力してエンターで大丈夫です。
下記のような表示が出たら成功です。

done
♯
♯ To activate this environment, use
♯
♯     $ conda activate blender
♯
♯ To deactivate an active environment, use
♯
♯     $ conda deactivate

Macでは試していませんが、

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

らしいので、

未確認のため参考までに
blender_notebook install --blender-exec="/Applications/Blender.app/Contents/MacOS/Blender"

だと思います。
間違っていたらごめんなさい。

Kernelが作成されたか確認

念のためKernelが追加されているか確認します。

コマンドプロンプト
jupyter kernelspec list
例)自分の環境の場合
(blender) C:\Users\Owner>jupyter kernelspec list

と入力すると、blenderが追加されているのがわかります。

Available kernels:
  blender    C:\Users\Owner\AppData\Roaming\jupyter\kernels\blender
  python3    C:\Users\Owner\anaconda3\envs\blender\share\jupyter\kernels\python3

4. 起動!!

jupyter notebookと入力してJupyter Notebookを起動します。

コマンドプロンプト
jupyter notebook
例)自分の環境の場合
(blender) C:\Users\Owner>jupyter notebook

右上のNEWからblenderを選択すると新規ノートブックが作成されてBlenderが起動します。
blenote03.jpg

折角なので何か実行してみます。
Suzanneはあまり好きではないので、 試しに球体を生成してみます。

Jupyter Notebookのセルに

球体の生成
import bpy
bpy.ops.mesh.primitive_ico_sphere_add(location=(0, 0, 0), radius=5, subdivisions=10)

と入力してJupyter Notebookの▶Runをクリックします。

追記: 球体の生成は若干時間がかかるので、立方体を生成したほうが感動出来るかもしれません。

立方体の生成
import bpy
bpy.ops.mesh.primitive_cube_add(size=10, location=(0, 0, 0))

blenote04.jpg

でけた!!

余談

BlenderのUndo(元に戻す)とRedo(やり直す)を実行するコードを、ノートブックのセルに置いておくと存分に遊べます。
追記: このコードで元に戻すとJupyter Notebookで操作し始めたところまで戻ってしまうので、別の方法を探す必要がありそうです。

Undo(元に戻す)
bpy.ops.ed.undo()
Redo(やり直す)
bpy.ops.ed.redo()

これでBlenderのAPIと仲良くなれそうですね。
ただ、冒頭での述べましたが操作により動作がもっさりすることがあるので、やはりVSCodeを使用したほうがいいのかもしれません。

おしまい。

うまくいかない場合

Jupyter Notebookの右上にkernel errorと表示されたり、Blenderが起動してもJupyter Notebookのロードが永遠に続いて、コマンドプロンプトに

ImportError: cannot import name '_device' from 'zmq.backend.cython'

のような表示が出た場合は失敗です。
仮想環境のPythonバージョンとBlenderのPythonバージョンが一致していない可能性が高いです。

失敗してうまくいかなかった場合は

コマンドプロンプト
blender_notebook remove

と入力して

Are you sure to delete C:\Users\Owner\AppData\Roaming\jupyter\kernels\blender ? [y/N]:

yを入力してからエンターでカーネルを削除してやり直しましょう。

それでもダメな場合は仮想環境も削除して最初からやり直してみましょう。
仮想環境を削除するには、

コマンドプロンプト
conda deactivate

と入力して文頭のblenderの表示が消えたことを確認。

コマンドプロンプト
conda remove -n blender --all

と入力して削除します。

参考

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11