MRが楽しい

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

Blenderのビルド手順 その4(ptyonのモジュールとしてBlenderをビルドする)

本日は Blender の技術調査です。
前回記事では 2.79b の Blender をビルドすることができました。
今回はビルド設定を変更し、Blender を ptyon のモジュールとしてビルドする手順を記事にします。
f:id:bluebirdofoz:20190708093728j:plain
前回記事の続きです。
bluebirdofoz.hatenablog.com

ビルド設定の変更

CMake にて[Configure]を実行するところまでの手順は同じです。前回記事を参照ください。
Blenderpython 用モジュールとしてビルドするには以下の設定を変更します。

WITH_PYTHON_INSTALL:OFF
WITH_PYTHON_MODULE:ON
WITH_PLAYER:OFF

この状態で[Generate]をクリックします。
f:id:bluebirdofoz:20190708094034j:plain

これでプロジェクトファイルの作成が完了しました。
f:id:bluebirdofoz:20190708094105j:plain

Blenderのビルド

指定したバイナリの保存ディレクトリを開くと、sln ファイルが生成されています。
f:id:bluebirdofoz:20190708094127j:plain

sln ファイルを開き、プロジェクトの読み込みが完了するまで待ちます。
読込が完了したらメニューから ビルド -> ソリューションのビルド を実行します。
f:id:bluebirdofoz:20190708094134j:plain

次に INSTALL をターゲットにビルドを実行します。
INSTALL は Blender.exe が利用する DLL などをコピーします。
SVN ライブラリを更新した際は必ずこの手順を行うようにします。
f:id:bluebirdofoz:20190708094143j:plain

bin ディレクトリに bpy.pyd が生成されていれば、ビルド成功です。
f:id:bluebirdofoz:20190708094152j:plain

利用可能なpythonバージョン

blender 2.79b の場合、動作可能な python のバージョンは python 3.5 になります。
以下の公式ページの過去ライブラリから ptyhon 3.5 を取得してインストールを行います。
www.python.org
f:id:bluebirdofoz:20190708094208j:plain

筆者環境では以下のバージョン 3.5.4 で動作確認を実施しています。
www.python.org
f:id:bluebirdofoz:20190708094236j:plain

pythonへの組み込み

以下の手順でビルドした Blender バイナリを python に組み込みます。

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

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

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

blender

f:id:bluebirdofoz:20190708094323j:plain

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

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

6.バージョン番号(2.79)のディレクトリを Python ディレクトリの直下にコピーする。
f:id:bluebirdofoz:20190708094349j: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:20190708094359j:plain

python スクリプトからの読み込みも試してみます。
以下のような初期画面のレンダリング画像を出力するスクリプトを作成します。
・rendertest.py

# bpy インポート
import bpy

# レンダリングの実行と画像ファイルの出力
bpy.ops.render.render()
bpy.data.images['Render Result'].save_render(filepath = 'C:\\WORK\\PythonWithBlender\\TestTmp\\image.png')

以下のコマンドでスクリプトを実行します。
・(Pythonディレクトリ)\python.exe .\rendertest.py
f:id:bluebirdofoz:20190708094408j:plain

以下の通り、レンダリング結果の画像が出力されれば成功です。
f:id:bluebirdofoz:20190708094417j:plain

次は組み込みの Blender でアドオンを利用する方法についてです。
bluebirdofoz.hatenablog.com