
概要 📖 – ネット経由でデータ送信
UDT Out DATは、UDT プロトコルでデータをネットワーク経由で送信する DATです。高速ストリーミングと信頼性メッセージのプロトコル選択、バイト・行・メッセージ単位の行分割、送出ごとに Python を発火させるコールバックまで備えており、UDT を介した外部連携の送信側基盤として使われます。
主な用途 🎯
- UDT メッセージのネットワーク送信(TouchDesigner から外部アプリやデバイスへデータを送り出す)
- プロトコル選択による送信方式の切替(高速ストリーミング / 信頼性メッセージから送信特性を選択)
- 大容量データの確実な送信(UDP より到達保証や順序保証が必要な転送を扱う基盤として利用)
- 送信内容のテーブル化と行分割制御(バイト単位 / 行単位 / メッセージ単位で送信内容を行に分解)
- 送信トリガーによるコールバック処理(送信タイミングごとに Python スクリプトを発火して送出内容を整形)
データフロー 🔄
入力: 送信したいデータ
↓
プロトコル・ポート解決(Protocol / Port)
↓
行分割整形(Row/ Callback Format)
↓
出力: ネットワークへ送出される UDT メッセージ + コールバック発火
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Connect Page 📋
Protocol .protocol 🧭
Protocol (通信プロトコル) — 使用するネットワークプロトコルを選択します。詳細は Network Protocols を参照します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Fast Streaming | .faststreaming |
高速ストリーミングでの送信 (スループット優先のデータ転送) |
| Reliable Messaging | .reliablemsging |
信頼性メッセージでの送信 (到達保証ありのデータ転送) |
接続と送信先 🌐
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 のパスを指定します。
実行スコープ .executeloc 📍
Execute from (実行場所) — スクリプトを実行する場所を決定します:
- Execute from:
Execute from(実行場所) — コールバックスクリプトを実行する場所を決定します。
From Operator .fromop 🔗
Execute from が Specified Operator のときに参照される OP パス:
- From Operator パス:
From Operator(実行元 OP) —Execute fromがSpecified 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 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: 外部アプリへ送信 📤
前段処理 → UDT Out DAT → 外部アプリ (UDT 受信)
TouchDesigner で生成したデータを UDT Out DAT 経由で別マシンの外部アプリへ送り出す基本フロー。送信先のポートとプロトコルを受信側と揃えてから送出します。
- UDT Out DAT の
Protocolを受信側と同じ設定 (例:Reliable Messaging) にする Portに受信側が待ち受けるポート番号を指定Activeを On にして送信を有効化- 受信側で内容が届くことを確認する
Example 2: 往復通信を構成 🔁
UDT Out DAT → ネットワーク → UDT In DAT → コールバック処理
送信側に UDT Out DAT、受信側に UDT In DAT を置いて双方向の往復通信を組むフロー。送信したメッセージを相手が受け取り、応答を返してくる構成をネットワーク越しに実現します。
- 送信側に UDT Out DAT、受信側に UDT In DAT を配置
- 双方の
ProtocolとPortを揃える Row/ Callback FormatをOne Per Messageにしてメッセージ単位で扱う- 受信側の
Callbacks DATで応答処理を実装し往復構成を完成させる
Example 3: 高速ストリーム送信 🌊
Convert DAT → UDT Out DAT (Fast Streaming) → 受信側
連続的なデータを高速ストリーミングで送出するフロー。Convert DAT で送信形式に整えたテーブルを UDT Out DAT に渡し、スループットを優先して大量データを送り続けます。
- Convert DAT で送信したいデータをテーブル形式に整形
ProtocolをFast Streamingに設定して受信側と揃えるRow/ Callback FormatをOne Per Lineにして行単位で送出Clamp OutputとMaximum Linesで履歴行数を制限しメモリ圧迫を回避
関連オペレータ 🔗
類似機能OP 🔍
- UDP Out DAT — 汎用 UDP パケットを送信する版。UDT を使わない素の UDP 送信はこちら
- TCP/IP DAT — TCP/IP コネクションでの送受信版。コネクション型の確実な通信向き
- OSC Out DAT — OSC メッセージを送信する版。OSC アドレス + 引数を扱う場合
組み合わせ推奨OP 🔄
- UDT In DAT — 受信側に置く対の DAT。UDT での送受信の往復を構成する
- DAT Execute DAT — テーブル変化をトリガーに送信用 Python を発火する定番ペア
- Convert DAT — 送信前にテーブルを区切り文字で整形・分割して扱いやすくする
- CHOP to DAT — チャンネル値をテーブル化して送信内容へ橋渡し
前処理・後処理DAT 🎯
- 前処理: Convert DAT、CHOP to DAT、DAT Execute DAT
- 後処理: UDT In DAT
Info DAT情報 📊
UDT Out 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 にして余計な列を減らす
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

