TouchDesignerでPythonを実行してみる
自分用のメモです。
TouchDesignerでPythonのコードを実行してみる
①オペレーターのパラメーターで実行
一番簡単な方法だと思います。 オペレーターのパラメータの+ボタンを押して、expressionに実行したい処理を直接入力します。
②DATで実行
DATオペレータでPythonのコードを実行することができます。
例) text DAT
- Expressionを書く
- オペレータが非アクティブ状態で
command + r
でExpressionを実行
他のDATのExpressionを実行
実行したいオペレーターを指定して、run()
を実行することで、他のオペレーターのExpressionを実行することができる。
③Textportで実行
あまり開発には適してない。 ターミナルのような感じ。下記で出てくるDATでExpressionを実行した際の、結果を確認するのに使える。
Textportを表示
alt(option) + T
Expressionを実行
オペレーターのパラメータを取得
オペレータのパラメータの値をExpressionで取得します。
op("オペレーター名").par.パラメーター名
circle TOPのradiusプロパティを取得する。
rx = op("circle1").par.radiusx ry = op("circle1").par.radiusy print(rx) print(ry)
結果
python >>> 0.4 0.4
◎参照できるパラメーター名は公式のwikiで確認できる。
例) circle TOP https://docs.derivative.ca/index.php?title=Circle_TOP
オペレーターのパラメータに値を代入
パラメータに値を入れることもできます。
op("オペレーター名").par.パラメーター名 = 値
op("circle1").par.radiusx = 0.1 op("circle1").par.radiusy = 0.1
特定のタイミングでExpressionを実行する
Execute DAT
フレーム毎や、ファイルを開いたタイミングなどで実行したい処理がある場合に利用します。
毎フレーム実行したい処理がある場合は、onFrameStartにExpressionを追加して、オペレーターのFrame StartをONにします。
def onFrameStart(frame): 毎フレーム実行したい処理を書く return
CHOP Execute
CHOPの値が変化したタイミングで実行されます。 実行されるタイミングは、
- onOffToOn ・・・ 値が0以下から0を超えた
- whileOn ・・・ 値が0を超えている
- onOnToOff ・・・ 0を超えた値から0以下になった
- whileOff ・・・ 値が0以下
- onValueChange ・・・値が変化したタイミング
Parameter Execute
オペレーターのパラメータが変化したタイミングで実行されます。
OPに対象のオペレータをセットします。 Parametersに変化を監視するプロパティを設定します。