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

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

Kinect Azure CHOP のボディトラッキング機能を示す図

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

概要 📖 – Kinect Azure ボディトラッキング

Kinect Azure CHOPは、Kinect Azure センサーで取得したスケルトン情報をチャンネルとして出力する CHOPです。Kinect Azure TOP から取り込んだ画像を入力に、最大プレイヤー数ぶんのジョイント位置・回転・信頼度を生成します。

主な用途 🎯

  • プレイヤースケルトンのジョイント位置・回転をリアルタイム取得
  • ワールド空間およびカラー画像・深度画像 UV 座標でのスケルトン座標出力
  • ボーン回転(相対・絶対)とボーン長によるスケルトン構造の数値化
  • ジョイント信頼度(Bone Confidence)に基づく追従品質判定
  • IMU センサー値(温度・加速度・回転)の取得とジェスチャー駆動制御

データフロー 🔄

入力: Kinect Azure TOP(カメラ取り込み)

ボディトラッキング処理(プレイヤー検出 / ジョイント推定)

チャンネル展開(位置・回転・信頼度 / IMU)

出力: スケルトンチャンネル群

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Kinect Azure Page 📋

デバイス接続 🎛️

Active .active
– ボディトラッキングデータの取り込みを有効/無効にするトグル
Kinect Azure TOP 側も active でないとデータは届きません

Kinect Azure TOP .top 📷
– カメラに接続している Kinect Azure TOP のパス
– この TOP からカラー / デプスのストリームが取り込まれます

Max Players .maxplayers 👥
– 同時にトラッキングするプレイヤースケルトンの最大数
– 検出数が足りない場合、余った分のチャンネルは 0 で埋められます

ボーン回転・長さ 🦴

Relative Bone Rotations .relbonerotations 🔄
– 各ボーンの親ボーンに対する相対回転を XYZ 軸まわり degree で出力
– FK 制御や階層スケルトン駆動に向いた回転表現

Absolute Bone Rotations .absbonerotations 🌐
– 各ボーンのワールド基準の絶対回転を XYZ 軸まわり degree で出力
– IK ターゲット駆動やワールド空間整合の用途に有用

Bone Lengths .bonelengths 📏
– 各ボーンの長さ(親ジョイントからの距離)チャンネルを出力
– ジョイント階層は Kinect Azure SDK のドキュメントを参照

座標空間オプション 🗺️

World Space Positions .worldspace 🌍
– 各ボーンのワールド空間座標(メートル単位)を出力
– 3D シーンへのマッピングや空間距離計算に使用

Color Image Positions .colorspace 🎨
– カラー画像の UV 座標系でのスケルトン位置を出力
– 映像合成やオーバーレイ表示に使用

Depth Image Positions .depthspace 🌫️
– 深度画像の UV 座標系でのスケルトン位置を出力
– デプスベースの視覚効果やマスキングに使用

Aspect Correct UVs .aspectcorrectuv 🔲
– 画像空間位置をカメラのアスペクト比に合わせてスケール
– 縦横比の歪み補正用

Mirror Image V Positions .flipimagev ↕️
– 画像空間位置の v 座標を反転(0,0 を左上にする)
– バージョン 2020.44130 以前のデフォルト挙動と同一

Mirror U Positions .flipskelu ↔️
– Color / Depth Image Positions の U 座標を鏡反転
– 元画像をミラー表示している場合の整合用

信頼度・IMU 📡

Bone Confidence .confidence 🎯
– 各ジョイントの位置・回転の信頼度を 0〜3 の整数で出力
– 値の意味は以下の通りです:

  • 0: 範囲外(カメラから遠すぎる)
  • 1: 見えていない(隣接ジョイントから推定)
  • 2: 中程度の信頼度(現状の最高値)
  • 3: 高信頼度(将来予約)

IMU Channels .imuchans 🌡️
– カメラ内蔵 IMU センサーの温度・加速度・回転データを出力
– 装着型用途やジェスチャー検出の補助情報として活用


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 アバター駆動 🕺

Kinect Azure TOP → Kinect Azure CHOP (World Space + Relative Bone Rotations) → Constraint COMP → Skeleton Geo
  1. Kinect Azure TOP でカメラ映像を取り込み
  2. Kinect Azure CHOP の top パラメータに TOP のパスを指定
  3. worldspacerelbonerotations を有効化
  4. ジョイントチャンネルを Constraint COMP 経由で 3D アバターのリグに流し込みリアルタイム駆動

Example 2: プレイヤー位置に応じたインタラクティブ照明 💡

Kinect Azure CHOP (World Space, Max Players=2) → Math CHOP (Range mapping) → Light Intensity
  1. maxplayers を 2 に設定して 2 人ぶんを取得
  2. worldspace でメートル単位のジョイント座標を出力
  3. Math CHOP で X / Z 座標を 0〜1 に正規化
  4. ステージ上の照明強度・色温度にマッピング

Example 3: 信頼度に基づくジェスチャー判定 🎯

Kinect Azure CHOP (Bone Confidence + World Space) → Logic CHOP → Trigger CHOP
  • confidence を有効化し各ジョイントの信頼度チャンネルを出力
  • Logic CHOP で confidence ≥ 2 のジョイントのみ採用
  • ジェスチャー条件(手の高さ等)が成立した瞬間に Trigger CHOP でイベント発火

関連オペレータ 🔗

類似機能OP 🔍

  • Kinect CHOP — 旧世代 Kinect v2 用のスケルトン取得 CHOP
  • Leap Motion CHOP — 手指トラッキングに特化したセンサー入力 CHOP

組み合わせ推奨OP 🔄

  • Math CHOP — ジョイント座標を演出用レンジへ正規化
  • Filter CHOP — ジッタの多いジョイント値を平滑化
  • Logic CHOP — 信頼度チャンネルの閾値判定
  • Analyze CHOP — ジョイント値の統計(平均・最大・ピーク)抽出
  • Trigger CHOP — ジェスチャー成立時のエンベロープ起動

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Kinect Azure 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: チャンネルがすべて 0 になる
✅ Solution:

  • active がオンになっているか確認
  • top パラメータが対応する Kinect Azure TOP を正しく指しているか確認
  • Kinect Azure TOP 側も active で、デバイスが認識されているかをデバイスマネージャで確認

❌ Problem: ジョイント座標がジッタで暴れる
✅ Solution:

  • 後段に Filter CHOP(Boxcar / Gaussian)を入れて平滑化
  • confidence が低いジョイントは Logic CHOP で除外
  • 光学条件(強い逆光・赤外干渉)を改善し物理的にトラッキング精度を上げる

❌ Problem: 画像 UV 座標が反転している / 縦横比がおかしい
✅ Solution:

  • flipimagev をオン/オフ切替して原点位置(左上 / 左下)を合わせる
  • flipskelu で U 座標のミラー反転状態を映像と一致させる
  • aspectcorrectuv をオンにしてカメラのアスペクト比に合わせてスケールする

❌ Problem: プレイヤーが増えても余分なチャンネルが 0 のまま
✅ Solution:

  • maxplayers の上限まで自動でジョイントが埋まる仕様、検出数が上限未満なら余りは 0 で正常
  • 実際の検出数は Info CHOPconfidence 経由で間接的に判定
  • 視野角・距離(カメラからの距離が遠すぎないか)を見直す

参考資料 📚

その他 🔗

公式リソース 📖

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