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

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

FreeD In CHOP のカメラトラッキングデータ受信を示す図

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

概要 📖 – FreeDプロトコルによるカメラトラッキングデータ受信

FreeD In CHOPは、FreeD プロトコルで送信されるカメラトラッキングデータをネットワーク経由で受信する CHOPです。Messaging (UDP) と Multi-Cast Messaging (UDP) の 2 つのプロトコルに対応し、Camera ID で特定カメラのストリームを抽出できます。

主な用途 🎯

  • バーチャルプロダクションでカメラトラッキングデータを TouchDesigner に取り込む
  • 放送・スタジオ収録での AR グラフィックス重畳のためのリアルタイムカメラ姿勢取得
  • FreeD 対応カメラ・ジンバルからの位置・回転・FOV データの UDP 受信
  • マルチカメラ環境で Camera ID フィルタによる特定カメラの選択受信
  • 仮想セット連携での実カメラ動きと CG カメラの同期

データフロー 🔄

外部カメラ/ジンバル

FreeD プロトコル UDP パケット送信

ネットワーク受信 (Messaging / Multi-Cast)

FreeD In CHOP (Camera ID フィルタ)

カメラ位置・回転・FOV チャンネル

Camera COMP / Render TOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

FreeD Page 📡

Active .active 🟢

FreeD パケット受信の有効/無効:

  • オン: ネットワークポートに送られてくる FreeD 情報を受信
  • オフ: 受信を停止し、チャンネル更新が行われない

Protocol .protocol 🌐

使用するネットワークプロトコル

項目 内部名 説明
Messaging (UDP) .msging 標準の UDP ユニキャストでパケット受信
Multi-Cast Messaging (UDP) .multicastmsging UDP マルチキャストでパケット受信

Network Address .netaddress 🔗

Multi-Cast 使用時のリスンアドレス:

  • Network Address: Multi-Cast プロトコル選択時に FreeD がパケットを待ち受けるマルチキャストアドレス

Network Port .port 🔢

FreeD パケット受信ポート:

  • Network Port: FreeD パケットを受け付ける UDP ポート番号

Local Address .localaddress 💻

複数 NIC 環境で受信に使用する IP アドレスを指定

項目 内部名 説明
192.168.1.10 .192.168.1.10 ローカル LAN の代表的な IP(NIC が複数ある場合の選択例)
127.0.0.1 .127.0.0.1 ループバック(同一マシン内の通信用)

Camera ID .cameraid 🎥

受信カメラの ID フィルタ:

  • Camera ID: camera_id チャンネルの値と一致するカメラのみ受信。空欄の場合はフィルタ無しで最後に受信したカメラのデータを表示

Common Page 🔧

Time Slice .timeslice ⏱️

Time Slice モードの強制設定:

  • オン: チャンネルを「タイムスライス」モードに強制
  • タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間

Scope .scope 🎯

影響を受けるチャンネルの絞り込み:

  • Scope 文字列: 影響を受けるチャンネルを指定する文字列
  • パターンマッチング: *[1-10] 等のパターンが使用可能

Sample Rate Match .srselect

複数の入力 CHOP のサンプルレートが異なる場合の処理方法

項目 内部名 説明
Resample At First Input’s Rate .first 最初の入力のレートで他をリサンプル
Resample At Maximum Rate .max 最高サンプルレートでリサンプル
Resample At Minimum Rate .min 最低サンプルレートでリサンプル
Error If Rates Differ .err レート不一致でエラー

Export Method .exportmethod 📤

CHOP チャンネルをパラメータに接続する方法

項目 内部名 説明
DAT Table by Index .datindex DAT テーブルのインデックスでチャンネルとパラメータを対応付け
DAT Table by Name .datname DAT テーブルの行名でチャンネルとパラメータを対応付け
Channel Name is Path:Parameter .autoname チャンネル名を `path:parameter` 形式で記述し直接対応付け

Export Root .autoexportroot 🌳

Channel Name is Path:Parameter モード時のパス基点:

  • Export Root パス: autoname モードでチャンネル名のパス部分を相対化する基点 OP のパス

Export Table .exporttable 📋

DAT Table エクスポート方式での参照 DAT:

  • Export Table DAT: datindex / datname モード時に参照する DAT のパス

Rename from .commonrenamefrom 🔤

リネーム対象チャンネルのパターン:

  • Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列

