そうだ、blenderにもコールバック備わってるよね?
と、調べてみた所。
おお!ちゃんとあるね!便利便利!
と、触り始めてみると・・・
あれ?
scene_update_post使うとスタックするんだけど・・・
ん??なんで??
また誤字でもあるのかと、必死に調べた結果・・・
scene_update_postは既に廃止されたwww
おいーーー!!なんだよこの野郎!!
blenderの怖いのはバージョンによっていきなり廃止される機能がある事。
前のバージョンから触っている人は分かっても、途中バージョンから参加している人には、何が廃止されたのかが把握できないので、これが意外に大変なんだよね~~・・・。
で本題。
scene_update_post は使えないので、他のハンドラで代用。
やりたい事。
オブジェクトの選択が変った際に特定の関数を実行する。
要は選択の変更時のハンドラの使い方って感じ。
import bpy
from bpy.app.handlers import persistent
@persistent
def selection_changes(scene):
if len(bpy.context.selected_objects):
print("selected :", bpy.context.selected_objects[0])
bpy.app.handlers.depsgraph_update_post.append(selection_changes)
ほい!!
こんな感じ。
まぁ、基本中の基本だからねぇ。こんなもんですわ。
で、このハンドラは、オブジェクトの選択が変る度に呼び出されるので、
シーンやレンダー設定を切り替えても実行されるので注意。
なので現在選択しているオブジェクトリストを利用すれば
変な動作をすることも無さそう。
つか、要望的にはselection_change_postみたいなコールバックがほしい。
まぁ、やる事同じだから意味無いかw
以上今日のメモでした!
Pingback: アプリケーションデータ (bpy.app) [Blender] – Site-Builder.wiki