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

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

Parameter Execute DAT のパラメータ変化駆動 Python 実行を示す図

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

概要 📖 – パラメータの変化で Python を実行

Parameter Execute DATは、監視対象パラメータの変化を契機に Python コールバックを実行する DATです。パラメータが変化するたびに対応するコールバック関数が呼ばれるため、UI 操作や外部入力に応じたイベント駆動の処理を素直に書けます。複数値をグループ単位でまとめて受け取りたい場合は ParGroup Execute DAT が適しています。

主な用途 🎯

  • パラメータの値変化を Python コールバック (onValueChange) で受け取って処理を起動
  • 1 フレーム分の変化をまとめた一覧onValuesChanged でフレーム末尾に一括ハンドリング
  • パルス型パラメータのクリックonPulse で検出してアクションを実行
  • 式・エクスポート・モードの切替を契機に別 OP やシステムの状態を更新
  • カスタムパラメータの編集を起点に UI ロジックや state machine の遷移を駆動

データフロー 🔄

入力: 監視対象 OP とパラメータ (OPs / Parameters で指定)

値・式・エクスポート・モードの変化検出

Python コールバック (onValueChange(par) 等) 実行

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Parameter Execute Page 📋

監視対象と起動位置 🎯

Active .active
Active (有効) — On 時、参照しているパラメータの変化に反応してコールバックを起動
– Off 時は監視を停止 (パラメータが変わってもコールバックは呼ばれない)

From Operator .fromop 📍
From Operator (起動元 OP) — Execute From を Specified Operator にしたとき、スクリプトを実行する基点となる OP のパス

OPs .op 🔗
OPs (監視対象 OP) — トリガーとなるパラメータが属する OP を指定
– パターン指定で複数 OP をまとめて監視可能

Parameters .pars 🎚️
Parameters (監視対象パラメータ) — どのパラメータを監視してスクリプトを起動するか指定
t* のようなパターンで複数パラメータをまとめて対象にできる

Edit.. .edit ✏️
Edit.. (編集) — クリックでテキストエディタを開き、DAT 内の Python コールバック本体を編集
– 各コールバック関数 (onValueChange 等) の中身はこの DAT のテキストに直接記述する

起動位置の選択 .executeloc 🧭

Execute from (起動位置) — スクリプトをどの位置から実行するかを決めるメニュー (Tscript 専用)

項目 内部名 説明
Specified Operator .op From Operator (起動元 OP) で指定した OP の位置からスクリプトを実行
Current Node .self この Parameter Execute DAT 自身の位置からスクリプトを実行

監視するイベント種別 🔔

Value Change .valuechange 🔄
Value Change (値変化) — 指定パラメータの値が何らかの形で変化したとき onValueChange() を実行
– 各フレームに 1 回呼び出される

Values Changed .valueschanged 📑
Values Changed (値一覧変化) — フレーム末尾に onValuesChanged() を実行し、変化したパラメータの一覧をまとめて受け取る
– 各変化は (Par, 変化前の値) の名前付きタプルのリストとして渡される

On Pulse .onpulse
On Pulse (パルス時) — パルス型パラメータがクリックまたは Par.pulse() で発火したとき onPulse() を実行

Expression Change .expressionchange 🧮
Expression Change (式変化) — 指定パラメータの式が変化したとき onExpressionChange() を実行
– 例: 式を me.time.frame から me.time.seconds に変えると発火

Export Change .exportchange 📤
Export Change (エクスポート変化) — 指定パラメータへのエクスポート経路が変わったとき onExportChange() を実行
– 例: エクスポート元が /chopname/chan1 から /chopname2/chan2 に変わると発火

Enable Change .enablechange 🔌
Enable Change (有効/無効変化) — 指定パラメータが無効から有効に切り替わったとき onEnableChange() を実行

Mode Change .modechange 🔧
Mode Change (モード変化) — 指定パラメータのモードが定数 / 式 / エクスポート / バインドの間で切り替わったとき onModeChange() を実行

監視するパラメータの種類 🗂️

Custom .custom 🏷️
Custom (カスタム) — On 時、カスタムパラメータ (ユーザ定義パラメータ) を監視対象に含める

Built-In .builtin 🧱
Built-In (組み込み) — On 時、組み込みパラメータ (標準パラメータ) を監視対象に含める


File Page 📁

ファイル入出力 💾

File .file 📂
File (ファイル) — ロードするファイルのパスとファイル名 (.txt / .dat 対応)

Sync to File .syncfile 🔁
Sync to File (ファイル同期) — On 時、プロジェクト起動時にファイルを読み込み、以降はファイルと双方向同期
– DAT 側の編集はファイルに書き戻され、ファイル変更も DAT に反映される

Load on Start .loadonstart 🔄
Load on Start (起動時ロード) — On 時、プロジェクト起動時に 1 回だけファイルから読み込む

