
概要 📖 – Animation COMP のキーフレームをチャンネル化
Keyframe CHOPは、Animation COMP に格納されたキーフレームを参照し、指定したサンプルレートでチャンネル化して出力する CHOPです。入力にルックアップインデックスを与えることで任意のタイミングでキーフレームを参照でき、Time Slice もそのまま伝播します。
主な用途 🎯
- Animation COMP に作成したキーフレームをチャンネルとしてサンプリング出力
- パラメータ・オブジェクトのアニメーション(位置・回転・スケール等)の再生
- 第 1 入力をルックアップインデックスとして使い任意のタイミングでキーフレームを参照
- Time Slice を伝播させたフレーム同期再生(入力が Time Slice なら出力も Time Slice)
- Extend Left / Extend Right 設定によりレンジ外の挙動(Hold / Cycle / Mirror 等)を制御
データフロー 🔄
入力: Animation COMP のキーフレームデータ
↓
Sample Rate でサンプリング
↓
ルックアップインデックス(任意の input)
↓
Extend Left / Extend Right によるレンジ外補完
↓
出力: 補間済みチャンネル値
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Keyframe Page 📋
Animation Component .animation 🎞️
Animation Component .animation 🎞️
– キーフレーム情報を保持する Animation COMP のパスを指定
– 同 COMP の Animation Editor で作成したチャンネルがそのまま出力される
Sample Rate .rate ⏱️
– 出力チャンネルのサンプルレート(samples per second)
– 既定はプロジェクトの timeline frame rate に追従、用途に応じて任意の値を設定可
Extend Left .left ⬅️
キーフレームのレンジ開始より前(before range)の挙動を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
最初のキーフレーム値をそのまま保持 |
| Slope | .slope |
最初のキーフレームの傾き(slope)を維持して延長 |
| Cycle | .cycle |
レンジ全体をループとして繰り返す |
| Mirror | .mirror |
レンジを反転して鏡映で繰り返す |
| Default Value | .default |
Default Value パラメータの値を出力 |
Extend Right .right ➡️
キーフレームのレンジ終了より後(after range)の挙動を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
最後のキーフレーム値をそのまま保持 |
| Slope | .slope |
最後のキーフレームの傾き(slope)を維持して延長 |
| Cycle | .cycle |
レンジ全体をループとして繰り返す |
| Mirror | .mirror |
レンジを反転して鏡映で繰り返す |
| Default Value | .default |
Default Value パラメータの値を出力 |
Default Value .defval 🎚️
Default Value .defval 🎚️
– Extend Left / Extend Right を Default Value に設定したときに出力する値
– レンジ外で常に固定値を出したいときに使用
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: Animation COMP のキーフレームをそのまま再生 🎞️
Animation COMP (キーフレーム編集) → Keyframe CHOP → Geometry COMP (transform)
- Animation COMP を作成し Animation Editor でチャンネル(tx, ty, tz 等)にキーを打つ
- 同 COMP 内の Keyframe CHOP を選択、Animation Component パラメータに自身を指定
- Sample Rate を timeline frame rate に合わせて設定
- 出力チャンネルを Geometry COMP の transform パラメータに Export して再生
Example 2: ルックアップインデックスで任意タイミング再生 🕹️
LFO CHOP / Slider → Keyframe CHOP (input1: lookup index) → 出力
- LFO CHOP やスライダー UI 等から index 値を生成する CHOP を用意
- Keyframe CHOP の入力 1 に lookup index を接続
- lookup index の値に応じて Animation COMP のキーフレームが任意タイミングで参照される
- ユーザ操作と連動した非線形な再生を実装
Example 3: Cycleでループアニメーション 🔁
Animation COMP → Keyframe CHOP (Extend Right: cycle) → Light intensity
- Animation COMP に 1 周期分のキーフレーム(例: 0〜1 秒)を作成
- Keyframe CHOP の Extend Right を
Cycleに設定 - レンジ終了以降もキーフレーム全体が繰り返し再生される
- ライト強度や色のループ演出として活用
関連オペレータ 🔗
類似機能OP 🔍
- Pattern CHOP — 数式で動的にチャンネル波形を生成(キーフレーム不要のアプローチ)
組み合わせ推奨OP 🔄
- LFO CHOP — LFO 波形を lookup index として与え非線形再生
- Speed CHOP — 再生速度のスケーリング(前段で index を生成)
- Trigger CHOP — Keyframe 出力でエンベロープを起動
- Math CHOP — Keyframe 出力を Range 変換でリスケール
- Filter CHOP — Keyframe 出力のスムージング
- CHOP to TOP — Keyframe アニメーションを GPU シェーダ uniform に渡す
前処理・後処理CHOP 🎯
- 前処理: LFO CHOP、Speed CHOP、Timer CHOP、Math CHOP、Constant CHOP
- 後処理: Filter CHOP、Math CHOP、Lag CHOP、Select CHOP、Null CHOP
Info CHOP情報 📊
Keyframe 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: エラー数
Keyframe CHOP 固有情報 🎞️
start_index: キーフレームレンジの開始サンプルインデックスstart_frame: キーフレームレンジの開始フレーム番号start_second: キーフレームレンジの開始時間(秒)start_fraction: 開始位置のフレーム小数部end_index: キーフレームレンジの終了サンプルインデックスend_frame: キーフレームレンジの終了フレーム番号end_second: キーフレームレンジの終了時間(秒)end_fraction: 終了位置のフレーム小数部
CHOP 共通情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 出力チャンネルが出ない / 空になる
✅ Solution:
- Animation Component パラメータが有効な Animation COMP を指しているか確認
- 対象 Animation COMP の Animation Editor でキーフレームが実際に作成されているか確認
- Sample Rate が 0 になっていないか、timeline frame rate と整合しているか確認
❌ Problem: レンジ外で値が想定と違う
✅ Solution:
- Extend Left / Extend Right の設定(Hold / Slope / Cycle / Mirror / Default Value)を用途に合わせて選択
Default Valueを使う場合は Default Value パラメータの値を確認- Cycle / Mirror で意図しない繰り返しが出る場合は Hold への変更を検討
❌ Problem: lookup index による任意再生が機能しない
✅ Solution:
- 入力 1 に lookup index を持つ CHOP(LFO CHOP / Constant CHOP / 任意の制御信号等)が接続されているか確認
- lookup index の値域が Animation COMP のレンジ(秒またはフレーム)と整合しているか確認
- 前段に Math CHOP を入れて index を必要なレンジに正規化
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

