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

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

UDP In DAT のネットワーク受信機能を示す図

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

概要 📖 – UDP通信でデータを受信

UDP In DATは、指定したポートで待ち受け、ネットワーク経由で届く UDP メッセージを受信してテーブルに表示する DATです。受信したメッセージはコールバック処理にも渡せるため、外部機器やアプリとの連携で広く使われます。

主な用途 🎯

  • 外部アプリからのリアルタイムメッセージ受信
  • センサー機器やマイコンからのデータ取り込み
  • 別 PC やネットワーク機器との双方向連携の受信側
  • マルチキャスト配信の同時受信
  • 受信メッセージを起点としたコールバックによるイベント処理

データフロー 🔄

入力: ネットワーク上の UDP メッセージ

受信・解析処理(Row/Callback Format に応じた行分割)

出力: テーブル形式の受信データ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Connect Page 📋

Protocol .protocol 🎛️

Protocol (通信方式) — どの種類の UDP 通信で待ち受けるかを選びます。

項目 内部名 説明
Messaging (UDP) .msging 通常の UDP メッセージ通信で待ち受け
Multi-Cast Messaging (UDP) .multicastmsging マルチキャスト配信のメッセージを待ち受け

接続設定 🔌

Network Address .address 🌐
Network Address (受信アドレス) — 待ち受けるマルチキャストの IP アドレスを指定します。

Port .port 🔢
Port (ポート番号) — 待ち受けるネットワークポートを指定します。

Shared Connection .shared 🔗
Shared Connection (接続の共有) — 同じネットワーク方式を使う他のネットワーク系 DAT と同一の接続を共有します。

Active .active
Active (有効化) — このチェックボックスで接続の有効・無効を切り替えます。

Row/Callback Format .format 📐

Row/Callback Format (行の分割方法) — 受信データをどの単位でテーブルの行に分けるかを決めます。

項目 内部名 説明
One Per Byte .perbyte 受信した 1 バイトごとに 1 行を追加
One Per Line .perline 受信した 1 行ごとに 1 行を追加 (行末は \n / \r / ヌル文字で区切り)
One Per Message .permessage 受信した 1 メッセージごとに 1 行を追加

Received Data Page 📥

コールバック設定 ⚙️

Callbacks DAT .callbacks 📜
Callbacks DAT (コールバック DAT) — 受信メッセージ 1 件ごとに 1 回実行されるスクリプトを持つ DAT を指定します。

Execute from .executeloc 📍
Execute from (実行元) — スクリプトをどの場所から実行するかを決めます。

From Operator .fromop 🎯
From Operator (起点オペレータ) — Execute from を Specified Operator にしたとき、状態変化でスクリプト実行を引き起こすオペレータ兼スクリプトの実行基点となるパスを指定します。

出力制御 📊

Clamp Output .clamp 🧮
Clamp Output (出力数の制限) — デフォルトでは 100 メッセージに制限されますが、この設定で無制限を含む任意の数に変更します。

Maximum Lines .maxlines 📏
Maximum Lines (最大行数) — 保持するメッセージ数の上限を指定します。古いメッセージから先に削除されます。

Clear Output .clear 🧹
Clear Output (出力のクリア) — 見出し行を除く全行を削除します。スクリプトでクリアするには op( "opname" ).par.clear.pulse() を使います。

Bytes Column .bytes 🔣
Bytes Column (バイト列の列) — メッセージの生のバイト列を別の列に出力します。


実践アイデア 💡

Example 1: スマホアプリから操作 📱

スマホ OSC アプリ → UDP In DAT → DAT to CHOP → パラメータ制御

スマートフォンのコントローラアプリから送られてくる UDP メッセージを UDP In DAT で受信し、テーブルの値を抽出してビジュアルのパラメータをリアルタイムに動かす基本フローです。

  1. UDP In DAT の Port にアプリの送信先ポートを設定
  2. Active をオンにして受信を開始
  3. 受信したテーブルの値を後段で数値として抽出
  4. 抽出値をビジュアルのパラメータに反映

Example 2: 別PCから映像同期 🖥️

送信側 PC (UDP Out) → ネットワーク → UDP In DAT → 同期トリガー

複数台での上映で、マスター PC が送る同期信号を各 PC の UDP In DAT で受け取り、再生タイミングを揃える用途です。低遅延な UDP の特性を活かします。

  • 送信側 PC で同期信号を UDP で配信
  • 受信側の UDP In DAT で同一ポートを待ち受け
  • 受信メッセージをトリガーに再生位置を補正

Example 3: コールバックで処理 📜

外部機器 → UDP In DAT (Callbacks DAT) → Python スクリプト実行

受信メッセージごとに Callbacks DAT のスクリプトを実行し、メッセージ内容に応じて分岐処理を行う応用例です。テーブル監視ではなくイベント駆動で扱いたい場合に向きます。

  • Callbacks DAT にメッセージ処理スクリプトを記述
  • UDP In DAT の Callbacks DAT 欄にそのパスを指定
  • 受信のたびにスクリプトが自動実行されて分岐処理

関連オペレータ 🔗

類似機能OP 🔍

  • OSC In DAT — OSC 形式のメッセージを受信する DAT
  • TCP/IP DAT — TCP / IP 接続でデータを送受信する DAT
  • UDT In DAT — 信頼性のある UDT プロトコルで受信する DAT
  • WebSocket DAT — WebSocket 接続でメッセージを送受信する DAT

組み合わせ推奨OP 🔄

  • UDP Out DAT — 受信に対応する送信側として双方向通信を構成
  • Convert DAT — 受信したテーブルの区切りや形式を変換
  • Select DAT — 受信テーブルから必要な行・列だけ抽出
  • Execute DAT — 受信内容の変化を起点にスクリプトを実行

前処理・後処理DAT 🎯


Info情報 📊

UDP In DAT は Info DAT による状態情報の取得に対応しています。

DAT 固有情報 📋

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

汎用オペレータ情報 🔄

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

受信状態の情報 📡

  • num_rows: 現在テーブルに保持されている受信行の数
  • num_cols: 出力テーブルの列数

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

よくある問題と解決策 🔧

❌ Problem: メッセージが受信できない
✅ Solution:

  • Active がオンになっているか確認
  • Port が送信側と一致しているか確認
  • ファイアウォールが該当ポートの UDP 通信を遮断していないか確認

❌ Problem: 受信データが正しく行に分かれない
✅ Solution:

  • Row/ Callback Format を送信側のデータ構造に合わせて選択
  • 改行区切りなら One Per Line、メッセージ単位なら One Per Message を選択
  • 生のバイト列を確認したい場合は Bytes Column をオンにする

❌ Problem: 古いメッセージが消えてしまう
✅ Solution:

  • Maximum Lines の上限を増やす
  • Clamp Output で出力数を無制限に設定
  • 後段で Convert DAT 等を使い必要なデータを別 DAT に退避

参考資料 📚

その他 🔗

公式リソース 📖

関連オペレータ 🔗

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