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

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

Body Track CHOP の AI 骨格トラッキング機能を示す図

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

概要 📖 – AI ボディトラッキングと骨格キーポイント取得

Body Track CHOPは、TOP に入った映像から AI モデルで人体を検出し、骨格キーポイントの位置・信頼度・回転値をチャンネル化する CHOPです。NVIDIA Maxine SDK を用いた人体検出を行い、UV または XYZ 座標でのキーポイント出力、最大 8 人までのマルチパーソントラッキング、フレームレベルでの ID 永続化に対応します。

主な用途 🎯

  • NVIDIA Maxine SDK を用いた AI ベースの人体検出と骨格トラッキング
  • キーポイント (関節) の UV / XYZ 座標取得によるリアルタイム骨格データ抽出
  • バウンディングボックスと信頼度値による複数人トラッキング
  • ダンス・パフォーマンスのモーションキャプチャ用途でのインタラクティブ演出
  • ジェスチャー認識・姿勢推定を利用した体験型インスタレーション制作

データフロー 🔄

入力: TOP の画像ストリーム

AI モデル (NVIDIA Maxine) による人体検出

キーポイント抽出と回転計算

出力: バウンディングボックス・キーポイント座標・信頼度・回転値のチャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

BodyTrack Page 📋

基本設定 🎛️

Body Track CHOP の有効化と AI モデル・入力ソース指定

Active .active
– ボディトラッキング機能を有効化するトグル
– オフのときは AI 推論が走らずチャンネル出力は更新されない

Model Folder .modelfolder 📁
– 人体検出に使用する AI モデルファイルの格納フォルダパス
– デフォルトは Config/Models フォルダを参照

TOP .top 🖼️
– ボディトラッキングの入力画像となる TOP オペレータのパス
– Video Device In TOP / Movie File In TOP / NDI In TOP 等を指定

High Performance .highperformance
– 品質を犠牲にしてパフォーマンスを優先するモード
– Keypoints が有効なときのみ利用可能

出力チャンネル制御 📤

出力するチャンネル種別を切り替えるトグル群

Bounding Boxes .bbox 🟦
– 検出した人体のバウンディングボックスをチャンネル出力
– 中心位置の u / v、ボックスの width / height を入力画像左下原点で出力

Bounding Box Confidence .bboxconfidence 📊
– AI モデルが人体を検出した確信度を 0–1 で出力するチャンネル
– 値が高いほど検出の信頼性が高い

Keypoints .keypoints 🦴
– 骨格キーポイントの位置をチャンネル出力
– Body 3D の設定により UV 座標または XYZ 座標を切り替え

Keypoints Confidence .keypointsconfidence 📈
– 各キーポイントの検出確信度を 0–1 で出力するチャンネル
– キーポイントごとに信頼度値を持つ

Rotations .rotations 🔄
– 各キーポイントの rx / ry / rz 回転値を出力するチャンネル
– (0,0,0) はカメラ正面方向、値域は ±180 度

座標系・ビュー設定 📐

出力座標系の次元・カメラ視野・反転制御

Body 3D .body3d 🧊
– キーポイント有効時に UV ではなく XYZ 座標で出力
– 3D 空間での骨格再構築・3D ビジュアライズに利用

Field of View (Horz) .fov 👁️
– Body 3D 有効時、入力画像を撮影したカメラの水平視野角
– XYZ 座標の奥行き計算に使用

Aspect Correct UVs .aspectcorrectuv 📏
– u / v 座標を入力画像のアスペクト比に合わせてリスケール
– UV を 3D 座標として扱う場合に有用

Mirror U Positions .flipskelu 🪞
– u 座標を反転 (1.0 → 0.0、0.0 → 1.0)
– 鏡像表示・前面カメラ用途で使用

マルチパーソン追跡 👥

複数人トラッキングと ID 永続化の制御

People Tracking .peopletracking 👤
– 入力画像内の複数人を追跡するモード
– 各人物に永続 ID が割り当てられ Bounding Boxes トグル経由で取得可能

