🤙

TouchDesignerでCallbacksExt Extensionを使う

2025/03/08に公開

TouchDesignerのCallbacksExtを使用するとCOMPに独自のコールバックを定義することができます。

https://derivative.ca/UserGuide/CallbacksExt_Extension
https://qiita.com/arkwknsk/items/ac0460ddd0bac7b6b71d

CallbacksExtはExtensionという仕組みを利用しています。
https://zenn.dev/aadebdeb/articles/touchdesigner-extension

セットアップ

まず、コールバックを定義したいCOMP(Base COMPなど)を作成し、COMPの中にさらにSelect DATを作成します。作成したSelect DATの名前をCallbacksExtに変更し、DATパラメータに以下のExpressionを記述します。

op.TDModules.op('TDCallbacksExt')

COMPのパラメータダイアログのExteionsタブのObjectパラメータに以下を記述し、Promoteパラメータを有効にします。

op('./CallbacksExt').module.CallbacksExt(me)

COMPを右クリックし、「Customize Component...」からComponent Editorを開き、次の2つのパラメータを追加します。

  • Callback DAT(Callbackdat): DAT
  • Print Callbacks(Printcallbacks): Toggle

COMPと同じ階層にText DATを作成し、COMPに追加したCallback DATプロパティから参照されるようにします。このText DATにコールバック関数を記述します。Print Callbacksは有効にするとコールバックが実行されたときにTextportにデバッグ用の文字列が出力されます。

使い方

CallbackExt Extensionにより、COMPからDoCallbackメソッドを利用することができるようになります。DoCallbackメソッドの第一引数がコールバック名、第二引数がコールバック関数に引数として渡すディクショナリとなります。DoCallbackメソッドを実行すると、COMPに追加したCallback DATプロパティで指定したDATに定義されているコールバック名と同名の関数がDoCallbackの第二引数のディクショナリを引数にして実行されます。

例えば、COMP内から以下のスクリプトを実行すると、Callback DATで定義されているonCallback関数が呼び出されてTextportにHello, World!と出力されます。

info = { 'value': 'Hello, World!' }
parent().DoCallback('onCallback', info)
Callback DAT
def onCallback(info):
	print(info['value'])
	# Textportに「Hello, World!」と出力される

Discussion