blender 選択が変わった際のハンドラを試してみる 1


そうだ、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

以上今日のメモでした!



Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

One thought on “blender 選択が変わった際のハンドラを試してみる