
概要 📖 – 条件でノードを検索一覧化
OP Find DATは、検索条件に一致するオペレータを探し出し、その一覧をテーブルとして出力する DATです。Families ページで検索対象の種類を絞り、Filters ページで名前・型・パス・タグ・パラメータ値などの条件を重ねます。Columns ページで出力したい列 (名前・型・パス・クック時間など) を選び、結果を Select DAT や Python で受け取って一括処理に活用します。
主な用途 🎯
- 名前・型・パス・タグ等の条件でノードを検索し、ヒットしたオペレータを一覧テーブルとして出力
- 大規模プロジェクトのノード棚卸しで、特定の型 (例: 全 Movie File In TOP) を横断的にリストアップ
- パラメータ値での絞り込みで、特定の設定値を持つノードだけを動的に抽出
- クック時間・メモリ列を出力して、重いノードを発見するパフォーマンス調査
- 検索結果をループ処理の入力として渡し、ヒットした全ノードへ一括で処理を適用
データフロー 🔄
検索条件 (Families ページ + Filters ページ)
↓
検索開始パス以下のノードを走査
↓
条件に一致したノードを抽出
↓
出力 DAT: ヒットしたノードの一覧テーブル (Columns ページで選んだ列)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Families Page 📁
検索対象ファミリー ✅
検索対象に含めるオペレータの種類を選ぶトグル群。オンにした種類だけが結果に含まれます。
Object COMPs .objects ✅
– Object COMPs (3D 空間系コンポーネント) を検索対象に含めます
– 例: Geometry COMP 等
Panel COMPs .panels ✅
– Panel COMPs (UI パネル系コンポーネント) を検索対象に含めます
– 例: Container COMP 等
Other COMPs .other ✅
– Other COMPs (その他の種類のコンポーネント) を検索対象に含めます
– 例: Base COMP 等
TOPs .tops ✅
– TOP ファミリー (画像処理系) のオペレータを検索対象に含めます
CHOPs .chops ✅
– CHOP ファミリー (チャンネルデータ系) のオペレータを検索対象に含めます
SOPs .sops ✅
– SOP ファミリー (ジオメトリ系) のオペレータを検索対象に含めます
MATs .mats ✅
– MAT ファミリー (マテリアル系) のオペレータを検索対象に含めます
DATs .dats ✅
– DAT ファミリー (テキスト・テーブル系) のオペレータを検索対象に含めます
Filters Page 🎚️
フィルタの結合方式 .combinefilters 🎚️
複数のフィルタ条件をどう結合して一致判定するかを選ぶメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| All | .all |
すべてのフィルタが一致したノードのみ結果に含める (AND 結合) |
| Any | .any |
いずれかのフィルタ条件が一致すれば結果に含める (OR 結合) |
| Custom | .custom |
and / or キーワードでフィルタの部分集合を指定して結合 |
大文字小文字とカスタム結合 🔠
Case Sensitive .casesensitive 🔠
– Case Sensitive (大文字小文字の区別) — 下の全パターンマッチングで大文字小文字を区別します
Custom Combine .customcombine 🧩
– Custom Combine (カスタム結合式) — Combine Filters が Custom のとき、どのフィルタをどう組み合わせるかを指定します
名前・型・パスでの絞り込み 🔎
Name .namefilter 🏷️
– Name (名前フィルタ) — wave1 / wave2 のようなオペレータ名で絞り込みます
Type .typefilter 🔧
– Type (型フィルタ) — waveCHOP / panelexecuteDAT のような型名で絞り込みます (Type 列の表記を参照)
Path .pathfilter 📂
– Path (パスフィルタ) — オペレータが存在すべきパスを指定します
Parent Path (relative) .parentfilter 📁
– Parent Path (相対親パスフィルタ) — オペレータが存在すべき相対親パスを指定します
– Columns ページの Parent Path 列を有効にすると、その parentPath 列に対するフィルタになります
Exclude Path (relative) .excludefilter 🚫
– Exclude Path (除外パスフィルタ) — 検索から除外する相対パスを指定します
Wire Path .wirepathfilter 🔌
– Wire Path (ワイヤパスフィルタ) — ワイヤ接続のパスで絞り込みます
ショートカットとタグ 🔖
Parent Shortcut .parentshortcutfilter ⬆️
– Parent Shortcut (親ショートカットフィルタ) — 指定した Parent Shortcut を持つオペレータだけに絞り込みます
OP Shortcut .opshortcutfilter 🔗
– OP Shortcut (OP ショートカットフィルタ) — 指定した OP Shortcut を持つオペレータだけに絞り込みます
Comment .commentfilter 💬
– Comment (コメントフィルタ) — 指定した文字列をコメントに含むオペレータに絞り込みます
Tags .tagsfilter 🏷️
– Tags (タグフィルタ) — 指定したタグに一致するオペレータに絞り込みます
– 複数のタグは空白区切りのリストで指定できます
DAT Text .textfilter 📝
– DAT Text (DAT テキストフィルタ) — DAT ファミリーのオペレータのうち、内容に指定文字列を含むものだけを対象にします
パラメータ条件での絞り込み ⚙️
Par Name .parnamefilter 🔤
– Par Name (パラメータ名フィルタ) — 指定した名前のパラメータを持つオペレータに絞り込みます
– 名前・値・式のすべてが一致したパラメータだけが対象になります
Par Value .parvaluefilter 🔢
– Par Value (パラメータ値フィルタ) — 指定した値のパラメータを持つオペレータに絞り込みます
– 名前・値・式のすべてが一致したパラメータだけが対象になります
Par Expression .parexpressionfilter 🧮
– Par Expression (パラメータ式フィルタ) — 指定した式文字列を持つパラメータのオペレータに絞り込みます
– 名前・値・式のすべてが一致したパラメータだけが対象になります
Par Non-Default Only .parnondefaultonly ✳️
– Par Non-Default Only (非デフォルト値のみ) — デフォルト値ではないパラメータだけを照合対象にします
Columns Page 📊
出力する列の選択 📋
結果テーブルに含める列を選ぶトグル群。必要な情報の列だけをオンにします。
Use Legacy Columns .legacycols 🕰️
– Use Legacy Columns (旧列名を使用) — 列ヘッダーを旧来の名前にしたいときのみ使います
ID .idcol 🆔
– ID 列 — ノードをそのプロセス内で一意に識別する整数を出力します
– プロセス実行中は同一ですが、再実行すると変わる場合があります
Name .namecol 🏷️
– Name 列 — オペレータの名前を結果テーブルに含めます
Type .typecol 🔧
– Type 列 — オペレータの型 (例: rampTOP) を結果テーブルに含めます
Path .pathcol 📂
– Path 列 — オペレータのパスを結果テーブルに含めます
Relative Path .relpathcol 📁
– Relative Path 列 — 検索ルートからの相対パスを結果テーブルに含めます
Depth .depthcol 📏
– Depth 列 — ルートパスからの相対的な階層の深さを示す列を含めます
Tags .tagscol 🔖
– Tags 列 — オペレータのタグを結果テーブルに含めます
Children .children 👶
– Children 列 — オペレータの子ノードを結果テーブルに含めます
パフォーマンス計測の列 ⏱️
クック時間やメモリ使用量を出力する列。重いノードの調査に使います。
Cook Times .cooktimescol ⏲️
– Cook Times 列 — 見つかったオペレータのクック時間 (計算所要時間) を含めます
CPU Time .cputime 🧠
– CPU Time 列 — オペレータの CPU クック時間を結果テーブルに含めます
GPU Time .gputime 🎮
– GPU Time 列 — オペレータの GPU クック時間を結果テーブルに含めます
CPU Memory .cpumem 💾
– CPU Memory 列 — オペレータの CPU メモリ使用量を結果テーブルに含めます
GPU Memory .gpumem 🗃️
– GPU Memory 列 — オペレータの GPU メモリ使用量を結果テーブルに含めます
Callbacks Page 📞
コールバック DAT と値変換 📞
Callbacks DAT .callbacks 📜
– Callbacks DAT (コールバック DAT) — 受け取った各イベントを処理するコールバックを定義した DAT のパスを指定します
– 使い方の詳細は opfindDAT_Class を参照
Convert Bool to Int .convertbool 🔢
– Convert Bool to Int (真偽値を整数に変換) — オンのとき真偽値を 1 / 0 で出力します
– オフのときは True / False の文字列で出力されます
Convert None to Empty .convertnone ␀
– Convert None to Empty (None を空に変換) — None 値を空文字列に変換して出力します
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: 型でノードを一覧化 🔎
OP Find DAT (Type=movefilein*) → Select DAT → Table DAT (棚卸し表)
大規模プロジェクトで散在する同じ型のノード (例: 全 Movie File In TOP) を OP Find DAT で横断検索し、名前とパスの一覧表として棚卸しする基本フロー。手作業でネットワークを巡回せずに全ヒットを一覧化できます。
- OP Find DAT を配置し、検索開始パスとなる第 1 入力 (または親パス) を接続
- Families ページで対象のファミリー (例: TOPs) をオンにする
- Filters ページの
Typeに型名 (例:moviefileinTOP) を入力して絞り込む - Columns ページで
Name/Path列をオンにし、結果を Table DAT に渡して棚卸し表にする
Example 2: 重いノードを発見 ⏱️
OP Find DAT (Cook Times/CPU Time 列) → Sort DAT (降順) → Examine DAT で確認
プロジェクトのフレームレートが落ちる原因を探すため、OP Find DAT のクック時間列を出力して全ノードの計算コストを一覧化し、降順に並べて上位の重いノードを特定する調査フローです。当て推量ではなく数値で犯人を絞り込めます。
- OP Find DAT で全ファミリーを検索対象にして広く探索
- Columns ページで
Cook Times/CPU Time/GPU Time列をオンにする - 結果を Sort DAT でクック時間の降順に並べ替える
- 上位のノードを Examine DAT や手動で確認し、最適化対象を確定する
Example 3: 値で抽出し一括処理 ⚙️
OP Find DAT (Par Name/Par Value) → DAT to CHOP / Python ループ → 一括変更
特定のパラメータが特定の値になっているノードだけを OP Find DAT で抽出し、ヒットした全パスに対して Python ループで一括変更を適用するメンテナンス用途のフローです。設定漏れのあるノードをまとめて修正できます。
- OP Find DAT の Filters ページで
Par Name/Par Valueに探したいパラメータ名と値を入力 - 必要に応じて
Par Non-Default Onlyをオンにし、デフォルトから変更済みのノードのみ対象にする - Columns ページで
Path列をオンにし、ヒットした全ノードのパスを取得 - 出力テーブルを Python (
op('opfind1').rows()) で読み、各パスに対しループで一括処理を実行する
関連オペレータ 🔗
類似機能OP 🔍
- Parameter DAT — 指定ノードのパラメータ一覧をテーブル化する (検索ではなく既知ノードの内訳)
- Examine DAT — ノードのメンバーや属性を一覧表示してデバッグ用に確認
組み合わせ推奨OP 🔄
- Select DAT — 検索結果テーブルから必要な行・列だけを抜き出す定番後段
- Sort DAT — クック時間や名前で検索結果を並べ替えて上位を把握
- Table DAT — 検索結果を棚卸し表として固定・編集
- DAT to CHOP — クック時間など数値列を CHOP に変換してグラフ可視化
- OP Execute DAT — ヒットしたノードの作成・削除・更新イベントを監視するコールバック
前処理・後処理DAT 🎯
- 前処理: Table DAT、Folder DAT
- 後処理: Select DAT、Sort DAT、Null DAT
Info DAT情報 📊
OP Find 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:
- Families ページで対象のファミリー (TOPs / CHOPs 等) がオンになっているか確認 (オフだとその種類は除外される)
Combine FiltersがAll(AND) になっていないか確認 (条件が厳しすぎる場合はAnyに変更)- 検索開始パスが目的のノードを含む階層を指しているか、
Path/Exclude Pathフィルタを見直す Case Sensitiveがオンで名前の大文字小文字が食い違っていないか確認
❌ Problem: 意図しないノードまで大量にヒットする
✅ Solution:
- Families ページで不要なファミリーのトグルをオフにして検索対象を絞る
Combine FiltersをAllにして複数条件の AND で絞り込むTypeやTagsフィルタを追加して条件を具体化するExclude Pathで除外したい階層 (テンプレートや外部 tox 内) を指定する
❌ Problem: クック時間・メモリ列の値が 0 や空になる
✅ Solution:
- Columns ページで
Cook Times/CPU Time/GPU Time列がオンになっているか確認 - 計測対象のノードが実際に cook されているか確認 (未 cook のノードは計測値が出ない)
- GPU 系の列はそのノードが GPU を使う型 (TOP 等) でないと値が出ないことを理解しておく
- 正確な比較には、結果を Sort DAT で並べ替えてから読む
❌ Problem: コールバック DAT が呼ばれない
✅ Solution:
Callbacks DATパラメータに正しいパスの DAT が指定されているか確認- コールバック関数の引数・名前が opfindDAT_Class の仕様どおりか確認
Convert Bool to Int/Convert None to Emptyの設定で受け取る値の型が変わる点を考慮する- Textport / Console でコールバック内のエラーが出ていないか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – OP Find DAT
- OPFindDAT Class (Python API 一覧)
- Category:Python (TouchDesigner の Python)

