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

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

Clip DAT が Clip Blender CHOP のクリップ再生イベントでスクリプトをトリガする図

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

概要 📖 – クリップから合図を受け取る

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 / コンポーネントに与える副作用 (パラメータ変更・イベント発火 等)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 fromSpecified 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 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: クリップ開始時にサウンドエフェクトをトリガ 🎵

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 が一発鳴る構成。

  1. Clip CHOP で対象アニメーションを生成し、Clip Blender CHOP の入力に接続
  2. Clip DAT の Clip パラメータに対象 Clip CHOP のパスを指定
  3. Execute from を This Node に、Execute on Frame (First) パルスを有効化
  4. 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 監視と組み合わせて長時間インスタレーションのヘルスチェックにも使える。

  1. Clip CHOP を loop モードで Clip Blender CHOP に流す
  2. Clip DAT の Execute on Frame (Loop) を有効化
  3. 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 のリセット・走っていた音声の停止・一時テーブルの破棄 等) をまとめて実行する構成。

  1. Clip DAT の Execute on Exit を有効化
  2. Edit.. に退場時に走らせたい cleanup 関数を記述 (op('ui').par.reset.pulse() 等)
  3. 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 内のロジックを差し替えられる。

  1. File パラメータに scripts/clip_intro.txt 等の外部ファイルパスを指定
  2. デザイナーが外部エディタで内容を更新
  3. Reload File パルスで DAT に再読込
  4. 次回 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 fromCurrent 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 が噛み合っているか確認

参考資料 📚

その他 🔗

公式リソース 📖

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