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

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

OP Execute DAT の OP 監視コールバック機能を示す図

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

概要 📖 – オペレータの変化で実行

OP Execute DATは、監視対象に指定したオペレータのクック・作成・削除・リネーム等のイベントに反応して Python コールバックを実行する DATです。自身は処理結果のデータを出力するのではなく、Monitor OPs で指定したオペレータの状態変化をトリガに、内部に記述した Python メソッドを呼び出します。CHOP Execute / Parameter Execute / Panel Execute と同じ「イベント駆動コールバック」族の DAT で、オペレータそのものの変化に反応する点が特徴です。

主な用途 🎯

  • 監視対象オペレータのクック前後で Python コールバックを実行し、データ処理の前後にフックを差し込む
  • オペレータの作成・削除・リネームを検知して、ネットワーク構成の変化に応じた自動処理を走らせる
  • フラグ変更や配線変更をトリガに、ノードの状態同期や UI 更新を自動化する
  • 子オペレータ数の変化を検知して、COMP 内のリスト・メニューを動的に再構築する
  • イベント駆動のツール開発で、ノード操作に反応する独自のオーサリング支援を組む

データフロー 🔄

入力: 監視対象オペレータのイベント (クック / 作成 / 削除 / リネーム 等)

該当コールバックメソッド (onPreCook / onDestroy 等) を呼び出し

出力: スクリプト本文に書いた Python 処理を実行

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

OP Execute Page 📋

基本設定 ⚙️

Active .active
Active (有効化) — オンの間だけ、参照しているオペレータのイベントに反応してコールバックを実行します
– オフにすると監視を停止し、スクリプトは呼び出されません

Execute from .executeloc 📍
Execute from (実行元) — スクリプトをどの場所を基点に実行するかを決めます (Tscript 専用の設定)
– 実行基点を Specified Operator にした場合は、次の From Operator で基点オペレータを指定します

From Operator .fromop 🗂️
From Operator (実行元オペレータ) — Execute fromSpecified Operator にしたとき、スクリプトの実行基点となるオペレータのパスを指定します

Monitor OPs .op 👁️
Monitor OPs (監視対象オペレータ) — コールバックのトリガとして監視するオペレータを指定します
– ここで指定したオペレータでイベントが発生すると、下記の各コールバックが呼ばれます

クックコールバック 🔁

Pre Cook .precook ▶️
Pre Cook (クック前) — 監視対象オペレータがクックされる前に onPreCook() メソッドが呼ばれます

Post Cook .postcook ⏹️
Post Cook (クック後) — 監視対象オペレータがクックされた後に onPostCook() メソッドが呼ばれます

ライフサイクルコールバック ♻️

Destroy .opdelete 🗑️
Destroy (削除時) — 監視対象オペレータが削除されたときに onDestroy() メソッドが呼ばれます

Flag Change .flagchange 🚩
Flag Change (フラグ変更) — オペレータのフラグの状態が変わったときに onFlagChange() メソッドが呼ばれます
– OP 共通フラグおよび COMP / SOP / CHOP の Python アクセス可能なフラグが対象です

Wire Change .wirechange 🔌
Wire Change (配線変更) — オペレータの入力が繋ぎ直された (接続 / 切断 / 入れ替え) ときに onWireChange() メソッドが呼ばれます

Name Change .namechange 🏷️
Name Change (名前変更) — オペレータの名前が変更されたときに onNameChange() メソッドが呼ばれます

Path Change .pathchange 🧭
Path Change (パス変更) — オペレータのパスが変更されたときに onPathChange() メソッドが呼ばれます

UI Change .uichange 🖼️
UI Change (UI 変更) — オペレータがネットワークエディタ上でリサイズ / 移動されたときに onUIChange() メソッドが呼ばれます

子オペレータコールバック 🌳

Number Children Change .numchildrenchange 🔢
Number Children Change (子の数変更) — オペレータが持つ子の数が変化したときに onNumChildrenChange() メソッドが呼ばれます
– COMP (コンポーネント) 系オペレータでのみ動作します

