
概要 📖 – 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
- FreeD 対応カメラまたはジンバルを同一 LAN に接続し、送信ポートを確認
- FreeD In CHOP で Network Port を送信側と一致させ、Active をオン
- 出力されるカメラ位置・回転チャンネルを Camera COMP の transform にバインド
- Render TOP で実カメラと同期した CG カメラから 3D シーンをレンダリングし合成
Example 2: マルチカメラスタジオで特定カメラのみ受信 🎥
Multiple FreeD cameras → FreeD In CHOP (Camera ID filter) → Switch CHOP → Camera COMP
- 複数の FreeD カメラが同じマルチキャストグループに送信している環境を準備
- FreeD In CHOP の Protocol を Multi-Cast Messaging (UDP) に設定
- Camera ID パラメータに目的のカメラ番号を設定し他のカメラデータをフィルタ
- プログラム/プレビュー切替時は Switch CHOP で別の FreeD In CHOP に切替
Example 3: AR グラフィックス重畳で実カメラ動きに追従 📺
Studio camera → FreeD In CHOP → Filter CHOP → Geometry COMP transform
- FreeD In CHOP で受信したカメラ姿勢チャンネルを取得
- 前段に Filter CHOP を入れて受信ジッタを smooth
- Geometry COMP の transform に位置・回転をバインドして AR オブジェクトを配置
- 実カメラを動かすとシーン内のオブジェクトがカメラ視点に追従して表示される
関連オペレータ 🔗
類似機能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 🎯
- 前処理: Constant CHOP、Null CHOP
- 後処理: Filter CHOP、Lag CHOP、Math CHOP、Null CHOP
Info CHOP情報 📊
FreeD In CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_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 周波数側を見直す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

