夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

BlenderPythonでBlenderを終了した際に発火するイベントを実装する

本日はBlender枠です。

BlenderPythonでソフトを終了した際に発火するイベントを実装していき舞うs。

Blenderを含めたプログラマブル(プログラミング可能)なソフトウェアではユーザーが自在に機能を作ることができます。

しかしループ文や状態を保存する必要があるアプリケーションの場合、ソフトのクラッシュやユーザーによる終了時に変数やその状態の保存などを行いたいということが生じます。

筆者の場合While文でサーバーを立てていたため、Blenderを終了処理してもコンソールウィンドウを閉じないとサーバーが閉じないという問題がありました。

今回はBlenderを終了した際に発火するイベントを実装します。

Blenderが終了した際に発火するイベント

通常はatexitを使用することで任意の関数を実装できます。

import bpy

def my_exit_handler():
    # Blenderが終了する直前に実行したい処理をここに追加します
    print("Blenderが終了しました")

# atexitモジュールを使用して終了ハンドラを登録します
import atexit
atexit.register(my_exit_handler)

atexit.register(関数名)を使用することでBlenderが終了されるときに発火するイベントを登録することができます。

例えば以下のように記述することでBlenderが落とされた際にテキストファイルとしてログを出力できます。

import bpy
import atexit

def my_exit_handler():
    # Blenderが終了する直前に実行したい処理をここに追加します
    print("Blenderが終了しました")
    
    # ログファイルを生成するディレクトリを指定します
    log_directory = "C:/Users/(ユーザー名)/Desktop/"
    
    # ログファイルのパスを構築します
    log_file_path = log_directory + "blender_log.txt"
    
    # ログメッセージをファイルに書き込みます
    with open(log_file_path, "w") as log_file:
        log_file.write("Blenderが終了しました")

# atexitモジュールを使用して終了ハンドラを登録します
atexit.register(my_exit_handler)

このコードを実行してBlenderを終了したタイミングでデスクトップにblender_log.txtファイルが作成されます。

内部にはBlenderが終了しましたというメッセージが記録されています。

使用法としては終了時にログの出力などが考えられます。

本日は以上です。