MRが楽しい

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

BlenderのpythonスクリプトをGUIとCUI(バックグラウンド実行)で処理を分岐させる

本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトGUICUI(バックグラウンド実行)で処理を分岐させる方法を記事にします。
bluebirdofoz.hatenablog.com

Blenderのバックグラウンド実行

Blender はバックグラウンド実行を行うことで、コマンドライン上で python スクリプトを利用できます。
BlenderCUIで実行する方法は以下の記事を参照してください。
bluebirdofoz.hatenablog.com

バックグラウンド処理の判定

現在の処理がバックグラウンド実行のものかどうかは bpy.app.background で判定可能です。
バックグラウンド実行時は bpy.app.background が True を返します。

以下のような実行環境で出力文字が変化する python スクリプトを作成しました。
・check_background.py

# bpyインポート
import bpy

# バックグラウンド実行時とそれ以外で文字出力を切り替える
# 引数
# 戻り値
def check_background():
  # バックグラウンド実行時は bpy.app.background が True
  if bpy.app.background:
    # バックグラウンド実行時処理
    print('blender is CUI')
  else:
    # GUI実行時
    print('blender is GUI')
  return


# 関数の実行例
check_background()

GUIでの実行確認

Blender を通常起動し、python スクリプトを実行してみます。
メニューから ウィンドウ -> システムコンソール切替 でコンソールウィンドウを表示しておきます。
f:id:bluebirdofoz:20190615021312j:plain

先ほどの python スクリプトテキストエディタ―に開いて実行します。
f:id:bluebirdofoz:20190615021321j:plain
bpy.app.background が False で返るため、コンソールウィンドウに「blender is GUI」と表示されました。

CUIでの実行確認

次に Blender をバックグラウンド実行して、python スクリプトを実行してみます。
WindowsPowerShell で以下のコマンドを実行します。
・(blender.exeディレクトリ)\blender.exe --background --python (pythonスクリプトディレクトリ)\check_background.py
f:id:bluebirdofoz:20190615021329j:plain
bpy.app.background が True で返るため、WindowPowerShell に「blender is CUI」と表示されました。