
概要 📖 – チャンネルのループ再生とブレンド
Cycle CHOPは、入力 CHOP を前後に複製してループ再生し、サイクル間をブレンドして滑らかに繋ぐ CHOPです。Cycles Before / After で反復回数を、Blend Method で繋ぎ目の補間方式を指定し、ミラーリングや累積オフセットを使った高度なループ素材を 1 オペレータで生成できます。
主な用途 🎯
- 入力 CHOP の前後に追加サイクルを生成して反復ループ再生
- 歩行モーション・呼吸・脈動など周期的アニメーションのループ素材化
- ループ末尾と先頭を補間するシームレスなループの生成(Blend Start to End)
- ループ毎に値をミラー反転させる往復モーションの作成(Mirror Cycles)
- ループ毎に値をオフセットして連続させる歩行サイクルの位置進行(Step)
データフロー 🔄
入力: 1 サイクル分のチャンネルデータ
↓
Cycles Before / After(前後反復回数)
↓
Blend モード(Preserve Length / Overlap / Insert Region)
↓
Mirror / Step / Blend Start to End の演出処理
↓
出力: 反復・補間されたチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Cycle Page 🔁
Cycles Before / After .cycles ↔️
Cycles Before .before ⬅️
– 入力 CHOP の前にループ再生するサイクル数
– 整数値だけでなく 0.5 等の小数値も指定可能
Cycles After .after ➡️
– 入力 CHOP の後にループ再生するサイクル数
– 整数値だけでなく 0.5 等の小数値も指定可能
Mirror Cycles .mirror 🪞
| 項目 | 内部名 | 説明 |
|---|---|---|
| Mirror Cycles | .mirror |
オン: 連続するサイクル同士をミラー反転(時間軸反転)させ、往復モーションを生成。最初のサイクル自体はミラーされない。オフ: 単純な反復のみ。 |
Blend Start to End .extremes ♾️
| 項目 | 内部名 | 説明 |
|---|---|---|
| Blend Start to End | .extremes |
オン: CHOP の末尾と先頭をブレンドしてシームレスなループを生成。Cycles Before / After が 0、Region が非ゼロ、Extend Conditions が Cycle の場合は無限に滑らかにループする。 |
Blend Page 🎚️
Method .blendmethod 🔄
サイクル間をどう繋ぐかのブレンド方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Preserve Length | .pre |
各サイクルの長さを入力 CHOP の長さと同一に保つ |
| Overlap Sequences | .ovl |
前のサイクルと重ね合わせて補間 |
| Insert Blend Region | .ins |
サイクル間にブレンド専用区間を挿入 |
Shape .blendfunc 📐
ブレンド関数の形状
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .lin |
線形補間 |
| Ease in | .ei |
easein() 関数で補間(始点が緩やか) |
| Ease out | .eo |
easeout() 関数で補間(終点が緩やか) |
| Ease in Ease out | .cos |
両端が緩やかな S 字補間 |
| Cubic | .cub |
Insert Blend Region 時、サイクル間の区間を cubic() で補間 |
| Add | .add |
オーバーラップ部のサンプルを単純加算(音声ループに適する) |
| Hold Previous | .holdprev |
前サイクルの値をホールドして繋ぐ |
Region .blendregion 📏
Region .blendregion 📏
– ブレンド区間のサイズ
– 単位は Blend Region Units または Common page の Units で指定(秒・サンプル・フレームから選択)
Blend Region Units .blendregionunit 📐
– Region の値の単位を指定するメニュー
– 秒 / サンプル / フレームから選択
Bias .blendbias ⚖️
| 項目 | 内部名 | 説明 |
|---|---|---|
| Bias | .blendbias |
ブレンドの偏り。-1 でブレンド区間の先頭寄り、0 で偏りなし、+1 で末尾寄りに重みを置く。 |
Step .step 👣
Step .step 👣
– 1 に設定すると、次のサイクルの値を前サイクル末尾の値に揃えて連続させる
– 歩行サイクルのルートオブジェクトなど、累積位置を進めたい用途に最適
Step Scope .stepscope 🎯
– Step パラメータの影響を受けるチャンネル名のパターン
– 例: tx tz と書けば xz 平面の位置のみ累積、ry は累積させずに残す
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 (1 歩分) → Cycle CHOP (Cycles After=10, Blend Start to End=オン) → Geometry COMP
1 サイクル分の歩行アニメーション素材を、繋ぎ目の段差なく長時間ループさせる典型的な使い方です。
- Animation COMP に 1 歩分の足上げ・足下ろしモーションを 1 サイクル作成
- Cycle CHOP の
Cycles Afterを10に設定して 10 歩分の繰り返しを生成 Blend Start to Endをオンにして末尾と先頭をブレンドし、繋ぎ目の段差を消す- 出力を Geometry COMP のトランスフォームに接続して連続歩行アニメーションを再生
Example 2: 往復モーション(ピンポン再生) 🔁
LFO CHOP (1 サイクル) → Cycle CHOP (Mirror Cycles=オン, Cycles After=4) → Output
Mirror Cycles をオンにすると、サイクルごとに時間軸が反転し、行って戻ってくる往復モーションが得られます。
- LFO CHOP や Animation COMP で 1 サイクル分の波形を作成
- Cycle CHOP の
Mirror Cyclesをオンにする Cycles Afterを4に設定すると、原 → 反転 → 原 → 反転 の順で再生- ペンデュラム(振り子)や呼吸の吸気・呼気など、左右対称の往復演出に活用
Example 3: 歩行サイクルの位置を累積進行させる(Step) 👣
Animation COMP (1 歩分の tx) → Cycle CHOP (Step=1, Step Scope=tx, Cycles After=20) → Geometry tx
Step パラメータを使うと、次のサイクル開始値を前サイクル末尾の値に揃えるため、足上げモーションを保ちつつキャラクターが前進し続けるアニメーションを生成できます。
- 1 歩分の前進量(例:
txが 0 → 1)を持つ Animation COMP を準備 - Cycle CHOP の
Stepを1に設定 Step Scopeにtxを指定し、xz 位置のみ累積させる(ry等の回転は累積させない)Cycles After=20で 20 歩分の前進アニメーションを生成
関連オペレータ 🔗
類似機能OP 🔍
- Stretch CHOP — サイクル数ではなくサンプル長を引き伸ばす(時間スケーリング専用)
- Speed CHOP — 再生速度を可変にしてループするが、繋ぎ目のブレンドは行わない
組み合わせ推奨OP 🔄
- LFO CHOP — 波形 1 サイクルを Cycle で反復してループ素材化
- Filter CHOP — Cycle 後段でブレンド境界を更にスムージング
- Trim CHOP — Cycle で反復した結果を必要長で切り出し
- Timer CHOP — Cycle で生成したループ素材の再生位置・回数を制御
前処理・後処理CHOP 🎯
- 前処理: LFO CHOP、Pattern CHOP
- 後処理: Filter CHOP、Trim CHOP、Timer CHOP
Info CHOP情報 📊
Cycle 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:
Blend Start to Endをオンにして末尾と先頭をブレンドするMethodをOverlap SequencesまたはInsert Blend Regionに変更し、Regionで十分なブレンド長を確保する- 後段に Filter CHOP を入れて境界をさらにスムージングする
❌ Problem: Mirror Cycles の挙動が想定と違う
✅ Solution:
- Mirror は偶数サイクル目のみ反転される(最初のサイクルは反転されない仕様)
- 原波形 → 反転 → 原波形 → 反転 のパターンになるため、Cycles After の数を 2 の倍数にして対称性を確認する
- ループ全体を反転させたいだけなら Speed CHOP で速度を負値にする方法も検討する
❌ Problem: Step を有効にしたら全チャンネルが累積してしまった
✅ Solution:
Step Scopeを空のままにすると全チャンネルが累積する。累積させたいチャンネル名のみ明示的に指定する- 回転(
r*)やスケール(s*)は累積対象から外し、位置(tx tz)のみ累積する形が一般的 - パターン記法(
tx ty tzやt*)でまとめて指定可能
❌ Problem: Cycles Before / After を 0 にしたのにループしない
✅ Solution:
- 前後 0 サイクルでも
Blend Start to Endがオン、Regionが非ゼロ、Extend ConditionsがCycleなら無限ループ再生される - Extend Conditions が
HoldやDefaultになっていないか確認する - 出力長を確認したい場合は後段に Trail CHOP を繋いで時間履歴を可視化する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

