
概要 📖 – クリップから合図を受け取る
Clip DATは、参照する Clip CHOP が Clip Blender CHOP 上で再生されたフレームに合わせてスクリプトを実行する DATです。Clip パラメータで対象 Clip CHOP を指定し、Execute on Frame (First / Loop) や Execute on Exit でトリガフレームを指示すると、ブレンダーがそのクリップを再生したタイミングで Edit.. または File 経由のスクリプトが Execute from で選んだスコープから走ります。
主な用途 🎯
- Clip Blender CHOP でのクリップ再生イベント連動スクリプトとして、参照する Clip CHOP がブレンダー上で再生されたタイミングで Python を実行
- クリップ最初のフレームでの単発イベント発火として、SE 再生 / UI 切替 / ステート遷移の起点をクリップ駆動で起こす
- クリップループ毎のフレームスクリプトとして、ループ中の毎周回でパラメータ更新やログ出力を実行
- クリップ終了時のクリーンアップ処理として、ブレンダーがそのクリップを退場させた瞬間に後始末スクリプトを走らせる
- 外部 .txt / .dat ファイルからのスクリプト読み込みとして、ディスクや http URL 上のスクリプトを Reload File で取り込みデザイナーが TouchDesigner 外で編集可能化
データフロー 🔄
入力: Edit.. で記述したスクリプトテキスト + 参照 Clip CHOP + Clip Blender CHOP の再生状態
↓
Clip DAT が Execute on Frame (First) / (Loop) / Exit のトリガ条件で Execute from のスコープからスクリプトを実行
↓
出力: スクリプトが他の OP / コンポーネントに与える副作用 (パラメータ変更・イベント発火 等)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Text Page 📋
Edit.. .edit 📝
テキスト本文を編集するボタン:
- Edit.. ボタン: クリックすると外部テキストエディタが起動し、Clip DAT 内のスクリプト本文を追加 / 編集 / 削除できる
File .file 📂
スクリプトを読み込むファイルパス:
- File パス: 読み込むファイルのパスと名前。
.txtと.datを受け付け、ディスクおよびhttp://URL の両方に対応
Reload File .reload 🔄
ファイルを再読み込みするパルスパラメータ:
- Reload File パルス: 値を
1にするとFileパラメータで指定したファイルを DAT に再読み込みする
Execute Page ⚙️
Execute from .executeloc 📍
スクリプトを実行するスコープ (どの OP の文脈で走らせるか) を決めるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Current Node | .current |
現在のノード位置のスコープでスクリプトを実行 |
| This Node | .here |
Clip DAT 自身のスコープでスクリプトを実行 |
| Specified Component | .comp |
Component パラメータで指定したコンポーネントのスコープでスクリプトを実行 |
Clip .clip 🎬
トリガ元となる Clip CHOP のパス:
- Clip 参照: Clip Blender CHOP 内で再生される対象 Clip CHOP のパス。このクリップが走った瞬間に Clip DAT のスクリプトがトリガされる
Component .component 🧩
Specified Component モードでのスコープ対象:
- Component パス:
Execute fromがSpecified Componentのとき、スクリプトを実行するコンポーネントのパス
Execute on Frame (First) .framefirst ▶️
クリップ初回再生フレームでの単発実行:
- Execute on Frame (First) パルス: 指定したクリップ index がブレンダー上で最初に再生されるタイミングでスクリプトを 1 回だけ実行。クリップがループしても発火するのは初回のみ
Execute on Frame (Loop) .frameloop 🔁
クリップループ毎のフレーム実行:
- Execute on Frame (Loop) パルス: 指定したクリップ index が再生されるたびにスクリプトを実行。ループしているクリップでは周回ごとに発火する
Execute on Exit .exit ⏹️
クリップ退場時のスクリプト実行:
- Execute on Exit パルス: Clip Blender CHOP が対象クリップを退場 (exit) させたタイミングでスクリプトを実行。終了処理 / クリーンアップに使う
Print State .printstate 🖨️
デバッグ情報出力:
- Print State パルス: デバッグ情報をテキストポートに出力。発火条件の検証やトリガフレームの確認に使う
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: クリップ開始時にサウンドエフェクトをトリガ 🎵
Animation COMP → Clip CHOP → Clip Blender CHOP / Clip DAT (Execute on Frame First) → Audio File In CHOP play
Animation COMP で作ったアニメーションクリップを Clip Blender CHOP に流すパッチで、Clip DAT の Execute on Frame (First) に Audio File In CHOP の再生コマンドを書いておくと、ブレンダーがそのクリップを再生開始した瞬間に SE が一発鳴る構成。
- Clip CHOP で対象アニメーションを生成し、Clip Blender CHOP の入力に接続
- Clip DAT の Clip パラメータに対象 Clip CHOP のパスを指定
- Execute from を
This Nodeに、Execute on Frame (First) パルスを有効化 - Edit.. を開いて
op('audio_se').par.play.pulse()のような 1 行を記述
Example 2: ループするクリップで周回毎にステート更新 🔁
Clip CHOP (loop) → Clip Blender CHOP / Clip DAT (Execute on Frame Loop) → State Table DAT update
ループ再生されるクリップに紐づけた Clip DAT で Execute on Frame (Loop) を有効化し、周回ごとに Table DAT のステートカウンタや UI フラグを更新するパターン。タイマーや FPS 監視と組み合わせて長時間インスタレーションのヘルスチェックにも使える。
- Clip CHOP を loop モードで Clip Blender CHOP に流す
- Clip DAT の Execute on Frame (Loop) を有効化
- Edit.. に
op('state').cell[0,0] = int(op('state').cell[0,0]) + 1のような更新文を記述
Example 3: クリップ退場時のクリーンアップ 🧹
Clip Blender CHOP exit → Clip DAT (Execute on Exit) → Reset UI / Stop Audio
ブレンダーが次のクリップに遷移して対象クリップが退場 (exit) するタイミングで Clip DAT が走る形にし、退場専用の後処理 (UI のリセット・走っていた音声の停止・一時テーブルの破棄 等) をまとめて実行する構成。
- Clip DAT の Execute on Exit を有効化
- Edit.. に退場時に走らせたい cleanup 関数を記述 (
op('ui').par.reset.pulse()等) - Specified Component モードを使う場合は Execute from を
compに切替え、Component パスを対象 COMP に設定
Example 4: 外部 .txt ファイルでデザイナーがスクリプトを編集 📂
external .txt file → Clip DAT (File + Reload File) → Clip Blender CHOP play → script execution
ディスク上または http URL 上の .txt / .dat ファイルを File パラメータで参照する形にしておき、デザイナーが TouchDesigner 外のエディタで内容を更新したあと Reload File パルスでスクリプトを再読込する運用。ステージ運用中でも Clip DAT 内のロジックを差し替えられる。
- File パラメータに
scripts/clip_intro.txt等の外部ファイルパスを指定 - デザイナーが外部エディタで内容を更新
- Reload File パルスで DAT に再読込
- 次回 Clip Blender CHOP が当該クリップを再生したときから新スクリプトが走る
関連オペレータ 🔗
類似機能OP 🔍
- Text DAT — 汎用テキスト / スクリプト保持 DAT (Clip 連動なし)
- Execute DAT — プロジェクト / フレームレベルイベントでスクリプトを走らせる別系統
組み合わせ推奨OP 🔄
- Clip CHOP — Clip パラメータが直接指す再生対象のクリップ
- Clip Blender CHOP — クリップを再生してトリガを発生させる本体
- Animation COMP — Clip CHOP に渡すアニメーションを編集するコンポーネント
- Audio File In CHOP — クリップ開始トリガで再生する SE / BGM のソース
- Table DAT — ループ毎の状態更新や履歴保存先として併用
前処理・後処理DAT 🎯
Info DAT 情報 📊
Clip DAT は Info CHOP 経由で num_rows / num_cols / time_lastcooked / cook_time / cpu_time 等の共通 DAT / OP Info チャンネルを取得でき、トリガ発火の頻度監視や cook 負荷のチェックに利用できます。
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:
Clipパラメータに対象 Clip CHOP のパスを正しく指定しているか確認- 対象 Clip CHOP が Clip Blender CHOP の入力に接続され、実際に再生されているか Print State で確認
Execute on Frame (First)/(Loop)/Exitのいずれかのトグルが有効になっているか確認
❌ Problem: Execute from の参照スコープで NameError / AttributeError が出る
✅ Solution:
Execute fromがCurrent Node/This Node/Specified Componentのどれになっているかでop('...')の解決基点が変わる点を再確認Specified ComponentモードのときはComponentパラメータが対象 COMP を指しているかを確認- Print State パルスでトリガ条件と Execute from のスコープを切り分けてからスクリプト本文を見直す
❌ Problem: 外部ファイルからスクリプトが読み込まれない
✅ Solution:
Fileパラメータのパスが正しいか確認 (相対パスは .toe ファイルからの相対).txt/.dat以外の拡張子のファイルは受け付けられない点に注意- ファイル更新後に
Reload Fileパルスを叩いて再読込しているか確認
❌ Problem: クリップループでスクリプトが想定より多く / 少なく発火する
✅ Solution:
Execute on Frame (First)は初回 1 回のみ、Execute on Frame (Loop)はループ周回ごとに発火する違いを確認- Clip Blender CHOP 側のブレンド設定で対象クリップが本当に再生されている期間と発火フレームを照合
- 前段の Clip CHOP の loop / range 設定とトリガフレーム index が噛み合っているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Clip DAT
- Clip Blender CHOP – クリップ再生の本体
- Clip CHOP – Clip DAT が参照するクリップ
- Animation COMP – クリップ作成元コンポーネント