Rename to .commonrenameto 🔁

リネーム後の置換パターン:

  • Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)

実践アイデア 💡

Example 1: バーチャルプロダクションで実カメラと CG カメラを同期 🎬

FreeD 対応カメラ → FreeD In CHOP → Camera COMP → Render TOP
  1. FreeD 対応カメラまたはジンバルを同一 LAN に接続し、送信ポートを確認
  2. FreeD In CHOP で Network Port を送信側と一致させ、Active をオン
  3. 出力されるカメラ位置・回転チャンネルを Camera COMP の transform にバインド
  4. Render TOP で実カメラと同期した CG カメラから 3D シーンをレンダリングし合成

Example 2: マルチカメラスタジオで特定カメラのみ受信 🎥

Multiple FreeD cameras → FreeD In CHOP (Camera ID filter) → Switch CHOP → Camera COMP
  1. 複数の FreeD カメラが同じマルチキャストグループに送信している環境を準備
  2. FreeD In CHOP の Protocol を Multi-Cast Messaging (UDP) に設定
  3. Camera ID パラメータに目的のカメラ番号を設定し他のカメラデータをフィルタ
  4. プログラム/プレビュー切替時は Switch CHOP で別の FreeD In CHOP に切替

Example 3: AR グラフィックス重畳で実カメラ動きに追従 📺

Studio camera → FreeD In CHOP → Filter CHOP → Geometry COMP transform
  1. FreeD In CHOP で受信したカメラ姿勢チャンネルを取得
  2. 前段に Filter CHOP を入れて受信ジッタを smooth
  3. Geometry COMP の transform に位置・回転をバインドして AR オブジェクトを配置
  4. 実カメラを動かすとシーン内のオブジェクトがカメラ視点に追従して表示される

関連オペレータ 🔗

類似機能OP 🔍

  • OSC In CHOP — 汎用 OSC プロトコルでカメラ姿勢を受信(FreeD 専用ではない)
  • MIDI In CHOP — MIDI コントローラからの値受信(カメラトラッキング用途では非推奨)

組み合わせ推奨OP 🔄

  • Filter CHOP — 受信値のジッタを smooth してカメラ追従を滑らかに
  • Lag CHOP — 受信値に遅延スムージングを掛け CG 同期に安定性を付与
  • Math CHOP — 受信値の単位変換(mm → m など)や軸反転
  • Switch CHOP — 複数カメラの FreeD ストリームをプログラム/プレビュー切替
  • Null CHOP — 受信データを参照点として固定し下流の参照を安定化

前処理・後処理CHOP 🎯


Info CHOP情報 📊

FreeD In CHOPは Info CHOP による詳細情報取得に対応しています。

CHOP固有情報 🎚️

  • start: CHOPインターバルの開始(サンプル単位)
  • length: CHOPのサンプル数
  • sample_rate: フレーム毎秒のサンプルレート
  • num_channels: CHOPのチャンネル数
  • time_slice: タイムスライス有効時は1、無効時は0
  • export_sernum: Export接続の更新回数

汎用オペレータ情報 🔄

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

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

よくある問題と解決策 🔧

❌ Problem: パケットを受信できない/チャンネル値が更新されない
✅ Solution:

  • Active がオンになっているか確認、オフだと一切更新されない
  • Network Port が送信側カメラのポートと完全一致しているか確認
  • ファイアウォールで該当 UDP ポートが許可されているか OS 設定を確認
  • 複数 NIC 環境では Local Address で受信する NIC の IP を明示指定

❌ Problem: マルチカメラ環境で意図しないカメラのデータが混ざる
✅ Solution:

  • Camera ID パラメータを目的のカメラ番号に設定して他をフィルタ
  • Camera ID が空欄だと最後に受信したカメラのデータが表示される仕様を理解
  • Multi-Cast Messaging (UDP) を選び、各カメラに固有 ID を割当てる運用に変更

❌ Problem: 受信値がガクガク(ジッタ)して CG カメラが揺れる
✅ Solution:

  • 後段に Filter CHOP を入れて時間方向の smoothing を適用
  • Lag CHOP で遅延付きスムージングを掛けて急な値変化を抑制
  • 送信側の出力レートが TouchDesigner の cook 周波数に対し低い場合は cook 周波数側を見直す

参考資料 📚

その他 🔗

公式リソース 📖

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