のぐそんブログ

暗いおじさんがシコシコ書くブログです。

TouchDesignerでPythonを実行してみる

自分用のメモです。

TouchDesignerでPythonのコードを実行してみる

①オペレーターのパラメーターで実行

一番簡単な方法だと思います。 オペレーターのパラメータの+ボタンを押して、expressionに実行したい処理を直接入力します。

②DATで実行

DATオペレータでPythonのコードを実行することができます。

例) text DAT

  1. Expressionを書く
  2. オペレータが非アクティブ状態で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の値が変化したタイミングで実行されます。 実行されるタイミングは、

  1. onOffToOn ・・・ 値が0以下から0を超えた
  2. whileOn  ・・・ 値が0を超えている
  3. onOnToOff ・・・ 0を超えた値から0以下になった
  4. whileOff  ・・・ 値が0以下
  5. onValueChange ・・・値が変化したタイミング

Parameter Execute

オペレーターのパラメータが変化したタイミングで実行されます。

OPに対象のオペレータをセットします。 Parametersに変化を監視するプロパティを設定します。