
概要 📖 – Kinect センサーによる骨格・トラッキングデータ取得
Kinect CHOPは、Kinect センサーから骨格・顔・インタラクションデータを取得しチャンネルとして出力する CHOPです。v1 / v2 ハードウェアの切替、スケルトン・顔・インタラクションのモード選択、ジョイントスムージングまでを 1 オペレータで完結します。
主な用途 🎯
- Kinect センサーから骨格(スケルトン)のジョイント位置をチャンネルとして取得
- v1 / v2 ハードウェアの切替によるセンサー対応(センサーごとの仕様差を吸収)
- ボーンの相対回転・絶対回転・長さの取得(リギング・キャラクター制御の入力)
- 顔トラッキング・インタラクション(grip / press)データの取得
- ジョイント位置のスムージング(Jitter Radius / Max Deviation Radius によるノイズ除去)
データフロー 🔄
入力: Kinect センサー(v1 / v2)
↓
Skeleton / Interactions 等のトラッキングモード選択
↓
Smoothing 設定でジッター除去
↓
出力: ジョイント位置・回転・状態のチャンネル群
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Kinect Page 📋
センサー基本設定 🎛️
Active .active ✅
– オンにすると Kinect センサーからのデータ取得を開始
– オフでセンサー入力を停止(リソース節約用途)
Hardware Version .hwversion 🎛️
Kinect v1 と v2 のいずれを使用するかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Version 1 | .version1 |
Kinect v1 ハードウェアを使用 |
| Version 2 | .version2 |
Kinect v2 ハードウェアを使用 |
Skeleton .skeleton 📁
骨格トラッキングのモード選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Full | .full |
全身の骨格をトラッキング |
| Seated | .seated |
座位(上半身のみ)の骨格をトラッキング |
| Off | .off |
骨格トラッキングを行わない |
プレイヤー・センサー設定 🎯
Sensor .sensor 🎛️
– 使用する Kinect センサーを選択
– Kinect v1 のみで利用可(v2 では選択不要)
Max Players .maxplayers 👥
– トラッキング対象とするプレイヤーの最大数
– 同時検出する人数の上限値を設定
Interactions .interactions ✋
– インタラクション(grip / press)データの取得を有効化
– p[1-2]/hand_l_* / p[1-2]/hand_r_* 形式のチャンネルが追加出力される
– 注: 深度解像度が 640×480 に固定され、Near Depth Mode が自動で設定される
ボーン関連出力 📈
Relative Bone Rotations .relbonerotations 🔄
– 各ボーンの相対回転(rx / ry / rz)チャンネルを出力
– 1 つ前のジョイントを基準とした回転値
Absolute Bone Rotations .absbonerotations 🔄
– 各ボーンの絶対回転(rx / ry / rz)チャンネルを出力
– 世界座標系を基準とした回転値
Bone Lengths .bonelengths 📏
– 各ボーンの長さをチャンネルとして出力
– キャラクターのリギング情報として活用
Unroll Bone Values .unrollbones 🔁
– 回転値を不連続点(wrap-around)が無い形で出力
– 0〜360 で巻き戻る代わりに 0 から無限に増加する形に展開
– 後段の Filter / Lag 等でブレンド・スムージングする際に必須
位置出力(座標系) 📐
World Space Positions .worldspace 🌍
– トラッキングポイントの世界座標系での位置を出力
– 各ポイントに tx / ty / tz の 3 チャンネルが追加
Color Space Positions .colorspace 🎨
– カラーカメラを基準とした画像空間座標で位置を出力
– 各ポイントに u / v / tz の 3 チャンネルが追加
– Kinect v2 のみで利用可
Depth Space Positions .depthspace 📏
– 深度カメラを基準とした画像空間座標で位置を出力
– 各ポイントに depthu / depthv / tz の 3 チャンネルが追加
– Kinect v1 / v2 ともに利用可
顔・状態・モード設定 ✨
Face Tracking .facetracking 😀
– 検出された顔のトラッキングチャンネルを出力
– 顔の位置・回転情報を取得
Status Channels .statuschans 🚦
– 追加のステータスチャンネルを出力
– ジョイントごとに tracked サフィックス付きチャンネルでトラッキング状態を報告
– センサー範囲外に出ていないかを示す clipped チャンネルも出力
Near Depth Mode .neardepthmode 🔍
– スケルトントラッキングの近距離モードを有効化
– 深度カメラがデフォルト 80cm から 40cm まで近づいた被写体を認識可能になる
Flip Skeleton U Direction .flipskelu 🔄
– スケルトンチャンネルの u 軸を反転
– カメラのミラー映像を使う場合に有効
Flip Face U Direction .flipfaceu 🔄
– 顔チャンネルの u 軸を反転
– カメラのミラー映像を使う場合に有効
Smoothing Page 🎚️
ジョイントスムージング設定 🎚️
Joint Smoothing .jointsmoothing ✅
– Kinect 内蔵のジョイントトラッキングスムージングを有効化
– 下記のスムージングパラメータが有効になる
Smoothing .smoothing 🎚️
– スムージングの強さ(0.0 〜 1.0)
– 値を上げるほど滑らかになるが、応答性が下がりレイテンシが増加
– 0 を渡すと生データがそのまま返る
Correction .correction 🎯
– 生データへの補正速度(0.0 〜 1.0)
– 低い値では補正が遅く滑らか、高い値では生データに素早く追従
Prediction .prediction 🔮
– 未来方向の予測フレーム数(0 以上)
– 0.5 を超えると速い動きでオーバーシュートが発生しやすい
– Max Deviation Radius を小さく設定するとオーバーシュートを抑えられる
Jitter Radius .jitterrad 📐
– ジッター除去の半径(メートル単位)
– この半径を超えるジッターは半径内にクランプされる
Max Deviation Radius .maxdevrad 📐
– フィルタ後の値が生データから逸脱できる最大半径(メートル単位)
– この半径を超える逸脱は生データの方向にクランプされる
Rotation Smoothing .rotationsmoothing 🔄
– 回転値に対するスムージングアルゴリズムを有効化
– ジョイントスムージング同様、強度を上げるとレイテンシが増加
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: 全身の骨格でキャラクターを駆動 🕺
Kinect CHOP (Skeleton: Full) → Filter CHOP → Constraint / Bone (CHOP Export) → 3D キャラクター
- Kinect CHOP の Hardware Version を v2、Skeleton を Full に設定
- Relative Bone Rotations と World Space Positions を有効化
- 後段に Filter CHOP を配置してジッターをスムージング
- 出力チャンネルを 3D キャラクターのボーン回転・位置パラメータへ Export
Example 2: 手の位置でビジュアルエフェクトを操作 ✋
Kinect CHOP (Interactions) → Math CHOP (Range) → CHOP to TOP / Particle System
- Interactions を有効化し p[1-2]/hand_l_* / hand_r_* チャンネルを取得
- Math CHOP の From Range / To Range で正規化座標を画面座標へマッピング
- CHOP to TOP で値をシェーダ uniform に渡し、パーティクルやエフェクトの中心に反映
Example 3: 顔位置で UI / カメラを追従 😀
Kinect CHOP (Face Tracking) → Lag CHOP → Camera COMP / UI Position
- Face Tracking を有効化し顔のトラッキングチャンネルを取得
- Lag CHOP で時間方向の遅延スムージングを掛けてカメラ酔いを防止
- 出力をカメラ COMP の translate / rotate や UI 要素の位置パラメータに Export
Example 4: プレイヤー範囲外検出によるアラート 🚦
Kinect CHOP (Status Channels) → Logic CHOP → Trigger CHOP → Alert
- Status Channels を有効化し clipped / tracked チャンネルを取得
- Logic CHOP で「clipped > 0」の条件を判定
- Trigger CHOP でアラート音や視覚通知を発火
- プレイヤーがセンサー範囲外に出た瞬間を検知
関連オペレータ 🔗
類似機能OP 🔍
- Kinect Azure CHOP — Azure Kinect 用の後継 CHOP、最新ハードウェアに対応
- Leap Motion CHOP — 手指の高精度トラッキングに特化(骨格ではなく手指中心)
- OpenVR CHOP — VR ヘッドセット・コントローラのトラッキング情報取得
組み合わせ推奨OP 🔄
- Filter CHOP — ジョイント値のジッター除去・スムージング
- Lag CHOP — 回転値の遅延スムージング(unrolled 値と組み合わせ)
- Math CHOP — 座標値の正規化・スケーリング
- Logic CHOP — tracked / clipped 状態に基づく条件分岐
- Trigger CHOP — ジェスチャー検出時のイベント発火
- Trail CHOP — ジョイント軌跡の時間履歴を可視化
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、Select CHOP
- 後処理: Filter CHOP、Lag CHOP、Math CHOP、Logic CHOP、Trigger CHOP、Select CHOP
Info CHOP情報 📊
Kinect 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:
- Joint Smoothing をオンにして Smoothing / Correction を調整
- Jitter Radius を小さく設定して半径内のジッターをクランプ
- 後段に Filter CHOP を入れて時間方向のスムージング
❌ Problem: 回転値(rx / ry / rz)がブレンド時に飛ぶ
✅ Solution:
- Unroll Bone Values をオンにして wrap-around を解消
- Unroll した値を後段の Filter CHOP や Lag CHOP に渡してスムージング
- Rotation Smoothing をオンにして Kinect 側の補正を有効化
❌ Problem: 近距離の被写体がトラッキングされない
✅ Solution:
- Near Depth Mode をオンにして 40cm までの近距離認識を有効化
- Skeleton モードを Seated に切り替えて上半身のみのトラッキングを試す
- センサーから 80cm 以上離れた位置に被写体を配置(デフォルト挙動)
❌ Problem: Color Space Positions チャンネルが出力されない
✅ Solution:
- Hardware Version が Kinect v2 に設定されているか確認(v1 では非対応)
- 代わりに Depth Space Positions を使用(v1 / v2 両対応)
- World Space Positions に切り替えて 3D 座標で取得
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

