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

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

Clip CHOP のクリップ再生・ブレンド遷移を示す図

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

概要 📖 – クリップ再生とブレンド遷移

Clip CHOPは、Rule DAT で定義した複数クリップを切り替え・ブレンド遷移しながら出力する CHOPです。アニメーションクリップの再生制御を Rule DAT のテーブル定義 + Channel CHOPs の組み合わせで宣言的に管理できます。

主な用途 🎯

  • Rule DAT で定義した複数クリップのアクティブ切替再生
  • クリップ間のブレンド遷移(Blend / Wait Until End)
  • ループ再生制御(Loop While Active / Loop Release Rule)
  • 位置・回転チャンネルの絶対値・加算・ブレンドモード切替
  • Index Channel による外部信号からのクリップ位置駆動

データフロー 🔄

入力: Rule DAT(クリップ定義)+ 各クリップ用 Channel CHOPs

Clip CHOP(アクティブクリップ判定)

Transition / Blend Time に基づく遷移計算

Position Type / Rotation Type のブレンドモード適用

出力: ブレンド済みチャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Clip Page 🎬

Rule DAT .rdat 📋

クリップ定義テーブル DAT の指定:

  • Rule DAT パス: クリップ名・対応 Channel CHOP・アクティブ条件を行ごとに記述した DAT のパス

Callbacks DAT .callbacks 📞

クリップイベントを受ける Callbacks DAT:

  • Callbacks DAT パス: onClipStart / onClipEnd 等のコールバック関数を記述した Text DAT のパス

Reload DATs .reload 🔄

DAT 再読み込みのトリガー:

  • Reload DATs: Rule DAT や Callbacks DAT を編集した後にこのボタンで反映させる

Rotate Order .rord 🔁

回転チャンネルをブレンドする際の軸適用順(オイラー角の積算順序)

項目 内部名 説明
Rx Ry Rz .xyz X → Y → Z の順で回転を適用
Rx Rz Ry .xzy X → Z → Y の順で回転を適用
Ry Rx Rz .yxz Y → X → Z の順で回転を適用
Ry Rz Rx .yzx Y → Z → X の順で回転を適用
Rz Rx Ry .zxy Z → X → Y の順で回転を適用
Rz Ry Rx .zyx Z → Y → X の順で回転を適用

Transition .transtion 🔀

クリップ切替時の遷移方法

項目 内部名 説明
Blend .blend Blend Time の時間でクロスフェードしながら次クリップへ遷移
Wait Until End .waitend 現在のクリップが終わってから次クリップへ切替

Blend Time .blendtime

ブレンド遷移にかける時間長:

  • Blend Time: クロスフェードに費やす時間(単位は Blend Time Unit で指定)

Blend Time Unit .blendtimeunit 📐

Blend Time の単位:

  • Blend Time Unit: Blend Time の単位(フレーム / 秒 / サンプル)を選択

Next Clip .next ⏭️

次クリップの明示指定:

  • Next Clip: 現在のクリップ終了後に再生するクリップ名(Rule DAT に存在するクリップ名)

Next Blend Time .nblendtime

Next Clip 用のブレンド時間:

  • Next Blend Time: Next Clip への遷移にかけるブレンド時間

Next Blend Time Unit .nblendtimeunit 📏

Next Blend Time の単位:

  • Next Blend Time Unit: Next Blend Time の単位(フレーム / 秒 / サンプル)を選択

Loop While Active .loopactive 🔁

ループ再生の有効化:

  • Loop While Active: オン: アクティブ条件が継続する限りクリップを末尾→先頭で繰り返す。オフ: 1 回のみ再生して終了。

Loop Release Rule .looprelease 🚪

ループからの抜け方の指定:

  • Loop Release Rule: アクティブ条件が外れたときにループを抜けるタイミングのルール

Index Channel .indexchannel 🎯

外部チャンネルでの再生位置駆動:

  • Index Channel: クリップの再生位置(インデックス)を外部 CHOP のチャンネルから直接ドライブする際の参照先

