
概要 📖 – 深度ストリームを点群化
OAK Select POPは、OAK Device CHOP の depthai パイプラインから特定ストリームを取出し、点群・ジオメトリ形式の POP データとして出力する POPです。Active で取得の有効化、OAK Device CHOP で上流の参照、Stream でパイプラインが公開するストリーム名、Cache Size で非同期書込みバッファのサイズを制御します。
主な用途 🎯
- OAK 深度カメラからの点群 (point cloud) データの受信と TouchDesigner 取込み
- depthai パイプラインで生成したジオメトリストリームの POP データへの変換
- 物体検出のバウンディングボックスやランドマークをポイント群として取得
- リアルタイム 3D 点群ビジュアライゼーションのソース供給
- Cache Size による非同期書込みバッファ制御で安定したフレーム取得
データフロー 🔄
入力: OAK Device CHOP の depthai パイプライン
↓
Stream 名で対象ストリームを選択
↓
Cache Size の内部バッファに非同期書込み
↓
出力: POP データ (点群・ジオメトリ)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
OAK Page 📋
Active .active ⚡
Active .active 🔘
– Active (有効化) — オンの間だけ指定 OAK Device CHOP からのデータを受信する
– オフにするとストリーム取込みが停止し CPU/GPU 負荷を抑制可能
OAK Device CHOP .chop 🎥
OAK Device CHOP .chop 🔗
– OAK Device CHOP (上流参照) — depthai パイプラインを実行している OAK Device CHOP のパスを指定
– OAK カメラと接続する側の CHOP を参照する形でストリームを取得する
Stream .stream 📡
Stream .stream 🏷️
– Stream (ストリーム名) — OAK Device CHOP 側の depthai パイプラインが公開しているストリーム名を文字列で指定
– 深度マップ・点群・物体検出結果など、パイプラインで定義したストリーム識別子と完全一致させる必要がある
Cache Size .cachesize 📦
Cache Size .cachesize 🔢
– Cache Size (バッファ長) — OAK Select POP が保持する内部バッファのサイズを整数で指定
– OAK Select CHOP の Queue Size パラメータと同じ役割を持つ
– デフォルト 2 が推奨値。TouchDesigner が画像を表示している裏で、残りのバッファに新しいデータを非同期で書込めるため
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
- 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用
Free Extra GPU Memory .freeextragpumem 🧠
蓄積した GPU メモリの解放:
- Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
- 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約
Delete Input Attributes .delinputattrs 🗑️
出力属性の絞り込みパターン:
- Delete Input Attributes パターン: 出力に残したい属性名のパターン (例:
P N Cd) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: 深度カメラから点群取得 📡
OAK Device CHOP (depth pipeline) → OAK Select POP (Stream=depth_pointcloud) → Geometry COMP → Render TOP
OAK-D など Luxonis の深度カメラから取得した点群を、TouchDesigner の Geometry COMP 経由でレンダリングに渡す基本パターンです。Cache Size はデフォルト 2 のままで非同期書込みが安定します。
- OAK Device CHOP に深度ストリームを公開する depthai パイプラインを設定
- OAK Select POP の OAK Device CHOP に対象 OAK Device CHOP のパスを指定
- Stream に depthai パイプラインが公開している点群ストリーム名を入力
- Active をオンにしてストリーム受信を開始
- Geometry COMP に OAK Select POP を割当ててレンダリング
Example 2: 物体検出結果を取込み 🎯
OAK Device CHOP (detection pipeline) → OAK Select POP (Stream=detections) → Transform POP → Geometry COMP
depthai のニューラル推論で得た検出結果 (バウンディングボックス・ランドマーク等) をポイント / ジオメトリ群として受取り、後段の POP チェーンで TouchDesigner シーンに統合します。
- OAK Device CHOP に物体検出 NN を組込んだ depthai パイプラインを設定
- OAK Select POP の Stream に検出結果ストリーム名 (例:
detections) を指定 - Cache Size を 2 のまま保持し、検出フレームの取り逃しと遅延のバランスを取る
- 後段の Transform POP で検出座標をワールド空間に配置
関連オペレータ 🔗
類似機能OP 🔍
- OAK Select CHOP — 同じ OAK ストリーム選択を CHOP (チャンネルデータ) として取得する CHOP バリアント
- OAK Select TOP — 同じ OAK ストリーム選択を TOP (画像データ) として取得する TOP バリアント
組み合わせ推奨OP 🔄
- OAK Device CHOP — OAK Select POP の上流。depthai パイプラインを実行する側
- Transform POP — 受信した点群をワールド空間に平行移動・回転・拡縮で配置
- Convert POP — 点群を別ジオメトリ形式 (メッシュ・パーティクル等) に変換
前処理・後処理POP 🎯
Info POP情報 📊
OAK Select POPは Info CHOP / Info DAT による詳細情報取得に対応しています。
POP固有情報 ✨
num_verts: POP に含まれる頂点 (vertex) 数num_points: POP に含まれるポイント数num_prims: POP に含まれるプリミティブ数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)cook_start_time: 最後のクック開始時刻 (ミリ秒)cook_end_time: 最後のクック終了時刻 (ミリ秒)cooked_this_frame: 現フレームでクックされたか (0 / 1)warnings: 警告数errors: エラー数
出力ジオメトリ情報 🧬
num_points: 受信した点群 / ジオメトリの出力ポイント数num_point_attribs: 出力 POP の point 属性数 (位置・色・法線等)num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数num_prims: 出力プリミティブ数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: ストリームから点群データが取得できない
✅ Solution:
- OAK Device CHOP パラメータに正しい OAK Device CHOP のパスを設定しているか確認
- Stream 名が depthai パイプライン側で公開しているストリーム識別子と完全一致しているか確認
- Active がオンで、OAK Device CHOP 側もクックされ OAK ハードウェアと接続済みか確認
❌ Problem: 出力ジオメトリの形式が想定と異なる
✅ Solution:
- depthai パイプライン側のストリーム出力タイプ (深度マップ / 点群 / 検出結果) が POP として解釈可能な形式か確認
- 後段に Convert POP を挿入し、別ジオメトリ形式へ変換して扱う
- depthai 公式ドキュメントでストリーム出力のデータ仕様を確認し、適切なバリアント (CHOP / TOP / POP) を選択
❌ Problem: フレームの取り逃しや遅延が発生する
✅ Solution:
- Cache Size をデフォルト 2 から増やし、非同期書込みのバッファ余裕を確保
- ただし Cache Size を過大にすると最新フレームまでの遅延が増えるため、用途に応じて調整
- OAK Device CHOP 側のパイプラインフレームレートと TouchDesigner プロジェクトの fps を整合させる
❌ Problem: VRAM 消費が増え続ける
✅ Solution:
- Common Page の Free Extra GPU Memory パルスを実行して未使用 GPU メモリを解放
- Common Page の Delete Input Attributes で下流に不要な属性を絞り込み、メモリと帯域を節約
- Cache Size を必要最小限 (デフォルト 2) に維持してバッファ起因のメモリ占有を抑制
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

