
概要 📖 – アニメーションクリップのブレンドと再生制御
Clip Blender CHOPは、複数のアニメーションクリップ間を滑らかにブレンドし、キューイング再生やルートトランスフォーム制御を行う CHOPです。Clip CHOP と組み合わせて、キャラクターアニメーションのステート遷移や目標位置への移動制御を 1 オペレータで完結します。
主な用途 🎯
- 複数のアニメーションクリップ間の滑らかなブレンドと切替
- キャラクターアニメーションのステート管理(待機・歩行・走行などの遷移)
- Clip CHOP のキューイング再生(Queue Enable による安全な切替タイミング制御)
- Position Type による移動制御(Blend To Target で目標位置への滑らかな移動)
- ルートトランスフォーム(位置・回転)チャンネルの管理とジャンプ検出
データフロー 🔄
入力: Default Clip CHOP + DAT List
↓
クリップ選択・キューイング (Queue Enable / Trigger)
↓
Play Speed / Step Forward / Backward 制御
↓
ルートトランスフォーム (X/Y/Z Trans, X/Y/Z Rot)
↓
Transform ブレンド (Blend To Target / Translate / Rotate)
↓
出力: ブレンド済みアニメーションチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
ClipBlender Page 🎬
Default Clip / DAT List .clipsource 📂
ブレンド対象となるクリップソースの指定
Default Clip .default 🎞️
– デフォルトで再生する有効な Clip CHOP へのオペレータパス
– このクリップが起動時・リセット時に再生される基準クリップとなる
DAT List .datlist 📋
– 利用可能なクリップ一覧を保持する Table DAT へのオペレータパス
– 複数クリップを切替えながら再生する場合の参照テーブル
Target .target 🎯
Clip CHOP の Position Type が「Blend To Target」のときに、ルートトランスフォームをブレンドする目標位置を指定する 3 軸パラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .targetx |
ターゲット位置の X 座標 |
| Y | .targety |
ターゲット位置の Y 座標 |
| Z | .targetz |
ターゲット位置の Z 座標 |
再生制御 .playback ▶️
再生速度・ステップ・遅延などの再生コントロール
Play Speed .playspeed ⏩
– アニメーションシーケンス再生のスケール係数
– 1.0 = 等速、0.5 = 半速、2.0 = 倍速で再生
Step Forward .stepforward ⏭️
– クリップを 1 ステップ進める制御パルス
Step Backward .stepbackward ⏮️
– クリップを 1 ステップ戻す制御パルス
Delay Samples .delay ⏳
– アニメーションデータの出力を指定サンプル数遅延させる
– キャラクター応答の同期調整やパイプライン補正に使用
Reset / スクリプト .reset 🔄
リセットおよび終了時スクリプトの設定
A End Script .aend 📜
– クリップ A 終了時に実行されるスクリプト
– ※公式 docs では Broken と記載されており、現行版では機能しない可能性
Reset .reset 🔁
– オン: clipblender をリセットし、Default Clip CHOP で定義されたクリップを再生待機状態にする
Reset Pulse .resetpulse ⚡
– パルス: 即座にリセットして Default Clip CHOP のクリップ再生を開始
Channels Page 📡
時間関連チャンネル .timechannels ⏱️
現在再生中のクリップに関する時間情報を出力するチャンネル名の指定
Output Time Remaining .timeremaining ⏰
– このパラメータで指定した名前のチャンネルが、現在のクリップの残り時間を返す
Time Channel .timechannel 🕐
– このパラメータで指定した名前のチャンネルが、現在のクリップの経過時間を返す
ルートトランスフォーム(Translate) .roottrans 📐
Clipblender Motion Root を定義するアニメーション階層の Translate チャンネル
X Root Trans .xtrans ↔️
– アニメーション階層の Translate X チャンネル(Clipblender Motion Root を定義)
Y Root Trans .ytrans ↕️
– アニメーション階層の Translate Y チャンネル
Z Root Trans .ztrans 🔃
– アニメーション階層の Translate Z チャンネル
ルートトランスフォーム(Rotate) .rootrot 🔄
Clipblender Motion Root を定義するアニメーション階層の Rotate チャンネル
X Root Rot .xrot 🔁
– アニメーション階層の Rotate X チャンネル(Clipblender Motion Root を定義)
Y Root Rot .yrot 🔂
– アニメーション階層の Rotate Y チャンネル
Z Root Rot .zrot 🔄
– アニメーション階層の Rotate Z チャンネル
キュー制御 .queue 🎵
クリップ間切替のタイミング制御に関わるキューチャンネル
Queue Enable .qenable 🚦
– アニメーションクリップに付加できる「Queue Enable」チャンネル名を指定
– 値が 1 のとき: 現クリップは他クリップへのブレンドが安全でない状態 → clipblender は次クリップを「キュー」して即時再生しない
– 値が 0 のとき: アニメーション要求は即座に実行される
Queue Trigger .qtrigger 🎯
– キュートリガーチャンネル名を指定(仕様詳細は公式 docs にて Unknown 扱い)
Pre-Rotate Adds .prerotate 🔃
– 回転前加算チャンネル名(仕様詳細は公式 docs にて Unknown 扱い)
Transform Page 🔄
次クリップへのトランスフォーム .doxform 🔀
次に再生するクリップへのトランスフォーム適用設定
Transform Next Clip .doxform 🔀
– 次のクリップに対してトランスフォーム(Translate / Rotate)を適用するかのトグル
Translate / Rotate .translate_rotate 📐
次クリップへ適用する平行移動と回転のオフセット
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .tx |
Translate X オフセット |
| Y | .ty |
Translate Y オフセット |
| Z | .tz |
Translate Z オフセット |
ジャンプ検出 / ロギング .jump 🦘
クリップ切替時のジャンプ(不連続な位置移動)検出とログ設定
Print State .printstate 🖨️
– clipblender の現在のステート情報をコンソールに出力するパルス
Log Jumps .logjumps 📝
– クリップ切替時に発生したジャンプをログに記録するトグル
Jump Min .jumpmin 📉
– ジャンプとして検出する最小しきい値
Jump Max .jumpmax 📈
– ジャンプとして検出する最大しきい値
Jump Area XY .jumpxy 📊
– XY 平面上でジャンプを検出する範囲
Fix Jump .fixjump 🛠️
– 検出したジャンプを自動補正するトグル
Log .logpulse 📋
– 現在のジャンプ情報をログ出力するパルス
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: キャラクターの待機→歩行ステート遷移 🚶
Idle Clip CHOP + Walk Clip CHOP → Clip Blender CHOP (Default Clip / DAT List) → SOP rig
- Idle Clip CHOP と Walk Clip CHOP をそれぞれ準備し、DAT List テーブルにクリップ一覧を記述
- Clip Blender CHOP の Default Clip を Idle Clip CHOP に設定
- ステート遷移トリガーで Default Clip を Walk Clip CHOP に切替え
- Queue Enable チャンネルを 0 にしておけば即座にブレンド開始
- 出力チャンネルをキャラクターの SOP rig に接続して滑らかな遷移を実現
Example 2: 目標位置への Blend To Target 移動 🎯
Walk Cycle Clip CHOP → Clip Blender CHOP (Target X/Y/Z) → Geometry COMP
- 歩行アニメーションの Clip CHOP を準備し、Position Type を「Blend To Target」に設定
- Clip Blender CHOP の Target X / Y / Z にゴール座標を入力
- X/Y/Z Root Trans チャンネル名を指定して、ルートトランスフォームをブレンド対象にする
- Play Speed で移動速度を調整し、目標位置に到達するまでの時間をコントロール
- Geometry COMP の Transform に出力を Export してキャラクターを滑らかに移動
Example 3: キューイングで安全なクリップ切替 🚦
Action Clip CHOPs (with Queue Enable) → Clip Blender CHOP → Animation Output
- 各 Clip CHOP に Queue Enable チャンネル(値 1 / 0)を埋め込んでおく
- アクションの「ブレンド禁止区間」を 1、「ブレンド可能区間」を 0 に設定
- Clip Blender CHOP の Queue Enable パラメータでチャンネル名を指定
- 切替要求時に Queue Enable=1 ならブレンド開始を遅延、=0 で即時実行
- アニメーションの不自然な途切れを防ぎながらクリップ切替が可能
関連オペレータ 🔗
類似機能OP 🔍
- Clip CHOP — Clip Blender が参照する単一クリップ再生 CHOP(こちらが上流)
- Sequencer CHOP — クリップを時間軸でシーケンス再生(ブレンドではなくスケジュール志向)
- Beat CHOP — ビートに同期したアニメーションキューイングに使われる
組み合わせ推奨OP 🔄
- Clip CHOP — Default Clip として参照する基本入力ソース
- Filter CHOP — Clip Blender 出力後段でジッター除去・スムージング
- Lag CHOP — ブレンド遷移にさらにラグを加えて自然な動きに
- Math CHOP — 出力チャンネルのスケール・オフセット調整
- Trigger CHOP — Reset Pulse や Step Forward を駆動するイベントソース
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Clip Blender 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:
- Queue Enable チャンネルを Clip CHOP に追加し、ブレンド禁止区間を 1 に設定して安全なタイミングで切替する
- Log Jumps をオンにして Jump Min / Jump Max でしきい値を設定、Fix Jump で自動補正を有効化する
- 後段に Filter CHOP を入れて出力をスムージングする
❌ Problem: Blend To Target で目標位置に到達しない
✅ Solution:
- Clip CHOP の Position Type が「Blend To Target」になっているか確認(このモード以外では Target は無効)
- X / Y / Z Root Trans のチャンネル名がアニメーション階層のルートチャンネル名と完全一致しているか確認
- Play Speed が 0 になっていないか、Reset 状態でないかをチェック
❌ Problem: Default Clip CHOP / DAT List のパス指定でエラーが出る
✅ Solution:
- Default Clip パラメータが有効な Clip CHOP を指しているか確認(Null や別 family を指すとエラー)
- DAT List パラメータには Table DAT のパスのみ有効(Text DAT 等は不可)
- 相対パス vs 絶対パスを統一する。コンポーネント間参照は絶対パス推奨
❌ Problem: Step Forward / Step Backward が応答しない
✅ Solution:
- Reset がオン状態だと再生が停止しているため、Reset をオフにする
- Play Speed が 0 になっていないか、Delay Samples の値が大きすぎないかを確認
- Default Clip CHOP の出力にアニメーションデータが実際に流れているかを Null CHOP 経由で検証
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

