
概要 📖 – セグメント補間によるアニメーション合成
Interpolate CHOPは、複数の入力セグメントをシェイプ指定の補間カーブで合成し、滑らかな遷移チャンネルを出力する CHOPです。Linear / Cubic / Ease in / Ease out / Cosine の各カーブ形状と、オーバーラップ時の優先度を 1 オペレータで切替できます。
主な用途 🎯
- 複数の入力 CHOP セグメントを時間軸に沿って滑らかに補間
- Linear / Cubic / Ease in / Ease out / Cosine 等のシェイプ選択によるイージング合成
- アニメーションキーフレーム同士のブレンド・トランジション制御
- オーバーラップ区間のコンフリクト解決(Average / First / Last の優先度切替)
- チャンネル番号またはチャンネル名のマッチング方式によるマルチ入力統合
データフロー 🔄
入力: 複数の入力 CHOP(各セグメント)
↓
Match by 方式でチャンネル対応付け
↓
Shape 補間カーブの適用
↓
Overlap Priority による衝突解決
↓
出力: 補間されたチャンネル
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Interpolate Page 📋
Shape .blendfunc 🎛️
補間カーブの形状を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .lin |
直線の補間カーブ |
| Ease in | .ei |
指数的な立ち上がり(始点が緩やか) |
| Ease out | .eo |
指数的な減衰(終点が緩やか) |
| Ease in Ease out | .cos |
ハーフコサインによる両端緩やかなブレンド |
| Cubic | .cub |
三次スプライン曲線による補間 |
| Add | .add |
重なる部分があれば加算合成 |
| Hold Previous | .holdprev |
直前のセグメント値を保持(補間せずステップ状) |
Overlap Priority .overlap 🔀
入力が単一フレームでない場合、入力 CHOP 同士のオーバーラップを解決する方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Average Overlaps | .avg |
競合するチャンネルを平均で結合 |
| First Segment has Priority | .first |
最も早い開始時刻を持つセグメントを優先 |
| Last Segment has Priority | .last |
最も遅い開始時刻を持つセグメントを優先 |
Match by .match 🔗
各入力のチャンネルをどのように対応付けるかを指定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Channel Number | .index |
チャンネル名を無視し、順番でペアリング |
| Channel Name | .name |
順序によらずチャンネル名で対応付け |
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: キーフレーム間のイージング遷移 🎬
Constant CHOP (start) + Constant CHOP (end) → Interpolate CHOP (Shape: Ease in Ease out) → アニメーション値
- 開始値を持つ Constant CHOP と終了値を持つ Constant CHOP を用意
- Interpolate CHOP の Shape を「Ease in Ease out」に設定
- 両端が緩やかにつながるハーフコサインカーブで滑らかに遷移
- 出力をオブジェクトの位置やフェード値に Export
Example 2: 複数アニメーションセグメントのブレンド 🎨
Animation COMP × N → Interpolate CHOP (Shape: Cubic, Match by: Channel Name) → Output
- 複数の Animation COMP を入力としてつなぐ
- Match by を「Channel Name」に設定し名前一致で対応付け
- Shape を「Cubic」にして三次スプラインで滑らかな曲線補間
- オーバーラップ部分は Overlap Priority で挙動を切替
Example 3: ステップ状切替(Hold Previous 利用) 🪜
Pattern CHOP → Interpolate CHOP (Shape: Hold Previous) → Step Output
- 離散的な値を出力する Pattern CHOP を入力
- Shape を「Hold Previous」に設定
- 前のセグメント値を保持してステップ状の出力が得られる
- Quantized なシーケンス制御や階段状の値変化に活用
関連オペレータ 🔗
類似機能OP 🔍
- Lag CHOP — 値変化に遅延と慣性を与える時間方向のスムージング
- Filter CHOP — 時間方向の Boxcar / Gaussian 平滑化(補間ではなく前後サンプル平均)
組み合わせ推奨OP 🔄
- Constant CHOP — Interpolate に与えるセグメント端点の値ソースに利用
- Math CHOP — 補間後の値を Range 変換でスケーリング
- Trail CHOP — 補間カーブの形状を時間履歴として可視化
- Filter CHOP — Interpolate 後段にさらにスムージングを追加
前処理・後処理CHOP 🎯
Info CHOP情報 📊
Interpolate 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:
- Shape の選択を見直す(Linear は折れ線、Cubic / Ease in Ease out は滑らか)
- 入力セグメント間にギャップがあるか確認、必要なら Resample CHOP で揃える
- Sample Rate Match の設定でレートを統一しているか確認
❌ Problem: オーバーラップ区間で値がジャンプする
✅ Solution:
- Overlap Priority を「Average Overlaps」にして競合を平均化
- First / Last 優先のいずれが意図に合うか入力時刻を確認
- 後段に Filter CHOP を入れて段差を緩和
❌ Problem: チャンネルが正しく対応付けされない
✅ Solution:
- Match by を「Channel Name」にして名前ベースで対応付け
- 入力 CHOP のチャンネル名・チャンネル数を確認
- 前段に Select CHOP でチャンネル選別・リネーム
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