Load File .loadonstartpulse
Load File (ファイル読込) — パルスでファイルを即時再ロード

Write on Toe Save .write 💾
Write on Toe Save (保存時書込) — On 時、.toe プロジェクト保存時に 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: スライダーで明るさ反映 🎚️

Slider COMP (custom par) → Parameter Execute DAT (onValueChange) → Movie File In TOP

UI スライダーのカスタムパラメータを監視し、ユーザがスライダーを動かした瞬間に Python コールバックで TOP の明るさパラメータを書き換える、最もシンプルなイベント駆動フロー。

  1. 監視したい Slider COMP を用意し、Parameter Execute DAT の OPs にそのパスを指定
  2. Parameters に対象のカスタムパラメータ名を指定し、Custom を On にする
  3. Value Change を On にして onValueChange(par) 内で新しい値を読み出す
  4. コールバック内で op('moviefilein1').par.brightness = par.eval() のように反映する

Example 2: ボタンで保存実行 ⚡

Button COMP (pulse par) → Parameter Execute DAT (onPulse) → Script実行

カスタムのパルス型パラメータ (ボタン) を監視し、クリックされた瞬間に保存やリセットなどの一括処理を起動する用途。パルス専用のコールバックで明示的に「押された瞬間」だけを拾える。

  1. Button COMP にパルス型のカスタムパラメータ (ボタン) を作成
  2. Parameter Execute DAT の OPsParameters でそのパルスを指定
  3. On Pulse を On にして onPulse(par) にアクション処理を記述
  4. ボタンクリックまたは Par.pulse() でコールバックが起動し処理が走る

Example 3: 変化分をまとめて反映 📑

Control Panel COMP (custom pars) → Parameter Execute DAT (onValuesChanged) → Table DAT

コントロールパネルの複数パラメータを監視し、1 フレーム内で起きた変化をフレーム末尾に onValuesChanged でまとめて受け取り、設定値をテーブルに一括で書き戻す用途。

  1. Control Panel COMP の複数カスタムパラメータを OPs / Parameters でまとめて指定
  2. Values Changed を On にして onValuesChanged(changes) でフレーム末尾に一覧を取得
  3. 渡された (Par, 変化前の値) のリストを反復処理し、変化のあった項目だけ抽出
  4. Table DAT に cell.val で設定値を一括反映して状態を永続化

関連オペレータ 🔗

類似機能OP 🔍

  • ParGroup Execute DAT — パラメータをグループ単位でまとめて監視する版 (個別ではなく群)
  • CHOP Execute DAT — CHOP チャンネル値の変化を監視する版
  • DAT Execute DAT — DAT (テーブル) の内容変化を監視する版
  • Panel Execute DAT — UI パネルの状態変化を監視する版
  • OP Execute DAT — OP の状態 (フラグ・接続・削除等) の変化を監視する版
  • Execute DAT — プロジェクトのライフサイクル (start / exit / pre-frame 等) を監視する版

組み合わせ推奨OP 🔄

  • Parameter DAT — 監視対象 OP のパラメータ一覧をテーブルとして取得して併用
  • Script DAT — コールバック内で別の DAT を加工して結果を生成
  • Text DAT — 共通の処理関数を外部 module としてまとめて import

前処理・後処理DAT 🎯


Info DAT情報 📊

Parameter Execute 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:

  • Active パラメータが On になっているか確認
  • OPsParameters に監視対象が正しく指定されているか確認
  • 監視したいイベント種別 (Value Change / On Pulse 等) が On になっているか確認
  • カスタムパラメータを監視する場合は Custom が、標準パラメータの場合は Built-In が On か確認

❌ Problem: 毎フレーム呼ばれて処理が重い
✅ Solution:

  • 値が確定したときだけ処理したい場合は Value Change ではなく Values Changed を使いフレーム末尾に一括処理
  • onValueChange 内で前回値と比較し、必要なときだけ重い処理を実行
  • 監視対象を Parameters パターンで本当に必要なものだけに絞る

❌ Problem: Python 例外で他のコールバックも止まる
✅ Solution:

  • コールバック内を try / except Exception as e: で囲んで例外を吸収
  • Textport / Console でスタックトレースを確認し例外箇所を特定
  • 重い処理 (ファイル I/O など) はコールバック外に逃がし、UI スレッドをブロックしない設計に変更

❌ Problem: 想定と違うタイミングで発火する
✅ Solution:

  • 値変化のたびに呼びたいなら Value Change、フレーム末尾の確定値でよいなら Values Changed を使い分ける
  • 式やエクスポートの変更で発火している場合は Expression Change / Export Change を Off にして切り分け
  • Built-In を On にしていると内部パラメータの変化でも発火するため、不要なら Off にする

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました