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

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

UDT In DAT の UDT メッセージ受信を示す図

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

概要 📖 – ネット経由でデータ受信

UDT In DATは、UDT プロトコルで届くデータをネットワーク経由で受信しテーブルへ格納する DATです。高速ストリーミングと信頼性メッセージのプロトコル選択、バイト・行・メッセージ単位の行分割、着信ごとに Python を発火させるコールバックまで備えており、UDT を介した外部連携の受信側基盤として使われます。

主な用途 🎯

  • UDT メッセージのネットワーク受信(外部アプリやデバイスから届くデータを受け取りテーブルへ格納)
  • プロトコル選択による受信方式の切替(高速ストリーミング / 信頼性メッセージから受信特性を選択)
  • 大容量データの確実な受信(UDP より到達保証や順序保証が必要な転送を扱う基盤として利用)
  • 受信データのテーブル化と行分割制御(バイト単位 / 行単位 / メッセージ単位で受信内容を行に分解)
  • 受信トリガーによるコールバック処理(メッセージ着信ごとに Python スクリプトを発火して後段処理へ接続)

データフロー 🔄

入力: ネットワークから届く UDT メッセージ

プロトコル・ポート解決(Protocol / Network Address / Port)

行分割整形(Row/ Callback Format)

出力: 受信内容を格納したテーブル + コールバック発火

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Connect Page 📋

Protocol .protocol 🧭

Protocol (通信プロトコル) — 使用するネットワークプロトコルを選択します。詳細は Network Protocols を参照します。

項目 内部名 説明
Fast Streaming .faststreaming 高速ストリーミングでの受信 (スループット優先のデータ転送)
Reliable Messaging .reliablemsging 信頼性メッセージでの受信 (到達保証ありのデータ転送)

接続と待ち受け 🌐

Network Address .address 📡
Network Address (待ち受けアドレス) — 待ち受けする IP アドレスを指定します (例: 224.0.0.1)。
このパラメータはマルチキャストプロトコルでのみ必要です。

Port .port 🔌
Port (待ち受けポート) — 待ち受けするネットワークポート番号を指定します。送信側が送ってくるポートに合わせます。

Shared Connection .shared 🔗
Shared Connection (接続の共有) — 同じネットワークプロトコルを使う他のネットワーク DAT と接続を共有します。

Active .active
Active (接続の有効化) — このチェックボックスで接続を有効にします。
Off 時は受信処理が停止し、届いたデータは処理されません。

Row/ Callback Format .format 🧱

Row/ Callback Format (行分割方式) — 受信データをテーブルへどう分解するかを決定します。

項目 内部名 説明
One Per Byte .perbyte 受信したバイトごとに 1 行をテーブルへ追加
One Per Line .perline 受信した行ごとに 1 行をテーブルへ追加
One Per Message .permessage 受信したメッセージごとに 1 行をテーブルへ追加

Received Data Page 📨

Callbacks .callbacks 🐍

Callbacks DAT .callbacks 📜
Callbacks DAT (コールバック) — メッセージが届くごとに 1 回実行される Callbacks DAT のパスを指定します。使い方は udtinDAT_Class を参照します。

実行スコープ .executeloc 📍

Execute from (実行場所) — スクリプトを実行する場所を決定するメニューです。

項目 内部名 説明
Current Node .current 現在の Node 位置からスクリプトを実行
Specified Operator .specified From Operator パラメータで指定した OP からスクリプトを実行
Parent of Callbacks DAT .callback Callbacks DAT の親 OP からスクリプトを実行 (sibling 参照が容易)

From Operator .fromop 🔗

Execute fromSpecified Operator のときに参照される OP パス:

  • From Operator パス: From Operator (実行元 OP) — Execute fromSpecified Operator のときに、状態変化がスクリプト実行のトリガーとなり、かつスクリプトの実行パスにもなる OP のパスです。

出力行数制御 📏

Clamp Output .clamp 🚧
Clamp Output (行数の上限制御) — DAT はデフォルトで 100 メッセージに制限されますが、これを On にすると任意値や無制限に変更できます。

Maximum Lines .maxlines 📐
Maximum Lines (最大行数) — 保持するメッセージ数の上限です。
上限を超えると古いメッセージから順にリストから削除されます。

Clear Output .clear 🗑️
Clear Output (クリア) — ヘッダ行以外の全行を削除します。
Python から呼ぶ場合: op('opname').par.clear.pulse()

Bytes Column .bytes 🔣
Bytes Column (バイト列の出力) — 各メッセージの raw bytes を別カラムとして出力に追加します。
デバッグ用途や受信バイナリの確認に有用です。


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: 外部アプリから受信 📥