Child Rename .childrename ✏️
Child Rename (子のリネーム) — オペレータの子がリネームされたときに onChildRename() メソッドが呼ばれます

Current Child Change .currentchildchange 🎯
Current Child Change (カレント子変更) — ネットワーク内で子オペレータがカレント (選択中) になったときに onCurrentChildChange() メソッドが呼ばれます
– COMP 系オペレータでのみ動作します

Extension Change .extensionchange 🧩
Extension Change (拡張変更) — オペレータの拡張 (Extension) が変更されたときに onExtensionChange() メソッドが呼ばれます

エディタ 📝

コールバックメソッドの本文を記述するための編集ボタン:

  • Edit..: Edit.. (編集) — クリックすると DAT のテキストを編集するテキストエディタが開きます。各コールバックメソッドの Python 実装をここに記述します

File Page 📁

ファイル連携 💾

File .file 📄
File (ファイル) — 読み込むファイルのパスとファイル名を指定します。.txt および .dat ファイルを受け付けます

Sync to File .syncfile 🔄
Sync to File (ファイル同期) — オンにすると、プロジェクト起動時にディスク上のファイルを DAT に読み込みます (ファイル名の指定が必須)
– ファイルと DAT は双方向で監視され、どちらの変更も即座に反映されます。ファイルが存在しなければ初回更新時に作成されます

Load on Start .loadonstart 🚀
Load on Start (起動時読込) — オンにすると、プロジェクト起動時にディスク上のファイルを DAT に再読み込みします

Load File .loadonstartpulse 📥
Load File (ファイル読込) — クリックすると、ファイルを即座に再読み込みします

Write on Toe Save .write 📝
Write on Toe Save (保存時書出) — オンにすると、プロジェクト保存時に DAT の内容をディスク上のファイルへ書き出します

Write File .writepulse 📤
Write File (ファイル書出) — クリックすると、ファイルを即座にディスクへ書き出します


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 ExtensionCustom Extension のときに適用される拡張子:

  • Custom Extension 文字列: Edit/View Extensioncustom のときに使用される任意のファイル拡張子

Word Wrap .wordwrap 🔁

ノード表示でのワードラップ (折り返し) の有効化

項目 内部名 説明
Input .input 入力 DAT の Word Wrap 設定を継承
On .on Word Wrap を有効化 (ノード上の長い行を折り返し表示)
Off .off Word Wrap を無効化 (折り返さずそのまま表示)

実践アイデア 💡

Example 1: クック前後にフック 🔁

監視対象 OP → OP Execute DAT (Pre Cook / Post Cook) → ログ出力 / 計測処理

重い処理を行うオペレータのクック前後に OP Execute DAT のコールバックを差し込み、処理時間の計測やログ記録を自動化する構成。onPreCook で開始時刻を記録し、onPostCook で経過時間を算出すれば、特定ノードのパフォーマンス監視を外部から非侵襲的に組めます。

  1. OP Execute DAT を配置し、Monitor OPs に計測したい監視対象オペレータのパスを指定
  2. Pre CookPost Cook をオンにして、onPreCook() / onPostCook() を有効化
  3. Edit.. でスクリプトを開き、onPreCook で開始時刻を保存、onPostCook で経過時間を算出する処理を記述
  4. Active をオンにして監視を開始、対象オペレータがクックされるたびに計測が走る

Example 2: 削除を検知して掃除 🗑️

監視対象 OP → OP Execute DAT (Destroy) → 関連リソースのクリーンアップ

動的に生成・破棄されるオペレータの削除を OP Execute DAT で検知し、紐づくリソース (テーブル行 / 外部接続 / 一時ファイル等) を自動で後始末する設計。onDestroy コールバックで対象が消えた瞬間に掃除処理を走らせれば、手作業のクリーンアップ漏れを防げます。

  1. OP Execute DAT の Monitor OPs に、削除を監視したいオペレータのパスを指定
  2. Destroy をオンにして onDestroy() コールバックを有効化
  3. Edit.. でスクリプトを開き、onDestroy 内に関連リソースの後始末処理を記述
  4. 対象オペレータが削除されると onDestroy が自動で呼ばれ、クリーンアップが実行される

