
概要 📖 – 複数 CHOP の重ね合わせと時間ベースのエフェクト合成
Composite CHOPは、ベース CHOP にレイヤー CHOP を時間ベースのエンベロープで重ね合わせ、補間カーブとチャンネル対応付けを制御して合成する CHOPです。Effect ページの Start / Peak / Release / End でエンベロープ形状を、Composite ページの Match by や Quaternion Blend でチャンネル対応・回転補間を細かく制御できます。
主な用途 🎯
- 複数 CHOP のチャンネルを 1 本にレイヤー合成(base + layer)
- 時間軸方向のエンベロープ(Start / Peak / Release / End)でフェードイン・フェードアウト合成
- Rise Shape / Fall Shape による補間カーブ(Linear / Ease / Cubic / Hold)の選択
- Quaternion / Shortest Path 補間による回転チャンネルのスムーズなブレンド
- Match by(Index / Name / Union)でチャンネル対応付けを切替えた合成
データフロー 🔄
入力1 (base): ベース CHOP
↓
入力2 (layer): レイヤー CHOP
↓
入力3 (任意): エフェクト値の上書き
↓
Composite 演算(Effect エンベロープ × Match by × Rise/Fall Shape)
↓
出力: 合成された 1 本の CHOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Composite Page 📋
Base Hold .base ⚖️
レイヤーがエフェクトを発揮する区間で、ベース入力をどれだけ出力に保持するかの比率
Base Hold .base ⚖️
– 0 のときレイヤーがエフェクト最大点でベースを完全に置き換え
– 1 のときベースを保持したままレイヤーを加算的に重ねる挙動になる
Match by .match 🔍
ベース入力とレイヤー入力のチャンネル対応付け方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Channel Number | .index |
チャンネルのインデックス順で対応付け |
| Channel Name | .name |
チャンネル名で対応付け |
| Channel Union | .union |
両入力のチャンネル名の和集合を出力 |
回転ブレンド関連 🔄
Quaternion Blend .quatrot 🔄
– Attribute CHOP で quaternion 属性を設定したチャンネルに対して球面補間 (slerp) を適用
– 滑らかな回転ブレンドを実現する
Shortest Path Rotation Blending .shortrot 🧭
– 0 度と 360 度を同一視し、回転角の最短経路でブレンド
– 数値が一周する角度値の補間で不自然な逆回転を防ぐ
Rotation Scope .rotscope 🎯
– 回転として特別扱いするチャンネルの絞り込みパターン
– 例: *rx *ry *rz で xyz 回転チャンネルを指定
Cycle Length .cyclelen 🔁
– 0 度からこの角度までを 1 周期としてブレンド(一般的に 360)
– 度数法以外の単位を使う場合に変更
Effect Page ⏳
Effect 量 .effect 🎚️
合成エフェクトの強度。第3入力が接続されている場合、Effect ページのエンベロープは第3入力の最初のチャンネルで上書きされる
Effect .effect 🎚️
– レイヤーの効果量(0〜1 を基本とするスカラー)
– 第3入力 (input3) が接続されているときは、その最初のチャンネルが Effect 値として layer 範囲全体に適用される
Unit Values .relative 📐
Start / Peak / Release / End の値の解釈方式(絶対値 / 相対値)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Absolute | .abs |
絶対値として解釈(layer / base はシフトされない) |
| Relative to Start/End | .rel |
チャンネルの Start / End または現在フレームを基点とした相対値で解釈 |
エンベロープ位置 📈
Start .start 🟢
– 合成区間の開始位置(Effect が 0 になる点)
– 単位は Start Unit パラメータで指定
Start Unit .startunit 📏
– Start の単位(Frames / Seconds / Samples 等)
Peak .peak 🔺
– エフェクトが最大値に到達する位置
– Peak から Release までこの値が保持される
Peak Unit .peakunit 📏
– Peak の単位指定
Release .release 🔻
– エフェクトが最大値から下降を開始する位置
– Release から End にかけて 0 に戻る
Release Unit .releaseunit 📏
– Release の単位指定
End .end 🔴
– 合成区間の終了位置(Effect が再び 0 に戻る点)
– End 以降はベースのみが出力される
End Unit .endunit 📏
– End の単位指定
Rise Shape .risefunc 📈
Start から Peak までの上昇区間で適用する補間形状
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .lin |
直線的な線形補間 |
| Ease in | .ei |
始点でゆっくり、終点に向けて加速 |
| Ease out | .eo |
始点で速く、終点に向けて減速 |
| Ease in Ease out | .cos |
両端をなめらかに接続する S 字補間(コサイン) |
| Cubic | .cub |
3 次多項式によるなめらかな補間 |
| Add | .add |
ベースとレイヤーを直接加算 |
| Hold Previous | .holdprev |
直前の値を保持(ステップ状の遷移) |
Fall Shape .fallfunc 📉
Release から End までの下降区間で適用する補間形状
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .lin |
直線的な線形補間 |
| Ease in | .ei |
始点でゆっくり、終点に向けて加速 |
| Ease out | .eo |
始点で速く、終点に向けて減速 |
| Ease in Ease out | .cos |
両端をなめらかに接続する S 字補間(コサイン) |
| Cubic | .cub |
3 次多項式によるなめらかな補間 |
| Add | .add |
ベースとレイヤーを直接加算 |
| Hold Previous | .holdprev |
直前の値を保持(ステップ状の遷移) |
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 A (base) → Composite CHOP (Effect: Start/Peak/Release/End) → Animation COMP B (layer) → 出力
- ベースとなる静止アニメーションを 1 入力目に接続
- 重ねたいアクション CHOP を 2 入力目に接続
- Effect ページで Start / Peak / Release / End を秒単位で設定
- Rise Shape を Ease in Ease out にして自然なフェード遷移を実現
Example 2: 回転アニメの球面補間ブレンド 🔄
回転チャンネル A → Composite CHOP (Quaternion Blend ON, Rotation Scope *rx *ry *rz) → 回転チャンネル B
- Attribute CHOP で quaternion 属性を 2 つの回転 CHOP に付与
- Composite CHOP に両者を入力し Quaternion Blend をオン
- Rotation Scope に
*rx *ry *rzを指定 - ジンバルロック無しのスムーズな回転ブレンドが得られる
Example 3: 外部信号でブレンド比率を駆動 🎛️
ベース入力 → Composite CHOP (input1) / レイヤ入力 → Composite CHOP (input2) / LFO CHOP → Composite CHOP (input3)
- ベースとレイヤーを 1, 2 入力目に接続
- LFO CHOP や Audio Spectrum CHOP の 1 チャンネルを 3 入力目に接続
- Effect ページの値が 3 入力目で上書きされる
- 外部信号に追従してリアルタイムに合成比率が変化する
関連オペレータ 🔗
類似機能OP 🔍
- Math CHOP — Combine CHOPs による単純な加減乗除の合成、エンベロープ機能なし
- Switch CHOP — 複数 CHOP をフェード無しで切替(補間カーブ非対応)
組み合わせ推奨OP 🔄
- Attribute CHOP — 前段で quaternion 属性を付与し Quaternion Blend を有効化
- Filter CHOP — Composite 後段で時間方向のスムージング
- LFO CHOP — 第3入力に接続してエフェクト値を周期的に駆動
- Audio Spectrum CHOP — 音の特定帯域でエフェクト量を駆動するソース
- Trigger CHOP — Composite のエンベロープ起点として ADSR を提供
前処理・後処理CHOP 🎯
- 前処理: Attribute CHOP、Filter CHOP、Resample CHOP、Math CHOP
- 後処理: Filter CHOP、Math CHOP、Limit CHOP、Trail CHOP
Info CHOP情報 📊
Composite 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:
- Unit Values が
AbsoluteかRelative to Start/Endかを確認(基点が変わる) - Start ≤ Peak ≤ Release ≤ End の順序が守られているかを確認
- Start Unit / Peak Unit / Release Unit / End Unit の単位がすべて揃っているかを確認
❌ Problem: 回転チャンネルのブレンドが不自然に逆回りする
✅ Solution:
- Shortest Path Rotation Blending をオンにして 0 度と 360 度を同一視
- Quaternion 属性で扱う場合は Attribute CHOP で属性を付与してから Quaternion Blend をオン
- Rotation Scope を回転チャンネルだけに絞って他チャンネルへの誤適用を防ぐ
❌ Problem: 第3入力に LFO を接続したのに Effect が変わらない
✅ Solution:
- 第3入力は最初のチャンネルだけが Effect 値として読まれるため、目的のチャンネルが先頭か確認
- LFO の値域が想定通りか前段で Math CHOP の Range で正規化
- Sample Rate Match の設定を確認し、第3入力のレートが他と整合しているかを検証
❌ Problem: 出力チャンネル数が予想と違う
✅ Solution:
- Match by を
Channel Number/Channel Name/Channel Unionで切替えて挙動を比較 - Channel Union は両入力のチャンネル名の和集合になるため出力数が増える
- 前段で Math CHOP や Rename CHOP でチャンネル名を揃える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Composite CHOP
- Pattern Matching(チャンネル名マッチング)
- Attribute CHOP(quaternion 属性付与)

