MRが楽しい

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

Blender2.8でpythonスクリプトをPowerShellで利用する

本日は Blender の技術調査枠です。
Blender2.8 の操作を PowerShell から python スクリプトを使って実行する手順を記事にします。
f:id:bluebirdofoz:20190903090022j:plain

CUI上でのpythonスクリプトの実行

前回、Blender2.8 の[Pythonコンソール]と[テキストエディタ―]で python スクリプトを実行する方法をまとめました。
bluebirdofoz.hatenablog.com

以下のマニュアルの通り、他に PowserShell やコマンドラインから python スクリプトを直接読み込んで実行する事も可能です。
docs.blender.org

blender --python /home/me/my_script.py

今回はこの CUI での実行を試してみます。

実行準備

外部から python スクリプトを読み込んで Blender で実行するには[Pythonスクリプトの自動実行]を有効にする必要があります。
Blender2.8 を起動し、メニューから 編集 -> プリファレンス を開きます。
f:id:bluebirdofoz:20190903090202j:plain

ダイアログが開いたら[セーブ&ロード]タブを開きます。
[Pythonスクリプトの自動実行]にチェックを入れます。
f:id:bluebirdofoz:20190903090213j:plain

これで[Pythonスクリプトの自動実行]が有効になりました。
[プリファレンスを保存]して Blender を一旦終了します。
f:id:bluebirdofoz:20190903090223j:plain

pythonスクリプトを実行する

以下の fbx 形式の3Dデータを読み込んで glb 形式で保存するスクリプトを作成しました。
・CommandLineTest.py

# bpyインポート
import bpy

# Cubeオブジェクトの削除
bpy.context.scene.collection.children['Collection'].objects.unlink(bpy.data.objects['Cube'])

# fbxデータの読み込み
fbx_path='D:\\Blender2.8\\PythonScriptTest\\20190902_PythonCommandLineTest\\SampleModel\\Wing000.fbx'
bpy.ops.import_scene.fbx(filepath=fbx_path)

# glbデータの出力
glb_path='D:\\Blender2.8\\PythonScriptTest\\20190902_PythonCommandLineTest\\SampleModel\\Wing000.glb'
bpy.ops.export_scene.gltf(filepath=glb_path)

ファイルエクスプローラー上で Shift+右クリック でメニューを開きます。
[PowerShell ウィンドウをここに開く]が表示されるので、これを選択して PowerShell を起動します。
f:id:bluebirdofoz:20190903090237j:plain

以下の通り、Blender2.8 の実行ファイルと python スクリプトを指定してコマンドを実行します。

(Blender2.8ディレクトリ)\blender.exe --python (pythonファイルディレクトリ)\CommandLineTest.py

f:id:bluebirdofoz:20190903090251j:plain

Blender が起動し、python スクリプトが実行されました。
ディレクトリを確認すると、glb 形式の3Dデータが出力されています。
f:id:bluebirdofoz:20190903090303j:plain

GUIを起動しない場合

BlenderGUI を起動させたくない場合は -b オプションまたは --background を追加する事で GUI を表示せず実行が可能です。

(Blender2.8ディレクトリ)\blender.exe -b --python (pythonファイルディレクトリ)\CommandLineTest.py

または

(Blender2.8ディレクトリ)\blender.exe --background --python (pythonファイルディレクトリ)\CommandLineTest.py

BlenderGUI を起動することなく、fbx ファイルを glb ファイルに変換できました。
f:id:bluebirdofoz:20190903090314j:plain