忘れちゃうDat 達[Touch Designer]
わすれるのでメモ
Common
今日通電存在する Common TAB
Content LnaguageでこのDATが何を表そうとしているFileなのかをしていできる。
Text DATの時とかは、何を記述したいファイル七日を指定できる。
Edit / View Extensionで Text DATのときとかは、Editで外部エディターを開いた時にデフォルトの.txtではなく.pyとかで開けるので、atomとかの補完とかやりやすい。



Text
file in DATとかで任意のふぃあるを読み込んでその中身をpythonに持っていきたい場合
op().textで得ることができる。

json = op('json_file_null').text
print(text)
Dat エクスプレッション
こんな感じで最初の行にindex nameが割り当てられているデータがあったとしたとき、
これらの値をchop や sopなどに持っていきたいとき

op('DATの指定')[行,'列の名前']
配列の中に'string'で書いてあげれば取り出せる
Primitive SOPのとき、
op('DATの指定')[me.inputPrim.index +1, '列の名前']
としてやればインプットのその項目のindex代わり当たってるものに順番に入っていく。
例えば、Primitive SOPのscaleのxの項目に上のようにうてば反応する
//Primitive Sop
$CEX, $CEY, $CEZ – The centroid of the primitive.
-> me.inputPrim.center[0]/me.inputPrim.center[1]/me.inputPrim.center[2]
$NX, $NY, $NZ – The normal of the primitive. Will be 0 for some primitives like sphere and tube (which don’t have normals).
-> me.inputPrim.normal[0] / me.inputPrim.normal[1] / me.inputPrim.normal[2]
$CR, $CG, $CB – Red, green and blue primitive color.
-> me.inputColor[0] / me.inputColor[1] / me.inputColor[2]
Index of primavitve me.inputPrim.index
[引用] http://www.indaehwang.com/category/touchdesigner/
Table DATへのPythonから入力
s
ある値をDATに入れたいとき、
op('targetDat')[row,column] = 21321
とかでScriptを実行すれば、Tableが更新される
(この際、tableにそのセルが無いときにはエラーがでちゃう)

これだとセルが無いときでも勝手に順番に入っていく
op('table').appendRow(入れたいもの)
op('table').appendRow([column0にいれたいもの, column1に入れたいもの])
0行目はスキップされるみたい

op('table').clear
でクリア
SOP TO DAT
sopが持つattributeがテーブルに出てくる
Extractでpointのattributeなのか、Vertex / Primitiveなど選べる
AttributesでAttributeを絞ることもできる。

P(0,1,2)はpointの座標
Nは法線ベクトル
v(0,1,2)はvelocity
Cd(0123)はRGBA
DAT TO SOP
SOP to DATの逆でDATのデータからSOPを作れる
CHOP to DAT
Include Namesをオンにすることでチャネル名を取得可能
Folder
Folderのパスを指定して、(.toeの相対パスでも大丈夫)
Columnsで指定した情報をtableで出してくれる。



TypeをFoldersにしてNameなどをしてすれば指定したパス以下のものを探してくれる
m * n行列 Table DATの生成
JSON と DAT
Execute
プログラムスタート時
Frame start / Frame End時、
Play state Change時(再生、ストップ)
Project Pre Save / Project Post Save
などちょっと特殊なタイミングで発火するプログラムを書ける。

Fileタブから
指定したファイルの

CHOP Execute
CHOPsにchopを指定すると、
Off to On / While On / On to Off / While Off Value Change
の時に反応するpythonを書くことができる。


DAT Execute
指定したDATに対してのスクリプト
Tableが変わったとき
Row / Column change
Cell Change / Size Changeなどなど

Executeの項目から、発火タイミングをFrame start 時かframe end時か

OP Execute
任意のOPに対して、
Pre Cook / Post Cook
Wire Change
Name Change / Path Change /
などなど変更時に発火するスクリプトを書ける。

Panel Execute
ようわからん

Parameter Execute
任意のOPの任意のparametersの
Value change
on Pulse
Expression Change
Mode Changeなどなど
に発火するスクリプトを書ける

parametersはこんな感じでおk

OP Find
様々な条件に引っかかったOPをテーブルに出力する
ColumnでName以外も
PathやWire Pathなどもテーブルに出せる




出力

Call back
Evaluate
input Data Datのテーブルのデータを
Expressions DATに書かれているExpressionで
評価した値をoutputすることができる。

inputで行うことともできる。
input0がTable
input1がExpressionとなる




Sbstitute
DATの中の特定の文字列を特定の文字列に変更することができる。
Before/Afterに入れるだけで基本的にはおk
ヨーロッパ周りの小数点に(,)を使うデータを(.)で表す表記に変更したい時とかに便利だった。

Exclude First Row/Colで最初の行列を除外できる。

Reference
(DE)SIGN » Feed
TouchDesigner | Primitive SOP でColorを付け加える - Qiita
TouchDesignerでPythonコードとDAT間で入出力する - Qiita
TouchDesigner Documentation - SOP to DAT
DAT to SOP | TouchDesigner 日本語ドキュメント
[TouchDesigner] DATコンポーネント機能一覧 - Qiita