OP Find DAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

OP Find DAT のノード検索とテーブル一覧化を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
→ @maru6o6をフォロー

概要 📖 – 条件でノードを検索一覧化

OP Find DATは、検索条件に一致するオペレータを探し出し、その一覧をテーブルとして出力する DATです。Families ページで検索対象の種類を絞り、Filters ページで名前・型・パス・タグ・パラメータ値などの条件を重ねます。Columns ページで出力したい列 (名前・型・パス・クック時間など) を選び、結果を Select DAT や Python で受け取って一括処理に活用します。

主な用途 🎯

  • 名前・型・パス・タグ等の条件でノードを検索し、ヒットしたオペレータを一覧テーブルとして出力
  • 大規模プロジェクトのノード棚卸しで、特定の型 (例: 全 Movie File In TOP) を横断的にリストアップ
  • パラメータ値での絞り込みで、特定の設定値を持つノードだけを動的に抽出
  • クック時間・メモリ列を出力して、重いノードを発見するパフォーマンス調査
  • 検索結果をループ処理の入力として渡し、ヒットした全ノードへ一括で処理を適用

データフロー 🔄

検索条件 (Families ページ + Filters ページ)
↓
検索開始パス以下のノードを走査
↓
条件に一致したノードを抽出
↓
出力 DAT: ヒットしたノードの一覧テーブル (Columns ページで選んだ列)
CHECK

初心者の方は、以下日本語書籍も手元にあると安心です😊

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 で横断検索し、名前とパスの一覧表として棚卸しする基本フロー。手作業でネットワークを巡回せずに全ヒットを一覧化できます。

  1. OP Find DAT を配置し、検索開始パスとなる第 1 入力 (または親パス) を接続
  2. Families ページで対象のファミリー (例: TOPs) をオンにする
  3. Filters ページの Type に型名 (例: moviefileinTOP) を入力して絞り込む
  4. Columns ページで Name / Path 列をオンにし、結果を Table DAT に渡して棚卸し表にする

Example 2: 重いノードを発見 ⏱️

OP Find DAT (Cook Times/CPU Time 列) → Sort DAT (降順) → Examine DAT で確認

プロジェクトのフレームレートが落ちる原因を探すため、OP Find DAT のクック時間列を出力して全ノードの計算コストを一覧化し、降順に並べて上位の重いノードを特定する調査フローです。当て推量ではなく数値で犯人を絞り込めます。

  1. OP Find DAT で全ファミリーを検索対象にして広く探索
  2. Columns ページで Cook Times / CPU Time / GPU Time 列をオンにする
  3. 結果を Sort DAT でクック時間の降順に並べ替える
  4. 上位のノードを Examine DAT や手動で確認し、最適化対象を確定する

Example 3: 値で抽出し一括処理 ⚙️

OP Find DAT (Par Name/Par Value) → DAT to CHOP / Python ループ → 一括変更

特定のパラメータが特定の値になっているノードだけを OP Find DAT で抽出し、ヒットした全パスに対して Python ループで一括変更を適用するメンテナンス用途のフローです。設定漏れのあるノードをまとめて修正できます。

  1. OP Find DAT の Filters ページで Par Name / Par Value に探したいパラメータ名と値を入力
  2. 必要に応じて Par Non-Default Only をオンにし、デフォルトから変更済みのノードのみ対象にする
  3. Columns ページで Path 列をオンにし、ヒットした全ノードのパスを取得
  4. 出力テーブルを Python (op('opfind1').rows()) で読み、各パスに対しループで一括処理を実行する

関連オペレータ 🔗

類似機能OP 🔍

  • Parameter DAT — 指定ノードのパラメータ一覧をテーブル化する (検索ではなく既知ノードの内訳)
  • Examine DAT — ノードのメンバーや属性を一覧表示してデバッグ用に確認

組み合わせ推奨OP 🔄

  • Select DAT — 検索結果テーブルから必要な行・列だけを抜き出す定番後段
  • Sort DAT — クック時間や名前で検索結果を並べ替えて上位を把握
  • Table DAT — 検索結果を棚卸し表として固定・編集
  • DAT to CHOP — クック時間など数値列を CHOP に変換してグラフ可視化
  • OP Execute DAT — ヒットしたノードの作成・削除・更新イベントを監視するコールバック

前処理・後処理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 でコールバック内のエラーが出ていないか確認

参考資料 📚

その他 🔗

公式リソース 📖


関連まとめ 🔗

ファミリー別一覧 📑

厳選オペレータ ⭐

逆引き 🔎


この記事はLLMと共に内容を執筆、更新しています。
なるべく正確な情報を心掛けていますが、最新バージョンとの項目差異など情報の不一致を見つけたらXもしくはInsta、メールなどから管理者までご連絡いただけると嬉しいです🫠


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガ(8年前にRYT200取得)やサウナ、美容EMSや電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした、生体情報の解析とインタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
今流行りのクリエイティブツール、Touchdesignerとは?業界の現役ちいかわエンジニアができることを解説ッ
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(パールシュヴァ・バーラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】

タイトルとURLをコピーしました