
概要 📖 – 深度センサーから立体を取得
Kinect SOPは、Kinect v1 センサーの深度データを 3D ジオメトリとして取り込む SOPです。現状サポートされるのは Kinect v1 センサーのみで、Skeleton モードの切替やニアモードでの近距離検出、法線生成といった整形を行いながら立体形状を取り出します。
主な用途 🎯
- Kinect v1 センサーの深度データを 3D ジオメトリとして取り込み、現実空間の立体形状をシーンに取り込む
- 取得した点群・面を後段のジオメトリ処理に渡し、リアルタイムの立体スキャンとして活用
- 全身 (立位) または座位のスケルトンを切り替えて、用途に合わせた人体形状を取得
- ニアモードで近距離のオブジェクトを検出し、テーブルトップや手元のスキャンに利用
- 法線を生成して取り込んだジオメトリに陰影を付け、ライティングで自然に見せる
データフロー 🔄
入力: Kinect v1 センサー (USB 接続)
↓
深度データの取り込み (Sensor 選択・Skeleton モード・ニアモードを設定)
↓
法線生成等の整形
↓
出力: 深度から生成された 3D ジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
ハードウェア世代 .hwversion 🔌
Hardware Version (ハードウェア世代) — 使用する Kinect センサーの世代を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Version 1 | .version1 |
Kinect v1 (Xbox 360 / Kinect for Windows v1) を使用 |
※ 注意: Only Kinect v1 sensors supported at this time. (現状サポートされるのは Kinect v1 センサーのみです)
センサー選択 .sensor 🎚️
Kinect v1 専用、複数センサー接続時の選択:
- Sensor:
Sensor(センサー選択) — どの Kinect センサーを使うかを指定します。Kinect v1 を使用しているときのみ有効です
スケルトン .skeleton 🦴
Skeleton (スケルトン追跡モード) — 全身 / 座位スケルトンの切替を行うメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Full | .full |
全身 (立ち姿勢) のスケルトンを追跡 |
| Seated | .seated |
上半身のみ (座位) のスケルトンを追跡 |
ニアモード .neardepthmode 🔍
Kinect v1 専用、ニアモードで 40cm 以上を検出可能に:
- Near Depth Mode:
Near Depth Mode(ニアモード) — Kinect v1 デバイス専用です。ニアモードを有効にすると、通常の 80cm に対して 40cm まで近づいたオブジェクトをカメラが検出できるようになります
法線生成 .normals 📐
ジオメトリへの法線生成:
- Compute Normals:
Compute Normals(法線を生成) — 取り込んだジオメトリに法線を生成します。ライティングやシェーディングで立体を自然に陰影付けしたいときに有効にします
実践アイデア 💡
Example 1: 深度ジオメトリを立体表示 🧊
Kinect SOP (Compute Normals=ON) → Geometry COMP → Render TOP (Camera COMP で視点設定)
Kinect v1 センサーが捉えた深度データを Kinect SOP で 3D ジオメトリとして取り込み、法線を生成してから Render TOP でレンダリングする基本フローです。Geometry COMP に入れて Camera COMP で視点を設定すれば、現実空間の立体スキャンをリアルタイムに表示できます。
- Kinect SOP を配置し、
Hardware VersionをVersion 1に設定 Compute Normalsをオンにして陰影付けに使う法線を生成- Geometry COMP に入れて Camera COMP と Light COMP で視点・照明を設定
- Render TOP に接続し、深度から生成された立体ジオメトリをレンダリングして確認
Example 2: 座位スキャンで上半身を取得 🪑
Kinect SOP (Skeleton=Seated, Near Depth Mode=ON) → Transform SOP → Out SOP
着席した体験者の上半身だけを取り込みたいときの設定例です。Skeleton を Seated にして座位の人体形状を対象にし、ニアモードを併用すると 40cm まで近づいた手元や上半身を検出しやすくなります。取り込んだジオメトリは Transform SOP で位置を整えてから後段に渡します。
- Kinect SOP を配置し、
SkeletonをSeatedに設定 Near Depth Modeをオンにして近距離 (40cm 以上) のオブジェクトを検出可能にする- Transform SOP でジオメトリの位置・スケールをシーンに合わせて調整
- Out SOP に接続して後段の合成・レンダリング処理に渡す
Example 3: 深度形状を間引いて軽量化 ⚡
Kinect SOP → Polyreduce SOP (面数削減) → Facet SOP → Geometry COMP
Kinect SOP が出力する深度ジオメトリはポイント数が多く描画負荷が高いため、後段の Polyreduce SOP で面数を削減してから利用するパターンです。Facet SOP で法線を整えると、軽量化したジオメトリでも見た目を保てます。
- Kinect SOP を配置し、深度ジオメトリを取り込む
- Polyreduce SOP を接続し、目標ポイント数まで面数を削減
- Facet SOP で法線を再計算して陰影を整える
- Geometry COMP に入れてレンダリングし、負荷と見た目のバランスを確認
関連オペレータ 🔗
類似機能OP 🔍
- Kinect CHOP — 同じ Kinect センサーのスケルトン関節座標を CHOP チャンネルとして取得 (SOP は立体形状、CHOP は数値)
- Kinect TOP — 同じ Kinect センサーの深度・カラー画像を TOP テクスチャとして取得
- Oculus Rift SOP — VR デバイスのトラッキングジオメトリを取得する別のデバイス系 SOP
- OpenVR SOP — OpenVR 対応デバイスのトラッキングジオメトリを取得するデバイス系 SOP
組み合わせ推奨OP 🔄
- Geometry COMP — 取り込んだ深度ジオメトリをシーンに配置してレンダリング対象にする
- Render TOP — Kinect の立体形状を画像としてレンダリング出力
- Polyreduce SOP — ポイント数の多い深度ジオメトリを面数削減して描画負荷を下げる
- Transform SOP — 取り込んだジオメトリの位置・回転・スケールをシーンに合わせて調整
前処理・後処理SOP 🎯
Info CHOP情報 📊
Kinect SOP は Info CHOP による詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
total_cooks:total_cooks— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Kinect から立体が取り込めない / 何も表示されない
✅ Solution:
Hardware VersionがVersion 1になっているか確認 (Kinect SOP は現状 Kinect v1 のみ対応)- Kinect v1 用の SDK とドライバが OS にインストールされているか、センサーが USB に正しく接続されているか確認
- 複数台を接続している場合は
Sensorで使うセンサーが正しく指定されているか確認
❌ Problem: 近くのオブジェクトが検出されない
✅ Solution:
Near Depth Modeをオンにして最小検出距離を 80cm から 40cm に拡張する- それでも近すぎる対象は Kinect v1 の検出範囲外になるため、センサーとの距離を 40cm 以上空ける
- テーブルトップ用途では対象がニアモードの検出レンジに収まる配置か確認する
❌ Problem: 取り込んだジオメトリに陰影が付かない
✅ Solution:
Compute Normalsをオンにして法線を生成する (法線がないとライティングで陰影が出ない)- 後段で Facet SOP を使って法線を再計算し、面の向きを整える
- Geometry COMP に Light COMP と適切な MAT が設定されているか確認する
❌ Problem: 描画が重い / フレームレートが落ちる
✅ Solution:
- 後段に Polyreduce SOP を入れてポイント数・面数を削減する
- 不要な領域は Delete SOP で除外して扱うジオメトリ量を減らす
- ジオメトリが頻繁に更新されるため、後段の SOP チェーンはできるだけ軽く保つ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

