本日は Blender の技術調査です。
前回記事では Python モジュール向けの Blender2.8 をビルドすることができました。
今回は Blender を Ptyon のモジュールに組み込む手順を記事にします。
前回記事の続きです。
bluebirdofoz.hatenablog.com
Pythonのインストール
blender 2.8 の場合、動作可能な Python のバージョンは Python 3.7 になります。
以下の公式ダウンロードページから 3.7.4 のバージョンを取得できます。
www.python.org
OS指定などを行う場合は以下の各 OS 向けのダウンロードページを開き、任意のインストーラを選択します。
今回は Windows x86-64 executable installer を指定してダウンロードしました。
www.python.org
ダウンロードした python-3.7.4-amd64.exe を実行してインストールを行います。
今回、Python のパスを通したくなかったので Customize installation を選択しました。
ランチャー等も利用しないため[py launcher][for all users]のチェックを外して[Next]をクリックします。
ショートカット、パスを利用しないので以下のチェックを外します。
・[Create shortcuts for installed applications]:OFF
・[Add Python to enviroment variables]:OFF
[Customize install location]に任意のディレクトリを指定して[Install]を実行します。
これでまずは Python のインストールが完了しました。
インストールディレクトリ上で PowerShell を起動し、[.\python.exe -V]を実行すると動作確認が行えます。
[Python 3.7.4]が表示されれば問題ありません。
BlenderのPythonへの組み込み
以下の手順でビルドした Blender バイナリ(bpyモジュール)を Python に組み込みます。
1.Python ディレクトリの Lib\site-packages 配下に blender ディレクトリを作成する。
2.Lib\site-packages 配下に blender ディレクトリへのパスを記述する blender.pth ファイルを作成する。
3.blender.pth ファイルに以下の通り、blender ディレクトリへのパスを記述する。
blender
4.blender ディレクトリに bpy.pyd ファイルをコピーする。
5.blender ディレクトリに pythonXX.dll 以外の *.dll ファイルをコピーする。
6.バージョン番号(2.8)のディレクトリを Python ディレクトリの直下にコピーする。
これで python への組み込みは完了です。
動作確認
Blender を組み込んだ Python ディレクトリの python.exe を起動し、以下のコマンドを実行してみます。
import bpy print(bpy)
bpy.pyd の参照パスが表示されれば bpy のインポートに成功しています。
module 'bpy' from '(参照パス)\lib\site-packages\blender\bpy.pyd'
エラー対処
筆者環境では幾つかのエラーが発生したのでそれぞれの対処方法を記録しておきます。
参照エラー
import bpy 実行時に以下のエラーが発生しました。
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\OZ\AppData\Roaming\Python\Python37\site-packages\bpy\__init__.py", line 3, in <module> from . import types File "C:\Users\OZ\AppData\Roaming\Python\Python37\site-packages\bpy\types.py", line 39149 def camera_model_matrix(self, ^ SyntaxError: non-default argument follows default argument
インストール済みの Python に優先的にパスが通っていることが原因です。
以下のコマンドを実行してデフォルトの sys.path を削除します。
import sys print(sys.path) sys.path.remove('デフォルトシステムパス')
numpyインポートエラー
import bpy 実行時に以下のエラーが発生しました。
ImportError: numpy.core.multiarray failed to import Unable to initialise audio ImportError: numpy.core.multiarray failed to import
import numpy を試してみると、numpy モジュールが見つからないことが原因と分かりました。
以下のコマンドを PowerShell 上で実行して Python に numpy をインストールします。
.\python.exe -m pip install -U numpy
これで正常に bpy をインポートできました。
次は組み込んだ Blender を試しに実行してみます。
bluebirdofoz.hatenablog.com