Example 3: 子の数変化でUI更新 🌳

監視対象 COMP → OP Execute DAT (Number Children Change) → メニュー / リスト再構築

COMP 内に子オペレータが追加・削除されるたびに OP Execute DAT で検知し、その内容を反映したメニューやリスト UI を自動再構築する用途。onNumChildrenChange コールバックを使えば、ユーザがノードを足すだけで連動する動的インターフェースを組めます。

  1. OP Execute DAT の Monitor OPs に、子の増減を監視したい COMP のパスを指定
  2. Number Children Change をオンにして onNumChildrenChange() を有効化 (COMP 系のみ動作)
  3. Edit.. でスクリプトを開き、子の一覧を取得して UI 要素を再生成する処理を記述
  4. COMP の子が増減すると onNumChildrenChange が呼ばれ、メニュー / リストが自動更新される

関連オペレータ 🔗

類似機能OP 🔍

  • CHOP Execute DAT — CHOP チャンネルの値変化を監視してコールバックを実行、OP Execute はオペレータ自体の変化を監視
  • Parameter Execute DAT — パラメータ値の変更を監視してコールバックを実行、OP Execute はオペレータの構造変化を監視
  • Panel Execute DAT — パネル (UI) のインタラクションを監視してコールバックを実行する Execute 兄弟

組み合わせ推奨OP 🔄

  • Info DAT — コールバック内で監視対象の状態 (クック回数 / エラー等) を Info DAT で取得して判定に使う
  • Text DAT — 共通のコールバック処理を Text DAT (Python モジュール) に切り出して再利用
  • Table DAT — コールバックで検知したイベントを Table DAT にログとして書き込み履歴を残す
  • Execute DAT — フレーム開始・終了・プロジェクト起動等のグローバルイベントに反応、OP Execute は特定 OP の変化に反応
  • DAT Execute DAT — DAT のテーブル内容変化を監視するコールバック、OP Execute と組み合わせ監視範囲を分担

前処理・後処理DAT 🎯


Info DAT情報 📊

OP Execute DAT は Info DAT による詳細情報取得に対応しています (total_cooks / cook_time / cook_frame / warnings / errors 等の共通 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:

  • Active がオンになっているか確認、オフの間はどのコールバックも実行されない
  • Monitor OPs に監視対象のオペレータが正しく指定されているか確認 (パスのタイプミス / ワイルドカードの範囲)
  • 反応させたいイベントの対応トグル (Pre Cook / Destroy 等) がオンになっているか確認

❌ Problem: 子オペレータ系のコールバックが動かない
✅ Solution:

  • Number Children Change / Current Child Change は COMP (コンポーネント) 系オペレータでのみ動作する、SOP / TOP 等を監視対象にしても呼ばれない
  • Monitor OPs に指定したのが COMP かどうかを確認、子を持てるのはコンポーネントのみ
  • 子の検知ではなく COMP 自身の変化を見たい場合は Flag Change / UI Change 等の他コールバックを使う

❌ Problem: コールバック内のエラーで処理が止まる
✅ Solution:

  • Info DAT や Textport でエラーメッセージを確認し、コールバック内の Python 例外を特定
  • 重い処理をクックコールバック (onPreCook / onPostCook) に書くと監視対象のクックごとに走るため、処理を軽量化するか別経路に逃がす
  • 共通処理は Text DAT モジュールに切り出して import し、コールバック本文を最小化する

❌ Problem: 監視対象を変えても反応しない
✅ Solution:

  • Monitor OPs を書き換えた後に Active を一度オフ→オンして監視を再登録する
  • From Operator を使う場合は Execute from の設定 (実行基点) が意図通りか確認
  • 複数オペレータを監視する場合はワイルドカード (例: geo*) のパターンが対象を正しく捕捉しているか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

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

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

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

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