
概要 📖 – wrnchAI による全身・顔・手のリアルタイム姿勢推定
WrnchAI CHOPは、TOP に入力されたカメラ映像から全身・顔・手の姿勢推定を行い、関節点座標をチャンネルで出力する CHOPです。wrnchAI エンジン (要別ライセンス) を TouchDesigner Pro 内で駆動し、2D / 3D / IK 形式の関節点を最大複数人ぶん同時に取得します。
主な用途 🎯
- カメラ映像からの全身姿勢推定(関節点を 2D / 3D で取得)
- 逆運動学 (IK) チャンネル出力による 3D キャラクタリギング・モーションキャプチャ
- 顔の位置・バウンディングボックス取得(顔向き検出・ARフィルタ)
- 手のランドマーク追跡によるジェスチャー UI・ハンドインタラクション
- 複数人マルチプレイヤー追跡(p1, p2, p3… のチャンネルプレフィックスで分離)
データフロー 🔄
入力: TOP(カメラ映像 / 動画)
↓
wrnchAI エンジン(GPU 推論)
↓
関節点 / 顔 / 手のチャンネル生成
↓
p1, p2... プレフィックス付与
↓
出力:tx,ty,tz/u,v/rx,ry,rzチャンネル群
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page ⚙️
ライセンス・モデル設定 🔑
wrnchAI License .license 🔑
– wrnchAI アカウントから取得した Edge License Key を入力
– wrnchAI 本家からの別ライセンス契約が前提(TouchDesigner ライセンスには含まれない)
Model Folder .modelfolder 📁
– 学習済みモデル一式が入ったフォルダのパス
– wrnchAI 公式 Quickstart Guide に従って配置したモデルフォルダを指す
GPU Device .gpu 🖥️
wrnchAI の推論を実行する GPU の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default | .default |
TouchDesigner が現在使用している GPU と同じ GPU で推論を実行 |
入力 TOP 📺
TOP .top 📺
– 姿勢推定の対象となる映像ソース TOP を指定
– Video Device In TOP(Web カメラ)や Movie File In TOP(動画ファイル)など任意の映像 TOP が利用可能
Body 3D .body3d 🧍
3D 関節点チャンネルの有効化:
- Body 3D: オンで
tx,ty,tzの 3D 関節点チャンネルが追加される(深度推定込み)
Body 2D .body2d 🚶
2D 関節点チャンネルの有効化:
- Body 2D: オンで
u,vの 2D 画面座標チャンネルが追加される(軽量・高速)
Body 3D IK .body3dik 🦴
IK チャンネルの有効化:
- Body 3D IK: オンで
tx,ty,tz,rx,ry,rzおよび roll チャンネルが追加され、3D キャラクタリギングに直接利用可能
Face Bounds .facebounds 🔲
顔バウンディングボックスの有効化:
- Face Bounds: オンで顔の中心位置
u,vと幅・高さwidth,heightチャンネルが追加される
Face .face 😀
顔ランドマークの有効化:
- Face: オンで顔の各特徴点(目・鼻・口など)の
u,vチャンネルが追加される
Hands Bounds .handsbounds ✋
手バウンディングボックスの有効化:
- Hands Bounds: オンで手の中心位置
u,vと幅・高さwidth,heightチャンネルが追加される
Hands .hands 🖐️
手ランドマークの有効化:
- Hands: オンで手の各関節点(指先・指の関節)の
u,vチャンネルが追加される
Max Players .maxplayers 👥
同時追跡可能な人数の上限設定
Max Players .maxplayers 👥
– 同時追跡する最大人数を指定。各人に p1, p2, p3… のチャンネルプレフィックスが付与される
– パラメータスライダは 10 までだが、数値を直接入力すれば 10 人以上も追跡可能
Aspect Correct UVs .aspectcorrectuv 📐
アスペクト比補正の有効化:
- Aspect Correct UVs: オンで
u,v値が入力 TOP のアスペクト比を考慮して調整される。非正方形の入力(16:9 など)で位置が映像と揃わない場合に有効化
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: Web カメラからの全身モーションキャプチャ 🎥
Video Device In TOP → WrnchAI CHOP (Body 3D IK) → Geometry COMP のリグ
Video Device In TOPで Web カメラ映像を取得- WrnchAI CHOP の TOP パラメータに上記 TOP を指定
- Body 3D IK をオンにして
tx,ty,tz,rx,ry,rzチャンネルを生成 - Geometry COMP のキャラクタリグに各関節チャンネルをエクスポートして全身モーションキャプチャを実現
Example 2: ジェスチャー UI(手位置で UI 要素を操作) 🖐️
Video Device In TOP → WrnchAI CHOP (Hands) → Math CHOP → UI position
- Hands をオンにして手のランドマーク(
u,v)を取得 Math CHOPで画面解像度にマッピング(From [0, 1] To [0, width])- 前段に
Filter CHOPを入れて手ぶれをスムージング - UI 要素の position パラメータにエクスポートしてジェスチャー操作を実現
Example 3: 複数人ダンス映像での同時追跡 👥
Movie File In TOP → WrnchAI CHOP (Max Players=4) → Select CHOP per player → Visualization
Movie File In TOPでダンス映像を読み込む- Max Players を 4 に設定して 4 人分の関節を同時追跡
Select CHOPでp1*,p2*… を抽出し人物ごとに分離- 各人物のチャンネルを独立にビジュアライズして同時追跡を実現
関連オペレータ 🔗
類似機能OP 🔍
- Kinect CHOP — Kinect センサーの骨格データを取得(深度センサー前提、wrnchAI は RGB カメラのみで動作)
組み合わせ推奨OP 🔄
- Filter CHOP — 関節座標のジッターを時間方向に平滑化
- Math CHOP —
u,vを画面解像度にスケーリング - Select CHOP —
p1*,p2*等のパターンで特定プレイヤーのチャンネルを抽出 - CHOP to SOP — 関節点をジオメトリ頂点として可視化
- Geometry COMP — IK チャンネルをキャラクタリグにエクスポート
前処理・後処理CHOP 🎯
Info CHOP情報 📊
WrnchAI 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:
- wrnchAI License Key が wrnchAI アカウントの Edge License Key と一致しているか確認
- Model Folder が wrnchAI Quickstart Guide に従ったフォルダ構成になっているか確認
- GPU Device がアクティブな GPU を指しているか、TouchDesigner が CUDA / GPU 対応版で起動しているか確認
❌ Problem: 関節点の位置が映像と揃わない(横長映像で u, v がずれる)
✅ Solution:
- Aspect Correct UVs をオンにして入力 TOP のアスペクト比を反映
- 後段で Math CHOP を使って
u,vを画面解像度に明示的にスケーリング - 入力 TOP のクロップ・リサイズ前後で座標基準がズレていないか確認
❌ Problem: 関節点がフレーム毎に細かくジッター(震え)する
✅ Solution:
- 後段に Filter CHOP を入れて時間方向のスムージングを適用
Lag CHOPで遅延付きの慣性的なフォローを追加- 入力映像の照明・コントラスト・解像度を改善して推定精度を上げる
❌ Problem: Max Players を増やすと FPS が大きく下がる
✅ Solution:
- GPU の推論負荷は人数に比例して増えるため、Max Players は実際に必要な最少人数に設定
- Body 3D IK / Face / Hands など使わないトラッキング項目はオフにして GPU 負荷を削減
- 入力 TOP の解像度を下げる(例: 1080p → 720p)ことで推論時間を短縮
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group