Position Type .abspos 📍

位置チャンネル(tx, ty, tz 等)のブレンド方式

項目 内部名 説明
Override / Absolute .override クリップの絶対位置をそのまま採用
Blend to End .blendend 現クリップ末尾の位置に向かってブレンド
Blend to Target .blendtarget 次クリップ開始位置に向かってブレンド
Add .add 現状の位置にクリップ位置を加算(相対オフセット)

Rotation Type .rottype 🌀

回転チャンネル(rx, ry, rz)のブレンド方式

項目 内部名 説明
Same as Position .same Position Type と同じモードを回転にも適用
Override / Absolute .override クリップの絶対回転をそのまま採用
Blend to End .blendend 現クリップ末尾の回転に向かってブレンド
Blend to Target .blendtarget 次クリップ開始回転に向かってブレンド
Add .add 現状の回転にクリップ回転を加算(相対オフセット)

Pause at End .pauseend ⏸️

クリップ末尾での挙動:

  • Pause at End: オン: クリップが末尾に到達したら最終フレームで停止し続ける。オフ: 末尾で再生終了して次の遷移へ。

Common Page 🔧

Time Slice .timeslice ⏱️

Time Slice モードの強制設定:

  • オン: チャンネルを「タイムスライス」モードに強制
  • タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間

Scope .scope 🎯

影響を受けるチャンネルの絞り込み:

  • Scope 文字列: 影響を受けるチャンネルを指定する文字列
  • パターンマッチング: *[1-10] 等のパターンが使用可能

Sample Rate Match .srselect

複数の入力 CHOP のサンプルレートが異なる場合の処理方法

項目 内部名 説明
Resample At First Input’s Rate .first 最初の入力のレートで他をリサンプル
Resample At Maximum Rate .max 最高サンプルレートでリサンプル
Resample At Minimum Rate .min 最低サンプルレートでリサンプル
Error If Rates Differ .err レート不一致でエラー

Export Method .exportmethod 📤

CHOP チャンネルをパラメータに接続する方法

項目 内部名 説明
DAT Table by Index .datindex DAT テーブルのインデックスでチャンネルとパラメータを対応付け
DAT Table by Name .datname DAT テーブルの行名でチャンネルとパラメータを対応付け
Channel Name is Path:Parameter .autoname チャンネル名を `path:parameter` 形式で記述し直接対応付け

Export Root .autoexportroot 🌳

Channel Name is Path:Parameter モード時のパス基点:

  • Export Root パス: autoname モードでチャンネル名のパス部分を相対化する基点 OP のパス

Export Table .exporttable 📋

DAT Table エクスポート方式での参照 DAT:

  • Export Table DAT: datindex / datname モード時に参照する DAT のパス

Rename from .commonrenamefrom 🔤

リネーム対象チャンネルのパターン:

  • Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列

Rename to .commonrenameto 🔁

リネーム後の置換パターン:

  • Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)

実践アイデア 💡

Example 1: アニメーションクリップ間のブレンド遷移 🎬

Rule DAT (clip 定義) + Channel CHOPs → Clip CHOP (Transition: Blend) → Geometry COMP

複数のキャラクターアニメーション(idle / walk / jump 等)をクリップとして定義し、状態遷移時に滑らかにブレンドします。

  1. Table DAT にクリップ名・対応 Channel CHOP・アクティブ条件を記述して Rule DAT に指定
  2. 各クリップ用の Channel CHOP(tx, ty, tz, rx, ry, rz)を用意
  3. Clip CHOP の Transition を Blend、Blend Time を 0.3 秒に設定
  4. アクティブ条件(例: state == 'walk')が切り替わると 0.3 秒でクロスフェード

Example 2: Index Channel での外部信号駆動 🎯

Audio Spectrum CHOP → Math CHOP (正規化) → Clip CHOP (Index Channel) → 出力

