MRが楽しい

MRやVRについて学習したことを書き残す

Blenderのビルド手順 その9(PythonモジュールへのBlender2.8の組み込み)

本日は Blender の技術調査です。
前回記事では Python モジュール向けの Blender2.8 をビルドすることができました。
今回は Blender を Ptyon のモジュールに組み込む手順を記事にします。
f:id:bluebirdofoz:20191002094004j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

Pythonのインストール

blender 2.8 の場合、動作可能な Python のバージョンは Python 3.7 になります。
以下の公式ダウンロードページから 3.7.4 のバージョンを取得できます。
www.python.org
f:id:bluebirdofoz:20191002094032j:plain

OS指定などを行う場合は以下の各 OS 向けのダウンロードページを開き、任意のインストーラを選択します。
今回は Windows x86-64 executable installer を指定してダウンロードしました。
www.python.org
f:id:bluebirdofoz:20191002094052j:plain

ダウンロードした python-3.7.4-amd64.exe を実行してインストールを行います。
今回、Python のパスを通したくなかったので Customize installation を選択しました。
f:id:bluebirdofoz:20191002094101j:plain

ランチャー等も利用しないため[py launcher][for all users]のチェックを外して[Next]をクリックします。
f:id:bluebirdofoz:20191002094110j:plain

ショートカット、パスを利用しないので以下のチェックを外します。
・[Create shortcuts for installed applications]:OFF
・[Add Python to enviroment variables]:OFF
[Customize install location]に任意のディレクトリを指定して[Install]を実行します。
f:id:bluebirdofoz:20191002094121j:plain

これでまずは Python のインストールが完了しました。
f:id:bluebirdofoz:20191002094131j:plain

インストールディレクトリ上で PowerShell を起動し、[.\python.exe -V]を実行すると動作確認が行えます。
[Python 3.7.4]が表示されれば問題ありません。
f:id:bluebirdofoz:20191002094145j:plain

BlenderPythonへの組み込み

以下の手順でビルドした Blender バイナリ(bpyモジュール)を Python に組み込みます。

1.Python ディレクトリの Lib\site-packages 配下に blender ディレクトリを作成する。
f:id:bluebirdofoz:20191002094159j:plain

2.Lib\site-packages 配下に blender ディレクトリへのパスを記述する blender.pth ファイルを作成する。
f:id:bluebirdofoz:20191002094208j:plain

3.blender.pth ファイルに以下の通り、blender ディレクトリへのパスを記述する。

blender

f:id:bluebirdofoz:20191002094216j:plain

4.blender ディレクトリに bpy.pyd ファイルをコピーする。
f:id:bluebirdofoz:20191002094226j:plain

5.blender ディレクトリに pythonXX.dll 以外の *.dll ファイルをコピーする。
f:id:bluebirdofoz:20191002094236j:plain

6.バージョン番号(2.8)のディレクトリを Python ディレクトリの直下にコピーする。
f:id:bluebirdofoz:20191002094247j:plain

これで python への組み込みは完了です。

動作確認

Blender を組み込んだ Python ディレクトリの python.exe を起動し、以下のコマンドを実行してみます。

import bpy
print(bpy)

bpy.pyd の参照パスが表示されれば bpy のインポートに成功しています。

module 'bpy' from '(参照パス)\lib\site-packages\blender\bpy.pyd'

f:id:bluebirdofoz:20191002094301j:plain

エラー対処

筆者環境では幾つかのエラーが発生したのでそれぞれの対処方法を記録しておきます。

参照エラー

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

f:id:bluebirdofoz:20191002094313j:plain

インストール済みの Python に優先的にパスが通っていることが原因です。
以下のコマンドを実行してデフォルトの sys.path を削除します。

import sys
print(sys.path)
sys.path.remove('デフォルトシステムパス')

f:id:bluebirdofoz:20191002094324j:plain

numpyインポートエラー

import bpy 実行時に以下のエラーが発生しました。

ImportError: numpy.core.multiarray failed to import
Unable to initialise audio
ImportError: numpy.core.multiarray failed to import

f:id:bluebirdofoz:20191002094333j:plain

import numpy を試してみると、numpy モジュールが見つからないことが原因と分かりました。
以下のコマンドを PowerShell 上で実行して Python に numpy をインストールします。

.\python.exe -m pip install -U numpy

f:id:bluebirdofoz:20191002094355j:plain

これで正常に bpy をインポートできました。
f:id:bluebirdofoz:20191002094410j:plain

次は組み込んだ Blender を試しに実行してみます。
bluebirdofoz.hatenablog.com