
概要 📖 – 対象オペレータのメタ情報をテーブル形式で取り出すデバッグDAT
Info DATは、指定したオペレータの内部情報(クック時間・解像度・サンプル数など)をテーブル形式で取り出す DATです。Info CHOP がチャンネルとして数値情報を取り出すのに対し、Info DAT は name / value 2 列のテーブルとして同種の情報を取り出します。文字列での絞り込みや Select DAT との組み合わせがしやすく、メタ情報を Python から行名で参照したい用途に向いています。
主な用途 🎯
- 任意の OP のメタ情報 (クック時間 / クック回数 / メモリ使用量等) をテーブル形式で取得
- family ごとの固有情報 (CHOP の sample_rate / TOP の resx・resy / DAT の num_rows・num_cols 等) を 1 ファイル参照で抽出
- パフォーマンス監視 (
cook_time/total_cooks等を Text TOP に流して常時表示) - Passive モードで受動的取得モードに切替え、不要なクックを抑制してパフォーマンス影響を最小化
- Info CHOP の DAT 版として、文字列キー / 値ペアでメタ情報を扱いたいワークフローに利用
データフロー 🔄
対象 OP のパスをOperatorで指定
↓
Passive 有無を選択 (受動更新 / 自動更新)
↓
出力 DAT:name列 +value列のテーブル形式でメタ情報を取得
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Info Page 📋
対象オペレータ 🎯
Operator .op 🧭
– 情報を取り出したい対象 OP のパス文字列
– ノードを直接ドラッグ&ドロップしてパスを埋めることも、文字列で直接入力することも可能
更新挙動 ♻️
Passive .passive 💤
– Off (デフォルト) のとき、対象 OP の情報変化に追従して Info DAT が自動更新される
– On のとき、対象 OP の情報変化を自動追従せず、必要なときだけ強制クックで更新される受動モードになる
– 不要なクックを抑制したいパフォーマンス重視のシーンで有効化
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: TOP のクック時間と解像度をテーブルで監視 📊
Render TOP → Info DAT (Operator=指定 Render TOP) → Text TOP に流してオンスクリーン表示
重い Render TOP の cook_time / total_cooks / resx / resy 等を Info DAT で取り出し、Text TOP に流して画面上で常時確認するパフォーマンス計測フロー。
- Info DAT を配置し、
Operatorパラメータに対象 Render TOP のパスを記入 - Info DAT の出力には
name列 /value列のテーブルでメタ情報が並ぶ - Text TOP の入力に Info DAT を接続して画面オーバーレイ表示
- 重い処理を回しながら
cook_timeの数値変動を視認してボトルネックを切り分け
Example 2: DAT の行数・列数を別 DAT から行名参照で抽出 🔢
Table DAT → Info DAT (Operator=Table DAT) → Select DAT (rownames=num_rows) → 数値だけ取り出す
Info DAT 自身がテーブル出力なので、後段の Select DAT で num_rows や num_cols といった行名を直接指定して値だけ抜き出すと、Python に頼らず純粋にノード合成で行数監視ロジックが組める。
- 対象 Table DAT を用意し、Info DAT の
Operatorに対象 DAT のパスを記入 - Info DAT 出力から Select DAT を接続し、
Rowsパラメータにnum_rowsを指定 - Select DAT の出力が常に対象 Table DAT の現在行数を 1 セルで返すようになる
- 値を CHOP 化したい場合は後段に DAT to CHOP を接続
Example 3: Passive モードで重い OP のクック影響を最小化 💤
重い OP → Info DAT (Passive=On) → Trigger 時のみ Force Cook で更新
監視対象 OP が高頻度でクックする場合、Info DAT を Passive モードにしておくと自動追従しなくなり、必要なタイミングだけ強制クックで情報を取りに行く運用が可能。
- Info DAT の
Passiveパラメータを On に設定 - 通常時は Info DAT は更新されないため対象 OP のクック負荷を増やさない
- ボタン UI や Python から Info DAT に対して強制クック (Force Cook) を発行して値を取り直す
- 結果を Table DAT などに保存して履歴として残せる
関連オペレータ 🔗
類似機能OP 🔍
- Info CHOP — 同じ OP メタ情報を CHOP チャンネルとして取り出す対の OP
組み合わせ推奨OP 🔄
- Select DAT — Info DAT の出力から特定の行名 (
cook_time等) だけ抽出 - Table DAT — Info DAT の出力スナップショットを集約・履歴保持する後段コンテナ
- DAT Execute DAT — Info DAT の値変化をトリガーに Python コールバックを発火
- Text TOP — Info DAT 出力をそのまま画面オーバーレイで表示
- DAT to CHOP — Info DAT の数値メタ情報を CHOP チャンネルに変換して後段で演算
前処理・後処理DAT 🎯
Info DAT 出力チャンネル例 📊
Info DAT 自身の出力テーブル例 (対象 OP の family により行が変化)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
全 family 共通の行 🌐
total_cooks: 対象 OP の累積クック回数cook_time: 直近のクックにかかった時間 (ミリ秒)cpu_memory: 対象 OP が占有する CPU メモリ使用量gpu_memory: 対象 OP が占有する GPU メモリ使用量 (該当時)
DAT を対象にしたとき 📋
num_rows: 対象 DAT の行数num_cols: 対象 DAT の列数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Info DAT の出力が空、または期待した行が出てこない
✅ Solution:
Operatorパラメータのパスが対象 OP と一致しているか確認 (タイプミス / 相対パスのずれ)- 対象 OP が実際にクックされているか確認 (一度も cook されていない OP は info 行が埋まらないことがある)
Passiveが On のままになっていないか確認し、自動更新したい場合は Off に戻す- 後段に Select DAT を入れて行抽出している場合は、抽出条件がマッチしているか確認
❌ Problem: 値が更新されない / 古い値のまま
✅ Solution:
Passiveを Off に戻して自動追従モードに切替- Passive を維持したい場合は、ボタンや Python から Info DAT に対して Force Cook を発行
- 対象 OP 自体がクックされなくなっていないか確認 (Viewer Off + 出力未参照だとクックされない)
❌ Problem: Info CHOP を使うべきか Info DAT を使うべきか迷う
✅ Solution:
- 数値を CHOP として後段の Math CHOP / Logic CHOP で演算したいなら Info CHOP を選ぶ
- 文字列キーを Python から行名参照したい / テーブル表示で人間が読みたいなら Info DAT を選ぶ
- 両方併用しても問題ない (同じ情報を 2 形式で取れる)
❌ Problem: 監視対象が多くてプロジェクトが重くなる
✅ Solution:
- 高頻度監視が不要なら
PassiveOn にして自動クックを抑制 - Select DAT で必要な行だけ後段に渡して描画コストを下げる
- 監視ロジックを 1 つの Component にまとめ、Viewer を必要なときだけ Open する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