外部アプリ (UDT 送信) → UDT In DAT → DAT Execute DAT → 後段処理

別マシンの外部アプリが UDT で送ってくるデータを UDT In DAT で受け取り、受信内容をテーブルへ格納してから後段の処理に渡す基本フロー。届いたデータを行ごとに分解して扱います。

  1. UDT In DAT の Protocol を送信側と同じ設定 (例: Reliable Messaging) にする
  2. Port に送信側が送ってくるポート番号を指定
  3. Row/ Callback FormatOne Per Message にしてメッセージ単位で行を追加
  4. Active を On にして受信を開始し、テーブルに行が増えることを確認

Example 2: 着信でスクリプト発火 ⚡

UDT 送信元 → UDT In DAT (Callbacks) → Python スクリプト → パラメータ更新

メッセージが届くたびに Python コールバックを発火させ、受信値を解析して TouchDesigner 内のパラメータや状態をリアルタイムに更新するイベント駆動のフロー。ポーリングせずに着信契機で処理できます。

  1. Callbacks DAT にコールバック用の DAT のパスを指定
  2. コールバック内でメッセージ本文を解析し、対象 OP のパラメータへ反映
  3. Execute fromParent of Callbacks DAT にして sibling OP を参照しやすくする
  4. UDT Out DAT を送信側に置いて往復構成にする

Example 3: 高速ストリーム受信 🌊

UDT 送信元 (Fast Streaming) → UDT In DAT → Convert DAT → CHOP

スループットを優先した高速ストリーミングで連続的に届くデータを受け取り、テーブルを Convert DAT で扱いやすい形に変換してから CHOP へ流すフロー。大量データの取りこぼしを抑えつつ処理へ接続します。

  1. ProtocolFast Streaming に設定して送信側と揃える
  2. Row/ Callback FormatOne Per Line にして行単位でテーブル化
  3. Clamp OutputMaximum Lines で履歴行数を制限しメモリ圧迫を回避
  4. Convert DAT でテーブル整形してから後段へ渡す

関連オペレータ 🔗

類似機能OP 🔍

  • UDP In DAT — 汎用 UDP パケットを受信する版。UDT を使わない素の UDP 受信はこちら
  • TCP/IP DAT — TCP/IP コネクションでの送受信版。コネクション型の確実な通信向き
  • OSC In DAT — OSC メッセージを受信する版。OSC アドレス + 引数を扱う場合

組み合わせ推奨OP 🔄

  • UDT Out DAT — 送信側に置く対の DAT。UDT での送受信の往復を構成する
  • DAT Execute DAT — 受信行の追加をトリガーに Python を発火する定番ペア
  • Convert DAT — 受信テーブルを区切り文字で整形・分割して扱いやすくする
  • CHOP to DAT — 受信値とチャンネルを相互変換して CHOP 処理へ橋渡し

前処理・後処理DAT 🎯


Info DAT情報 📊

UDT In DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 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: データが受信されない・テーブルが増えない
✅ Solution:

  • Active パラメータが On になっているか確認
  • Port が送信側の送信ポートと一致しているか確認
  • 送信側と Protocol (高速ストリーミング / 信頼性メッセージ) を揃えているか確認
  • ファイアウォールが該当ポートをブロックしていないか受信側マシンの設定も含めて確認

❌ Problem: 受信内容が想定した形で行に分かれない
✅ Solution:

  • Row/ Callback Format を送信データの単位 (バイト / 行 / メッセージ) に合わせて見直す
  • 送信側が区切りに使う改行やメッセージ境界が受信側の解釈と一致しているか確認
  • バイナリデータの場合は Bytes Column を On にして raw bytes を確認

❌ Problem: 受信履歴が無制限に増えてメモリを圧迫する
✅ Solution:

  • Clamp Output を On にし、Maximum Lines で適切な上限 (例: 200-1000) を設定
  • コールバック内で必要な情報を転記したあと op('opname').par.clear.pulse() で定期クリア
  • デバッグが済んだら Bytes Column を Off にして余計な列を減らす

❌ Problem: コールバックが発火しない
✅ Solution:

  • Callbacks DAT に正しいコールバック DAT のパスが指定されているか確認
  • Execute fromFrom Operator の組み合わせが意図した実行場所を指しているか確認
  • そもそもメッセージが受信できているか (テーブルに行が増えるか) を先に確認

参考資料 📚

その他 🔗

公式リソース 📖

関連記事 🔗

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