TouchDesignerでCallbacksExt Extensionを使う
TouchDesignerのCallbacksExtを使用するとCOMPに独自のコールバックを定義することができます。
CallbacksExtは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)
def onCallback(info):
print(info['value'])
# Textportに「Hello, World!」と出力される
Discussion