オーディオ振幅やセンサー値からクリップ内の再生位置を直接ドライブし、リアクティブなアニメーション制御を実現します。

  1. Audio Spectrum CHOP で音声の周波数帯域エネルギーを抽出
  2. Math CHOP で 0〜1 の範囲に正規化
  3. Clip CHOP の Index Channel に正規化チャンネルを指定
  4. 音の強弱に応じてクリップ内の再生位置がリアルタイムに移動

Example 3: ループとループ解除のステートマシン 🔁

Trigger CHOP → Clip CHOP (Loop While Active + Loop Release Rule) → Geometry

アクティブな間だけクリップをループさせ、トリガー解除時に末尾まで完走させてから自然に止める制御を構築します。

  1. Loop While Active をオン、Loop Release Rule を「クリップ完走後に解除」に設定
  2. Trigger CHOP のチャンネルでアクティブ条件を ON/OFF
  3. ON の間はクリップが繰り返し再生
  4. OFF にした瞬間ではなく、現在のループが末尾まで完走してから停止

関連オペレータ 🔗

類似機能OP 🔍

  • Animation COMP — キーフレームベースのアニメーション編集に特化(Clip CHOP はクリップ単位の切替・ブレンド向け)
  • Timer CHOP — 再生時間・トリガー駆動のシーケンス制御(Clip CHOP は複数クリップのブレンド遷移が主目的)

組み合わせ推奨OP 🔄

  • Trigger CHOP — クリップのアクティブ条件を発火させる起点として組合せ
  • Logic CHOP — 複数の状態条件を AND/OR で組み合わせて Rule DAT のアクティブ列に渡す
  • Filter CHOP — Clip CHOP 出力をさらに時間方向にスムージング
  • Math CHOP — Index Channel に渡す前の値域変換・正規化に使用
  • Animation COMP — Clip CHOP のチャンネルソースとしてキーフレームアニメーションを供給

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Clip CHOP は Info CHOP による詳細情報取得に対応しています。

CHOP固有情報 🎚️

  • start: CHOPインターバルの開始(サンプル単位)
  • length: CHOPのサンプル数
  • sample_rate: フレーム毎秒のサンプルレート
  • num_channels: CHOPのチャンネル数
  • time_slice: タイムスライス有効時は1、無効時は0
  • export_sernum: Export接続の更新回数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間(ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: クリップが切替時に位置がジャンプする
✅ Solution:

  • Position Type が override になっていないか確認、ブレンドが必要なら blendend または blendtarget へ変更
  • Blend Time が 0 になっていないか確認、十分な遷移時間(例: 0.3〜0.5 秒)を設定
  • Rotate Order が前後クリップで一致しているか確認、不一致だとオイラー角合成でジャンプする

❌ Problem: Rule DAT を編集してもクリップ構成が反映されない
✅ Solution:

  • Reload DATs ボタンを押して Rule DAT / Callbacks DAT を再読み込み
  • Rule DAT の構造(列名・必須フィールド)が公式仕様と一致しているか確認
  • Channel CHOP の参照パスが Rule DAT のセルと一致しているか再確認

❌ Problem: Loop Release Rule に従ってループが抜けない
✅ Solution:

  • Loop While Active がオンになっているか確認(オフだとループ自体しない)
  • Loop Release Rule のルール条件と現在のアクティブ状態が整合しているか Rule DAT を再点検
  • 前段で Logic CHOP を入れてアクティブ条件をシンプルな 0/1 に整える

❌ Problem: Transition = Wait Until End で次クリップへの切替が遅い
✅ Solution:

  • Wait Until End は現クリップ完走を待つため、長尺クリップでは遷移が遅延するのが仕様
  • 即時切替が必要な場面では Transition を Blend に変更、Blend Time を短く(0.1 秒等)設定
  • Next Clip + Next Blend Time を使えば Transition モードと独立に明示的な遷移時間を割り当て可能

参考資料 📚

その他 🔗

公式リソース 📖

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