Max Bodies .maxbodies 🔢
– Maxine SDK が同時追跡する最大人数の上限値
– 上限を超えた新規ターゲットは破棄される
– CHOP の出力チャンネル数には影響しない
– パラメータ自体に上限はないが、現行 SDK は最大 8 人まで追跡可

Shadow Tracking Age .shadowtrackingage 👻
– 一度追跡した人体が検出されなくなった後、追跡を破棄するまでのフレーム数
– デフォルトは 90 フレーム

Probation Age .probationage
– 検出された人体が「正式な追跡対象」と認められるまでの猶予フレーム数
– この期間を過ぎてから ID が割り当てられる
– 数フレームだけ検出される偽陽性の除去に役立つ
– デフォルトは 10 フレーム


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: リアルタイム骨格ビジュアライズ 🦴

Video Device In TOP → Body Track CHOP (Keypoints) → Geometry COMP → 3D 描画
  1. Video Device In TOP でカメラ映像を取得
  2. Body Track CHOP の TOP パラメータに Video Device In TOP を指定
  3. Keypoints と Body 3D を有効化して XYZ 座標を取得
  4. Keypoint チャンネルを Geometry COMP の Instancing に接続して骨格を 3D 描画

Example 2: ダンスパフォーマンスのモーション駆動演出 💃

Movie File In TOP → Body Track CHOP (Bounding Boxes + Keypoints) → Math CHOP → Particle System
  1. Movie File In TOP でダンス映像を入力
  2. Body Track CHOP で人体の中心位置とキーポイント座標を取得
  3. Math CHOP で座標を正規化しパーティクルの放出位置に変換
  4. ダンサーの動きに連動したリアクティブな映像演出を構築

Example 3: 複数人参加型インスタレーション 👥

NDI In TOP → Body Track CHOP (People Tracking + Max Bodies=8) → Select CHOP → ID別音響制御
  1. NDI In TOP で展示空間のカメラ映像を受信
  2. People Tracking を有効化、Max Bodies を 8 に設定
  3. Select CHOP で各 ID の Bounding Box を分離
  4. 各参加者の位置に応じて空間音響を制御

関連オペレータ 🔗

類似機能OP 🔍

組み合わせ推奨OP 🔄

  • Math CHOP — キーポイント座標を後段で正規化・スケーリング
  • Filter CHOP — AI 推論ノイズの平滑化
  • Lag CHOP — キーポイントの動きにスムーズな遅延補間
  • Select CHOP — 特定 ID・特定キーポイントだけを抽出
  • Trail CHOP — キーポイント位置の時間履歴を可視化

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Body Track 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 がオンか確認、TOP パラメータに正しい入力 TOP を指定しているか確認
  • Model Folder パスが正しい AI モデル格納先を指しているか確認
  • 入力画像の解像度・明るさを確認、被写体が画面内に収まっているかチェック

❌ Problem: キーポイント出力がガクつく・ノイズが多い
✅ Solution:

  • 後段に Filter CHOP を入れて平滑化
  • Lag CHOP で時間方向の補間を追加
  • Probation Age を増やして偽陽性検出を抑制

❌ Problem: パフォーマンスが重い・フレームレートが低下する
✅ Solution:

  • High Performance をオンにして品質を犠牲に速度優先
  • 不要な出力チャンネル(Rotations / Keypoints Confidence 等)をオフにして計算量削減
  • Max Bodies を実用範囲に絞り、追跡対象人数を制限

❌ Problem: 複数人トラッキングで ID が頻繁に切り替わる
✅ Solution:

  • Shadow Tracking Age を増やして一時的な検出失敗での ID リセットを防ぐ
  • Probation Age を調整し、安定的な検出のみに ID を付与
  • カメラ位置を見直し、被写体の重なり・遮蔽を減らす

参考資料 📚

その他 🔗

公式リソース 📖

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