
概要 📖 – 3Dシーンのピック結果をテーブル取得
Render Pick DATは、Render TOP の3Dシーンに対し入力テーブルの座標から複数ピックを行い、ヒット結果をテーブル形式で出力する DATです。入力 DAT に座標と Custom Pick Camera(s) (カスタムカメラ) の列を並べることで、複数カメラからの同時ピックを 1 つのテーブルにまとめて取得できます。
主な用途 🎯
- マウス・タッチ座標から3Dシーンのオブジェクトをピックし、結果をテーブル形式で受け取る
- 複数同時ピックを入力 DAT 行ごとに一括処理 (multi-touch / multi-cursor 対応)
- ピック点の位置・法線・カラー・UV・深度・Instance IDを一括取得
- 複数カメラからのピックを1オペレータで切替・並列実行
- コールバック DATでピックイベントごとに Python ロジックを発火
データフロー 🔄
入力: ピック座標を含む DAT (u/v + camera 列等) + Render TOP のシーン
↓
ピック判定 (Pick Radius / Strategy / Pickable Flag)
↓
出力: 位置・法線・カラー・UV・深度・Instance ID 等を含むテーブル DAT
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Render Pick Page 📋
Strategy .strategy 🎛️
ピック結果の更新タイミング (追従モード) を決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| While Select | .select |
選択中 (Select 有効) の間だけピック値を更新 |
| Hold First Picked | .holdfirst |
最初にジオメトリがピックされたときの値を保持し続ける |
| Hold Last Picked | .holdlast |
最後にジオメトリがピックされた値を保持。空間 (ジオメトリ無し) をピックしても直前の値が残る |
| Always | .always |
常時ピック判定を行い、空間ヒット時は値をゼロクリア |
ピック挙動関連パラメータ 📈
Clear Previous Pick on New Pick .clearprev 🧹
– Strategy が Hold Last Picked のときのみ有効
– オン: 空間で新規ピックを開始すると直前の値をクリア
– オフ: 空間ピック開始時も直前の値を保持
Response Time .responsetime ⏲️
– 値の更新タイミングを決定するパラメータ
Pick Radius .pickradius 🎯
– ピック中心にヒットがなかった場合に拡張する探索半径
– 半径内にジオメトリが見つかればそれをピック対象として返す
Pick Radial Step .pickradstep 📏
– 探索領域内のサンプリング密度 (中心から外へ向かう「スポーク」状)
– 大きくするとサンプリング数が減り処理が軽くなる
Pick Circular Step .pickcirstep ⭕
– 探索領域内のサンプリング密度 (同心円「リング」状)
– 大きくするとサンプリング数が減り処理が軽くなる
Render/RenderPass TOP .rendertop 🖼️
– ピック対象となる Render TOP または Render Pass TOP のパス
– デフォルトでは Render TOP に登録されている最初のカメラからピックされる
– 別カメラを指定する場合は Custom Pick Camera(s) を併用
Custom Pick Camera(s) .custompickcameras 🎥
– 任意の Camera COMP (カメラ) からピックするための指定欄
– 空欄時は Render TOP のカメラを使用
– 複数カメラから同時ピックする場合は、入力 DAT 側に camera 列を用意し各行で別カメラを指定する
Allow Multi-Camera Rendering .allowmulticamera 🎬
– 複数パスのレンダリングを同時実行する高速化機能 (マルチカメラ・レンダリング)
– 旧バージョン (088) の GLSL MAT との互換性問題が出るときのみオフ。通常はオン推奨
Use Pickable Flags .usepickableflags ✅
– オン: Pickable Flag (ピック可否フラグ) がオンのオブジェクトのみピック対象
– Pickable Flag は全 Object コンポーネントに存在
Include Non-Pickable Objects .includenonpickable 🚫
– 非ピック対象オブジェクトを遮蔽 (オクルージョン) 判定に含めるかどうか
– オン: 非ピック対象の手前にあるオブジェクトでピック対象が隠れていれば選択されない
Merge Input DAT .mergeinputdat 🔗
– 入力 DAT の各行の内容を、出力テーブルの該当行に追記してマージ
– ピック結果と入力側の任意メタ (cursor_id 等) を 1 テーブルにまとめたいときに使用
Activate Callbacks .activatecallbacks 🔔
– ピックイベントごとに Callback DAT を実行するかどうか
Callbacks DAT .callbacks 📜
– ピックイベント受信時に呼ばれるコールバックを記述した DAT のパス
Options Page ⚙️
Fetch Position .position 📐
ピック点の3D座標を取得するか、その座標系を選択するメニュー (出力列: tx, ty, tz)
| 項目 | 内部名 | 説明 |
|---|---|---|
| No | .no |
位置値を出力しない |
| In World Space | .worldspace |
ワールド座標系での3D位置を出力 |
| In Camera Space | .cameraspace |
カメラ座標系での3D位置を出力 |
Fetch Normal .normal 🧭
ピック点の法線ベクトルを取得するか、その座標系を選択するメニュー (出力列: nx, ny, nz)
| 項目 | 内部名 | 説明 |
|---|---|---|
| No | .no |
法線値を出力しない |
| In World Space | .worldspace |
ワールド座標系での法線を出力 |
| In Camera Space | .cameraspace |
カメラ座標系での法線を出力 |
その他の出力列 📦
Reference Object .referenceobj 🎯
– 位置や法線を「特定 Object 基準 (Relative to Object)」で取得する際の参照 Object
Fetch Point Color .color 🎨
– ピック点の頂点カラーを取得 (出力列: cr, cg, cb, ca)
Fetch Texture UV .uv 🗺️
– ピック点のテクスチャ UV 座標を取得 (出力列: mapu, mapv, mapw)
Fetch Depth .depth 🌊
– ピック点の深度値を取得 (出力列: depth)
– 値は Depth Buffer の Near/Far 平面間の非線形比率
Fetch Instance ID .instanceid 🔢
– インスタンス ID を取得 (出力列: instance)
– インスタンシングが無効なときは常に 0
Custom Attribs 🧩
Custom Attrib 1 / 2 / 3 / 4 .customattrib1..4 🏷️
– Object から取得したいカスタムアトリビュート名を指定 (最大 4 個)
Custom Attrib 1 / 2 / 3 / 4 Type .customattrib1..4type 📋
– 各カスタムアトリビュートの型を選択するメニュー
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: 全指タッチを一括ピック 👆
Multi Touch In DAT → Render Pick DAT (Merge Input DAT On) → DAT Execute DAT → 各タッチごとの処理
Multi Touch In DAT が出力するタッチ行 (各指の u/v 座標) をそのまま Render Pick DAT に入力すると、全指のピック結果を 1 テーブルでまとめて取得できます。
- Multi Touch In DAT を配置し、各タッチを行として出力する設定にする
- Render Pick DAT の入力に Multi Touch In DAT を接続
Render/RenderPass TOPにピック対象シーンを指定Merge Input DATをオンにして入力側の cursor_id 等のメタ列を出力テーブルに含める- DAT Execute DAT で
onTableChangeを捕捉し、各行をループしてヒット情報を処理
Example 2: 複数カメラで同時ピック 🎥
Table DAT (u/v + camera 列) → Render Pick DAT (Custom Pick Camera(s)) → ピック結果テーブル
入力 DAT に u / v 列と camera 列を並べることで、行ごとに異なる Camera COMP からピックを並列実行できます。VR の左右眼や、サブカメラからの参照ピックに有効です。
- Camera COMP を 2 個以上配置 (例: cam_main / cam_sub)
- Table DAT で u/v/camera の 3 列を持つテーブルを用意し、行ごとに参照カメラを指定
- Render Pick DAT の
Custom Pick Camera(s)に対象カメラ群を指定 Allow Multi-Camera Renderingをオンにして並列実行を有効化- 出力テーブルから各行の
tx/ty/tzを読み、視点ごとの3D座標を比較
Example 3: ピック対象をID判別 🔢
Mouse In CHOP → CHOP to DAT → Render Pick DAT (Fetch Instance ID + Activate Callbacks) → Callback DAT
Geometry COMP のインスタンシングを使ったシーンで、Fetch Instance ID をオンにすると出力テーブルの instance 列にピック対象のインスタンス番号が入ります。コールバック DAT と組み合わせれば、インスタンスごとの個別アクションを実装できます。
- Mouse In CHOP でマウス u/v を取得し、CHOP to DAT で行に変換
- Render Pick DAT の入力に CHOP to DAT を接続
Fetch Instance IDをオンにするActivate Callbacksをオンにし、Callbacks DATでonPickイベントを実装- コールバック内で
instance列の値を分岐に使い、インスタンスごとの処理を実行
Example 4: ピック点に3D追従 🎯
Table DAT (u/v) → Render Pick DAT (Strategy: Always + Fetch Position: World) → Script CHOP → Geometry COMP (translate)
Strategy を Always、Fetch Position を In World Space にすると、毎フレーム継続的にピック点の3D座標が取得できます。テーブルから値を CHOP に流し、Geometry COMP の translate に接続すれば、3Dカーソルが面上に張り付きます。
- Table DAT に追従させたい u/v を 1 行で用意 (マウス座標を毎フレーム書込み)
- Render Pick DAT で
Strategy = Always/Fetch Position = In World Spaceに設定 - 出力テーブルの
tx/ty/tz列を DAT to CHOP で CHOP 化 - 得られたチャンネルをカーソル用 Geometry COMP の translate にエクスポート
関連オペレータ 🔗
類似機能OP 🔍
- Render Pick CHOP — 同じピック機構を CHOP として 1 ピック分の値で受け取る版
- Render Select TOP — Render TOP の補助出力 (位置・法線・深度等の AOV) を画像として取り出す
組み合わせ推奨OP 🔄
- Render TOP — ピック対象となる3Dシーンを描画する出力元 (必須の組合せ)
- Camera COMP —
Custom Pick Camera(s)で参照する視点を提供 - Geometry COMP — Pickable Flag の対象。インスタンシング使用時は Instance ID の取得元
- DAT Execute DAT — ピック結果テーブルの変化を契機に Python ロジックを発火
- Mouse In CHOP — マウス座標を CHOP として取得し、CHOP to DAT で入力テーブル化
前処理・後処理DAT 🎯
- 前処理: Table DAT、Text DAT
- 後処理: DAT Execute DAT、Script DAT、Null DAT
Info DAT情報 📊
Render Pick DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 DAT Info チャンネルを参照可能)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: ピックしても出力テーブルが更新されない
✅ Solution:
Render/RenderPass TOPに正しいレンダリング元を指定しているか確認StrategyがHold First Pickedの場合は最初のヒット以降更新されない仕様のため、用途に応じAlwaysかWhile Selectに切替- 入力 DAT が cook しているか、u/v 列が正規化座標 (0–1) になっているかを確認
❌ Problem: ピックしたいオブジェクトが選択されない
✅ Solution:
- 対象 Object コンポーネントの
Pickable Flagがオンになっているか確認 Use Pickable Flagsをオンにしている場合、Pickable 以外のジオメトリは全て無視される- 他オブジェクトに遮蔽されている可能性がある場合は
Include Non-Pickable Objectsを見直す - 細いジオメトリは
Pick Radiusを広げると拾える
❌ Problem: 複数カメラからの並列ピックが期待通り動かない
✅ Solution:
Custom Pick Camera(s)に対象 Camera COMP 群が全て登録されているか確認- 入力 DAT に
camera列を用意し、各行で参照カメラ名を指定する Allow Multi-Camera Renderingをオンにしているか確認 (旧 GLSL MAT 由来の不具合時のみオフ)
❌ Problem: 出力テーブルの値がガタついて使いにくい
✅ Solution:
- 後段で DAT to CHOP → Filter CHOP で値を平滑化
Response Timeを調整して更新タイミングを緩めるPick Radial Step/Pick Circular Stepを増やしサンプリング点を間引き、負荷とノイズを下げる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Render Pick DAT
- TouchDesigner公式ドキュメント – Render Pick CHOP (兄弟 OP)
- TouchDesigner公式ドキュメント – Render TOP
- TouchDesigner公式ドキュメント – Pickable Flag

