
概要 📖 – OptiTrack モーションキャプチャサーバーからのリアルタイムデータ受信
OptiTrack In CHOPは、OptiTrack Motive サーバーから NatNet 経由でモーションキャプチャデータを受信しチャンネルとして出力する CHOPです。Multicast/Unicast の両モードに対応し、リジッドボディ・スケルトン・マーカー等のトラッキング情報を低遅延でリアルタイム取得できます。
主な用途 🎯
- OptiTrack Motive サーバーからのリアルタイムモーションキャプチャデータの取得
- リジッドボディ・スケルトン・マーカーの位置/姿勢を CHOP チャンネルとして受信
- 舞台演出・VR/AR・バーチャルプロダクションでのトラッキング連動演出
- NatNet プロトコル経由でのマルチキャスト/ユニキャスト通信による多クライアント分配
- 外部トラッカーデータと TouchDesigner ジオメトリ/カメラの同期制御
データフロー 🔄
入力: OptiTrack Motive サーバー (NatNet プロトコル)
↓
Connection Type 選択 (multicast/unicast)
↓
Network/Local Address + Command/Data Port 設定
↓
Rate でクエリ頻度指定
↓
出力: リジッドボディ/スケルトン/マーカーの位置・姿勢チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
OptiTrack In Page 📋
Connection Type .connectiontype 🌐
OptiTrack サーバーとの接続モードを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Multicast | .mutlicast |
マルチキャスト通信。サーバーがマルチキャストアドレスをネゴシエートし複数クライアントに分配可能 |
| Unicast | .unicast |
ユニキャスト通信。1 対 1 の専用接続で確実にデータを受信 |
※ 注意: Connection Type はサーバー側 (Motive) の設定と一致させる必要があります。サーバー側が Multicast 配信なのにクライアントを Unicast にすると接続できません。
ネットワーク・通信設定 🔌
Active .active 🟢
– オンの間 CHOP はサーバーから情報を受信し続ける
– オフ時は受信を停止し更新が行われない (一時停止用途)
Network Address .netaddress 📡
– サーバーコンピュータの IP アドレスまたはコンピュータ名 (例: 100.123.45.78 / ホスト名)
– 同一マシン上なら localhost を指定可
– Multicast モードでもサーバーのアドレスを指定 (マルチキャストアドレスではない、サーバーが自動でネゴシエート)
Local Address .localaddress 🌐
– 複数の NIC を持つマシンで、通信に使用するローカル IP アドレスを指定
– 例: WIFI 経由なら 192.168.0.100 / 192.168.0.*、Ethernet 経由なら 24.100.200.50
– 単一ネットワーク接続のマシンでは空欄で問題ない
Command Port .commandport 🎚️
– サーバーのコマンドネットワークポート
– Motive 側の設定値と一致させる
Data Port .dataport 📨
– サーバーのデータポート
– トラッキングデータが流れるポート、Motive 側の設定値と一致させる
Rate .rate 📐
– データをクエリする頻度 (samples/sec)
– サーバー側のキャプチャレート (一般的に 120/240Hz) に合わせる
Reset .resetpulse 🔄
– このノードのデータをリセットするパルスパラメータ
– サーバー再起動後や接続トラブル時に手動で初期化する用途
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: リジッドボディトラッキングで 3D オブジェクトを駆動 🎯
OptiTrack Motive サーバー → OptiTrack In CHOP → Select CHOP → Geometry COMP (Transform)
- Motive 側でリジッドボディを定義し NatNet ストリーミングを有効化
- OptiTrack In CHOP の Network Address にサーバーの IP、Command/Data Port を Motive 設定値に合わせる
- Active をオンにして受信開始、Connection Type をサーバー側設定と一致させる
- Select CHOP で目的のリジッドボディの位置 (tx/ty/tz) と姿勢 (rx/ry/rz) を抽出
- Geometry COMP の Transform パラメータに Export して 3D オブジェクトを実物体に追従させる
Example 2: スケルトンキャプチャでバーチャルアバターを駆動 🕺
OptiTrack Motive (Skeleton) → OptiTrack In CHOP → Filter CHOP → Bone COMP / Geometry COMP
- Motive 側でアクターをキャリブレーションしスケルトンを定義
- OptiTrack In CHOP でスケルトンの全関節データを受信
- Filter CHOP の Gaussian や Boxcar でジッターを平滑化
- 後段でリグの各ボーン回転に Export しキャラクターをリアルタイム駆動
Example 3: Multicastで複数TDへ分配 📡
OptiTrack Motive (Multicast) → OptiTrack In CHOP (Client A/B/C) → 各演出系
- Motive 側のストリーミング設定を Multicast に変更
- 各クライアント TD の OptiTrack In CHOP で Connection Type を「Multicast」に設定
- Network Address は全クライアント共通でサーバーの IP を指定 (マルチキャストアドレスは自動ネゴシエート)
- 複数 PC で同じトラッキングデータを共有しマルチプロジェクション/分散レンダリングに活用
Example 4: マーカークラウドを点群として可視化 ✨
OptiTrack In CHOP (Markers) → CHOP to SOP → Particle System / Instancing
- OptiTrack In CHOP でラベル無しマーカーを含む全マーカー位置を受信
- CHOP to SOP でマーカーの xyz チャンネルを点群に変換
- Instancing で各マーカー位置にジオメトリを配置しビジュアライズ
- 舞台/インスタレーションでパフォーマーの動きを点群表現として演出
関連オペレータ 🔗
類似機能OP 🔍
- Kinect CHOP — Kinect センサー経由のボディトラッキングデータ受信
- OSC In CHOP — OSC プロトコル経由の汎用トラッキング/コントロールデータ受信
組み合わせ推奨OP 🔄
- Select CHOP — 受信した多数のチャンネルから特定のリジッドボディ/関節のみを抽出
- Filter CHOP — トラッキングデータのジッター/ノイズを平滑化
- Math CHOP — 座標系変換 (スケール/オフセット) や単位換算
- Lag CHOP — トラッキングロスト時の値補間とスムーズな遷移
- Trail CHOP — 受信したトラッキングデータを時系列バッファとして可視化
前処理・後処理CHOP 🎯
Info CHOP情報 📊
OptiTrack 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 Address にサーバー (Motive) の正しい IP アドレスまたはホスト名が設定されているか確認 (同一マシンなら
localhost) - Connection Type が Motive 側のストリーミング設定 (Multicast/Unicast) と一致しているか確認
- Command Port / Data Port が Motive のストリーミング設定と一致しているか確認
- ファイアウォール/セキュリティソフトが NatNet 通信ポートをブロックしていないか確認
❌ Problem: 受信できるがデータがカクつく/更新が遅い
✅ Solution:
- Rate を Motive 側のキャプチャレート (120/240Hz 等) に合わせて引き上げる
- 後段にFilter CHOPの Gaussian や Boxcar を入れて時間方向のジッター除去
- Lag CHOPでロスト時の値補間を追加し急峻な変化を回避
- ネットワーク経路を有線 Ethernet にし、可能なら Motive サーバーと専用 LAN セグメントで接続
❌ Problem: 複数の NIC を持つマシンで意図しない経路で通信される
✅ Solution:
- Local Address に通信に使用する NIC の IP アドレスを明示的に指定 (例: WIFI なら
192.168.0.100、Ethernet なら24.100.200.50) 192.168.0.*のようなワイルドカードで NIC を範囲指定することも可能- OS のルーティングテーブルを確認し OptiTrack サブネットへの経路が正しい NIC に向いているか確認
❌ Problem: リジッドボディ/スケルトンの ID が変わってチャンネル名が不安定
✅ Solution:
- Motive 側でリジッドボディ/スケルトンに固定 ID と一意の名前を設定して保存
- 後段でSelect CHOPを使い名前ベース (ワイルドカード可) で必要なチャンネルを抽出
- Rename from / Rename to (Common Page) で受信側でチャンネル名を正規化
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

