Composite CHOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Composite CHOP の重ね合わせ機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 複数 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

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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. ベースとなる静止アニメーションを 1 入力目に接続
  2. 重ねたいアクション CHOP を 2 入力目に接続
  3. Effect ページで Start / Peak / Release / End を秒単位で設定
  4. Rise Shape を Ease in Ease out にして自然なフェード遷移を実現

Example 2: 回転アニメの球面補間ブレンド 🔄

回転チャンネル A → Composite CHOP (Quaternion Blend ON, Rotation Scope *rx *ry *rz) → 回転チャンネル B
  1. Attribute CHOP で quaternion 属性を 2 つの回転 CHOP に付与
  2. Composite CHOP に両者を入力し Quaternion Blend をオン
  3. Rotation Scope に *rx *ry *rz を指定
  4. ジンバルロック無しのスムーズな回転ブレンドが得られる

Example 3: 外部信号でブレンド比率を駆動 🎛️

ベース入力 → Composite CHOP (input1) / レイヤ入力 → Composite CHOP (input2) / LFO CHOP → Composite CHOP (input3)
  1. ベースとレイヤーを 1, 2 入力目に接続
  2. LFO CHOP や Audio Spectrum CHOP の 1 チャンネルを 3 入力目に接続
  3. Effect ページの値が 3 入力目で上書きされる
  4. 外部信号に追従してリアルタイムに合成比率が変化する

関連オペレータ 🔗

類似機能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 🎯


Info CHOP情報 📊

Composite CHOPは Info CHOP による詳細情報取得に対応しています。

CHOP固有情報 🎚️

  • start: CHOPインターバルの開始(サンプル単位)
  • length: CHOPのサンプル数
  • sample_rate: フレーム毎秒のサンプルレート
  • num_channels: CHOPのチャンネル数
  • time_slice: タイムスライス有効時は1、無効時は0
  • export_sernum: Export接続の更新回数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間(ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: エンベロープが想定通りに動かない
✅ Solution:

  • Unit Values が AbsoluteRelative 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 でチャンネル名を揃える

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました