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

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

In DAT の入力ポート機能を示す図

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

概要 📖 – COMP の入力ポートとして DAT データを受け取る

In DATは、Base COMP や Container COMP の入力ポートとして外部から DAT データを受け取り、コンポーネント内部のネットワークへ橋渡しする DATです。Label パラメータで入力ポート上にマウスホバー時に表示されるポップアップラベルを設定でき、COMP の入力の意図 (どんな DAT を期待しているか) を明示できます。In CHOP / In TOP / In SOP 等と同じ「COMP 入力ポート受け取り」族の DAT 版です。

主な用途 🎯

  • Base COMP / Container COMP の入力ポートとして DAT データ (テキスト / テーブル) を受け取る
  • コンポーネント外部からの DAT 受け渡しを担い、内部ネットワークと外部の境界を作る (モジュール化)
  • Label パラメータで入力ポート上にポップアップ表示するラベル文字列を設定し、入力の意図を明示
  • COMP の入出力契約を明示するインターフェース要素として、再利用可能なテンプレート COMP の構築に利用
  • 親 COMP の input コネクタ番号と In DAT のインデックスを 1:1 対応させ、複数入力 COMP の入力経路を整理

データフロー 🔄

入力: COMP 外部の上流 DAT (Table / Text / File In 等)

親 COMP の入力ポート (左側 input コネクタ)

In DAT (COMP 内部に配置)

COMP 内部の下流 DAT チェイン (Convert / Evaluate / Select 等)

出力: COMP 内部ネットワーク

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

In Page 📋

In パラメータ 🔌

Label .label 🏷️
– この入力ポートに付けるラベル文字列
– 親 COMP の入力コネクタ上にマウスを当てたときに表示されるポップアップで使用される
– 「何を渡す入力か」(例: config table / script source / log lines 等) を明示することで、再利用 COMP の入力契約を可視化できる


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: Base COMPで外部Table DATを受取 🔌

外部 Table DAT → Base COMP 入力ポート → In DAT → COMP 内部処理 (Evaluate / Convert 等)
  1. Base COMP を作成し、内部に In DAT を 1 個配置
  2. 外部に Table DAT (設定値テーブル等) を用意し、Base COMP の入力ポート (左側の input1) に接続
  3. COMP 内部の In DAT の出力をそのまま下流の Evaluate DATConvert DAT に渡す
  4. COMP の入出力契約が明示され、外部から異なる Table DAT に差し替え可能なモジュールとして再利用できる

Example 2: Label で入力ポートの意図を明示する 🏷️

Base COMP (input1=config_table, input2=log_source) → 各 In DAT (Label 設定済) → 内部処理
  1. Base COMP に In DAT を 2 個配置し、それぞれ input1 / input2 に対応させる
  2. 1 個目の In DAT の Labelconfig table に設定 (設定値テーブルを受け取る入口)
  3. 2 個目の In DAT の Labellog source に設定 (ログ文字列を受け取る入口)
  4. 親 COMP の入力コネクタにマウスを乗せると Label がポップアップ表示され、どちらの入力に何を繋げばよいか即座に分かる
  5. 再利用 COMP の入力契約がドキュメントなしでも自己説明的になる

Example 3: 外部スクリプト DAT を COMP 内部に取り込んで実行 🐍

外部 Text DAT (Python ソース) → Base COMP 入力 → In DAT → COMP 内部の Execute DAT / Evaluate DAT
  1. 外部に Python ソースを保持した Text DAT を用意し、Base COMP の入力ポートに接続
  2. COMP 内部の In DAT が Text DAT の内容を受け取り、LanguageInput にして上流の言語設定を継承
  3. COMP 内部で In DAT の出力を Execute DAT に渡し、フレームコールバックやパラメータ変更コールバックでスクリプトを実行
  4. 外部から別の Text DAT に差し替えるだけで COMP の挙動を切り替えられる、プラガブルなロジック注入経路として機能する

関連オペレータ 🔗

類似機能OP 🔍

  • Text DAT — テキスト / スクリプトソースを直接保持するソース DAT、In DAT は外部 COMP 入力から受け取る点が異なる
  • Table DAT — テーブルデータを直接編集して保持するソース DAT、In DAT は外部 COMP 入力経由でテーブルを受け取る点が異なる

組み合わせ推奨OP 🔄

  • Out DAT — COMP の出力ポートを担当、In と対になりコンポーネントの入出力インターフェースを構成
  • Evaluate DAT — In で受け取ったテキストを式評価し、参照解決後のテーブル / 文字列として COMP 内部処理に渡す
  • Convert DAT — In で受け取ったテーブルをタブ → カンマ等の区切り文字変換、テキスト ↔ テーブル相互変換に利用
  • Select DAT — In 直後に Select DAT を置いて、外部から渡された巨大テーブルから必要な行 / 列のみを抽出
  • Execute DAT — In で受け取ったスクリプトソースを Execute DAT に渡し、コールバック駆動でロジックを発火

前処理・後処理DAT 🎯


Info DAT情報 📊

In DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time / cook_frame / warnings / errors 等の共通 DAT Info チャンネルを参照可能)。受け取ったテーブルの行数 / 列数の検証や、外部入力が更新されたタイミングの検出に利用できます。

DAT 固有情報 📋

  • num_rows: DAT の行数
  • num_cols: DAT の列数
  • type: DAT の型 (table / text)
  • is_table: テーブル形式の場合 1、テキスト形式の場合 0

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: In DAT に何も流れてこない / 出力が空になる
✅ Solution:

  • In DAT は COMP (Base COMP / Container COMP 等) の内部に置かれている必要がある、ネットワーク最上位 (/) に置いても外部入力は受け取れない
  • 親 COMP の入力ポート (左側の input コネクタ) に上流 DAT が接続されているか確認
  • 同 COMP 内に複数の In DAT がある場合、In DAT のインデックス (配置順) と親 COMP の入力ポート番号 (input1 / input2 / …) が一致しているか確認
  • 親 COMP の Inputs ページで入力経路が無効化されていないか確認

❌ Problem: Label を変えてもポップアップ表示が変わらない
✅ Solution:

  • Label の表示は親 COMP の入力ポート上にマウスをホバーした時に出るため、In DAT 自身のノード上ではなく親 COMP の外側コネクタで確認
  • Label を変更した直後はキャッシュが残っている場合があるので、ネットワーク view を一度別 COMP に切り替えてから戻して再描画
  • 親 COMP が tox 化されている / locked な場合、Label の変更が反映されないことがある (op('comp1').par.label1.eval() で値を直接確認)

❌ Problem: 外部から渡したテーブルがテキストとして 1 文字列扱いされる
✅ Solution:

  • 上流の DAT がテーブル形式 (タブ区切り) になっているか確認 (Convert DAT でテキスト → テーブル変換を挟むのが定石)
  • 上流が File In DAT の場合は Convert Text to Table をオンにする
  • In DAT 自体には変換パラメータがないため、テーブル化は In の前段で完了させる必要がある

❌ Problem: COMP を保存・再ロードすると入力接続が外れる
✅ Solution:

  • 外部 DAT との接続は親 COMP 側に保存されるため、tox 化前に親 COMP まで含めて保存しているか確認
  • Base COMP を Save Component で .tox 化する際、外部接続は tox には含まれない (再配置先のネットワークで再接続する設計が必要)
  • 再利用 COMP の入出力契約を Label で明示しておくと、再配置時の繋ぎ直しが大幅に楽になる

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました