Info DAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Info DAT の OP メタ情報テーブル化機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 対象オペレータのメタ情報をテーブル形式で取り出すデバッグ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 列のテーブル形式でメタ情報を取得

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 ExtensionCustom Extension のときに適用される拡張子:

  • Custom Extension 文字列: Edit/View Extensioncustom のときに使用される任意のファイル拡張子

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 に流して画面上で常時確認するパフォーマンス計測フロー。

  1. Info DAT を配置し、Operator パラメータに対象 Render TOP のパスを記入
  2. Info DAT の出力には name 列 / value 列のテーブルでメタ情報が並ぶ
  3. Text TOP の入力に Info DAT を接続して画面オーバーレイ表示
  4. 重い処理を回しながら cook_time の数値変動を視認してボトルネックを切り分け

Example 2: DAT の行数・列数を別 DAT から行名参照で抽出 🔢

Table DAT → Info DAT (Operator=Table DAT) → Select DAT (rownames=num_rows) → 数値だけ取り出す

Info DAT 自身がテーブル出力なので、後段の Select DAT で num_rowsnum_cols といった行名を直接指定して値だけ抜き出すと、Python に頼らず純粋にノード合成で行数監視ロジックが組める。

  1. 対象 Table DAT を用意し、Info DAT の Operator に対象 DAT のパスを記入
  2. Info DAT 出力から Select DAT を接続し、Rows パラメータに num_rows を指定
  3. Select DAT の出力が常に対象 Table DAT の現在行数を 1 セルで返すようになる
  4. 値を CHOP 化したい場合は後段に DAT to CHOP を接続

Example 3: Passive モードで重い OP のクック影響を最小化 💤

重い OP → Info DAT (Passive=On) → Trigger 時のみ Force Cook で更新

監視対象 OP が高頻度でクックする場合、Info DAT を Passive モードにしておくと自動追従しなくなり、必要なタイミングだけ強制クックで情報を取りに行く運用が可能。

  1. Info DAT の Passive パラメータを On に設定
  2. 通常時は Info DAT は更新されないため対象 OP のクック負荷を増やさない
  3. ボタン UI や Python から Info DAT に対して強制クック (Force Cook) を発行して値を取り直す
  4. 結果を 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:

  • 高頻度監視が不要なら Passive On にして自動クックを抑制
  • Select DAT で必要な行だけ後段に渡して描画コストを下げる
  • 監視ロジックを 1 つの Component にまとめ、Viewer を必要なときだけ Open する

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました