
概要 📖 – FreeD カメラトラッキングデータの送信
FreeD Out CHOPは、カメラトラッキングデータを FreeD プロトコル(D1 メッセージ)で UDP 送信する CHOPです。バーチャルプロダクションや放送グラフィックスで広く使われる FreeD フォーマットを 1 オペレータで生成・送出します。
主な用途 🎯
- バーチャルプロダクションでのカメラトラッキングデータ送信(位置・回転・FOV)
- AR / 放送グラフィックス向けの FreeD プロトコル出力
- 外部レンダラ(Unreal Engine / Unity / disguise 等)へのカメラ姿勢ストリーミング
- 複数受信機への UDP マルチキャスト配信
- TouchDesigner 内のカメラ COMP 値を業界標準フォーマットに変換して送出
データフロー 🔄
入力: カメラ位置・回転・FOV のチャンネル
↓
FreeD Out CHOP(FreeD パケット生成)
↓
UDP / Multicast UDP 送信
↓
出力: 受信側カメラトラッキングシステム
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
FreeD Out Page 📋
Active .active 🔌
FreeD パケット送信の有効/無効:
- オン: FreeD パケットを送信する
- オフ: 送信を停止する(接続自体は維持)
Protocol .protocol 🌐
送信に使用するネットワークプロトコル
| 項目 | 内部名 | 説明 |
|---|---|---|
| Messaging (UDP) | .msging |
通常のユニキャスト UDP で 1 つの宛先に送信 |
| Multi-Cast Messaging (UDP) | .multicastmsging |
マルチキャスト UDP で複数の受信機に同時配信 |
Network Address .netaddress 📡
送信先の指定方法(ドメイン名 / IP / localhost のいずれか):
- ドメイン名: 例:
tracker.local等の名前解決可能なホスト名 - IP アドレス: 例:
192.168.1.50のような IPv4 アドレス localhost: 同一マシン内の別プログラムへ送信する場合に使用
Network Port .port 🔢
送信先ポート番号の指定:
- ポート番号: 受信側システムが listen しているポートを指定
- 受信機との一致: 送受で同じポート番号にする必要あり
Local Address .localaddress 🪪
複数 NIC 環境での送信元アドレス指定:
- 送信元 IP: 使用したい NIC のローカル IP アドレスを指定
- 未指定: OS がデフォルトの NIC を自動選択
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: Unreal Engine へのカメラトラッキング送信 🎥
Camera COMP → Null CHOP (xform 抽出) → FreeD Out CHOP → Unreal Engine (LiveLink FreeD)
- TouchDesigner 内のカメラ COMP の位置・回転・FOV を Null CHOP で抽出
- FreeD Out CHOP の Network Address に Unreal を実行する PC の IP を指定
- Network Port を Unreal の LiveLink FreeD 受信ポートと一致させる(既定 6301 等)
- Active をオンにして FreeD パケット送出を開始、Unreal 側でカメラ姿勢が反映される
Example 2: 複数受信機への同時配信(マルチキャスト) 📡
Camera COMP → FreeD Out CHOP (Multi-Cast Messaging) → 複数の AR レンダラ
- Protocol を「Multi-Cast Messaging (UDP)」に設定
- Network Address にマルチキャストアドレス(例:
239.0.0.1)を指定 - 受信側の各マシン(disguise / Unreal / Unity 等)を同じマルチキャストグループに参加させる
- 1 度の送信で複数のレンダラに同じカメラ姿勢を同期配信できる
Example 3: 外部カメラトラッカーからのリレー送信 🔁
FreeD In CHOP → Math CHOP (座標補正) → FreeD Out CHOP → 別 PC の Unreal
- 物理カメラトラッカー(Stype / Mo-Sys 等)から FreeD In CHOP で受信
- Math CHOP で座標系のオフセットや単位変換を適用
- FreeD Out CHOP で別の受信機(別 PC のレンダラ)にリレー送信
- 1 つのトラッカー入力を複数のシーンに分配・補正して再送する中継 hub として機能する
関連オペレータ 🔗
類似機能OP 🔍
- FreeD In CHOP — FreeD パケットの受信側、Out と対をなすペアオペレータ
- OSC Out CHOP — 汎用 OSC 送信、FreeD と異なり業界標準カメラフォーマットではない
組み合わせ推奨OP 🔄
- FreeD In CHOP — 受信側ペア、トラッカー入力を中継再送する用途で対組み合わせ
- Null CHOP — Camera COMP 出力の中継点として送信前に挿入
- Math CHOP — 座標系オフセットや単位変換を送信前に適用
- Filter CHOP — ジッタの多いトラッカー値を送信前にスムージング
- Trail CHOP — 送信中のチャンネル値を時間軸で可視化してデバッグ
前処理・後処理CHOP 🎯
Info CHOP情報 📊
FreeD Out 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 Address と Network Port が受信側の listen 設定と一致しているか確認
- ファイアウォールで UDP ポートがブロックされていないか確認、必要なら受信ポートを許可
- 複数 NIC 環境では Local Address で送信元 NIC を明示指定
❌ Problem: マルチキャストで一部の受信機にしか届かない
✅ Solution:
- ルータ/スイッチが IGMP snooping を有効にしているか確認
- Network Address がマルチキャスト範囲(
224.0.0.0〜239.255.255.255)内か確認 - 受信側マシンが同じマルチキャストグループに join しているか確認
- VLAN を跨ぐ場合は L3 スイッチでマルチキャストルーティング設定が必要
❌ Problem: 受信側のカメラ姿勢が逆さま/座標がズレる
✅ Solution:
- TouchDesigner と受信側で座標系(Y-up / Z-up、左手系/右手系)の規約が異なる可能性があるため前段に Math CHOP を入れて軸を反転・スワップ
- 単位(m / cm / mm)の差異を Multiply で調整
- FOV のラジアン/ディグリー差異を Range 変換で揃える
❌ Problem: 高フレームレートで送信側 CPU 負荷が上がる
✅ Solution:
- 送信フレームレートを下げる(前段に Resample CHOP を挿入してダウンサンプリング)
- Active を必要なときだけオンに切替えてアイドル時の送信を抑制
- Local Address で専用 NIC を指定して他のネットワーク通信と分離
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

