
概要 📖 – クリップ再生とブレンド遷移
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 のブレンドモード適用
↓
出力: ブレンド済みチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 等)をクリップとして定義し、状態遷移時に滑らかにブレンドします。
- Table DAT にクリップ名・対応 Channel CHOP・アクティブ条件を記述して Rule DAT に指定
- 各クリップ用の Channel CHOP(tx, ty, tz, rx, ry, rz)を用意
- Clip CHOP の Transition を Blend、Blend Time を 0.3 秒に設定
- アクティブ条件(例: state == 'walk')が切り替わると 0.3 秒でクロスフェード
Example 2: Index Channel での外部信号駆動 🎯
Audio Spectrum CHOP → Math CHOP (正規化) → Clip CHOP (Index Channel) → 出力
オーディオ振幅やセンサー値からクリップ内の再生位置を直接ドライブし、リアクティブなアニメーション制御を実現します。
- Audio Spectrum CHOP で音声の周波数帯域エネルギーを抽出
- Math CHOP で 0〜1 の範囲に正規化
- Clip CHOP の Index Channel に正規化チャンネルを指定
- 音の強弱に応じてクリップ内の再生位置がリアルタイムに移動
Example 3: ループとループ解除のステートマシン 🔁
Trigger CHOP → Clip CHOP (Loop While Active + Loop Release Rule) → Geometry
アクティブな間だけクリップをループさせ、トリガー解除時に末尾まで完走させてから自然に止める制御を構築します。
- Loop While Active をオン、Loop Release Rule を「クリップ完走後に解除」に設定
- Trigger CHOP のチャンネルでアクティブ条件を ON/OFF
- ON の間はクリップが繰り返し再生
- 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 🎯
- 前処理: Trigger CHOP、Logic CHOP、Math CHOP
- 後処理: Filter CHOP、Lag CHOP、Null CHOP
Info CHOP情報 📊
Clip CHOP は Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_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 モードと独立に明示的な遷移時間を割り当て可能
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

