
概要 📖 – 重み付きチャンネルブレンドと補間
Blend CHOPは、複数の入力チャンネルを重み付きでブレンドし 1 本の出力に合成する CHOPです。Method パラメータでブレンド方式(比例 / 差分 / クォータニオン / 加算)を切り替えられ、アニメーション補間や信号ミキシングを 1 オペレータで完結します。
主な用途 🎯
- 複数の入力チャンネルを重み付きでブレンドして 1 つの出力に合成
- アニメーション・ポーズ間の滑らかなトランジション制御
- クォータニオン回転の球面補間ブレンド(Commercial 限定)
- Differencing 方式によるベース + 差分レイヤ合成
- 音声・制御信号のクロスフェードとミキシング
データフロー 🔄
入力: 重み制御 CHOP(input1)
↓
ベース / 各レイヤ CHOP(input2 以降)
↓
Method(Proportional / Difference / Quaternion / Additive)で重み解釈
↓
重み付き合成
↓
出力: ブレンド済みチャンネル
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Blend Page 📋
Method .method 🎛️
ブレンド方式を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Proportional | .prop |
各ブレンドソースが重みに比例して結果に寄与。重みの合計が 1 でない場合は自動的に正規化される |
| Difference | .dif |
input2 が常に「ベース」となり、他の入力にはブレンドチャンネルが割り当てられる。全ブレンドチャンネルが 0 ならベースのみ、いずれかが 1 なら対応する入力と同じ出力になる(デフォルト挙動) |
| Quaternion (Commercial) | .quaternion |
input1 で 2 つ目以降の入力をクォータニオンで比例ブレンド。回転チャンネルの正しいブレンドには Attribute CHOP でクォータニオングループ化が必要(Commercial 限定) |
| Additive | .additive |
Proportional と同じだが重みを正規化しない(合計 1 を超えても増幅される) |
Omit First Weight Channel .firstweight 🎚️
| 項目 | 内部名 | 説明 |
|---|---|---|
| Omit First Weight Channel | .firstweight |
Differencing 方式使用時、ベース入力(input2)の重みチャンネルは出力に影響しないため、このオプションをオンにすると重みチャンネル列から省略される |
Fix Underflows .underflow ⚠️
デノーマライズ値(極小数値)を 0 に置換しパフォーマンス低下を防ぐ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Fix Underflows | .underflow |
デノーマライズ(非常に小さい)数値を 0 に置換する。これらの値はそのままだと CPU 演算が遅くなり、パフォーマンス問題を引き起こす可能性がある |
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: 2 つのアニメーションポーズ間のクロスフェード 🎭
重みチャンネル (input1) → ポーズ A (input2) → ポーズ B (input3) → Blend CHOP (Proportional) → Geometry
- input1 に重み制御用の Constant / LFO CHOP を接続(2 チャンネル: w_a, w_b)
- input2 にポーズ A、input3 にポーズ B のチャンネルを接続
- Method を「Proportional」に設定すると重みが自動正規化される
- 重みを 0→1 にアニメーションすればポーズ A から B へ滑らかにクロスフェード
Example 2: Differencing 方式によるベース + 差分レイヤ合成 🧩
重みチャンネル (input1) → Base Pose (input2) → Diff Layer 1 (input3) → Diff Layer 2 (input4) → Blend CHOP (Difference)
- input2 にベースポーズ(常に出力されるベースライン)を接続
- input3, input4 に差分レイヤ(追加表現)を接続
- Method を「Difference」、Omit First Weight Channel をオンに設定
- input1 の重みを 0→1 で動かすと、ベースに対して差分レイヤを段階的に重ねられる
Example 3: Audio クロスフェードミキサー 🎵
フェーダー値 (input1) → Audio Track A (input2) → Audio Track B (input3) → Blend CHOP (Proportional) → Audio Device Out CHOP
- input1 に DJ フェーダー相当の 2 チャンネル重み(fa, fb)を接続
- input2, input3 に 2 つのオーディオトラックを接続
- Method を「Proportional」、Sample Rate Match を「Resample At Maximum Rate」に設定
- 重みを動かすと 2 トラック間で滑らかにクロスフェードできる
関連オペレータ 🔗
類似機能OP 🔍
- Cross CHOP — 2 つの入力 CHOP 間でクロスフェード(index 制御の単純補間)
- Switch CHOP — 重み補間ではなく index で 1 入力を選択するハード切替
- Math CHOP — Combine CHOPs Average で重みなし均等ブレンドが可能
組み合わせ推奨OP 🔄
- Constant CHOP — input1 の重みを固定値で与えるソース
- LFO CHOP — 重みを周期的に動かして自動クロスフェード
- Attribute CHOP — Quaternion 方式時にクォータニオングループ化を行う前処理
- Filter CHOP — Blend 後にスムージングを掛けて急変を抑える
- Math CHOP — ブレンド前後で値域変換やゲイン調整に使用
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、LFO CHOP、Attribute CHOP、Math CHOP
- 後処理: Filter CHOP、Lag CHOP、Math CHOP、Analyze CHOP
Info CHOP情報 📊
Blend 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:
- Method が「Proportional」の場合、重みは自動正規化されるため絶対値ではなく比率で挙動が決まる
- 意図的に正規化を切りたい場合は Method を「Additive」に切替
- input1 のチャンネル数と input2 以降の入力数が一致しているか確認(重みチャンネル数 = ブレンド対象数)
❌ Problem: Differencing 方式で input2 の重みチャンネルが効かない
✅ Solution:
- Differencing 方式は input2 を常にベースとして扱うため、input2 用の重みチャンネルは仕様上効果なし
- 重みチャンネル列がベース分も含んでいる場合は Omit First Weight Channel をオンにして省略
- ベースを切替えたい場合は入力順を入れ替えるか、前段に Switch CHOP を入れる
❌ Problem: 音声・高周波信号でポップ・クラックノイズが発生する
✅ Solution:
- 重みが急変すると出力に不連続が生じる。前段に Filter CHOP や Lag CHOP を入れて重みをスムージング
- Sample Rate Match を「Resample At Maximum Rate」に設定し、低レートが原因のエイリアシングを防ぐ
- Fix Underflows をオンにしてデノーマライズ値による CPU 負荷を回避
❌ Problem: Quaternion 方式で回転がねじれる / 期待した補間にならない
✅ Solution:
- Quaternion 方式は Commercial 限定機能。ライセンスを確認
- 前段に Attribute CHOP を入れて回転チャンネルをクォータニオングループとしてマークする必要がある
- 回転チャンネルが xyzw の 4 チャンネル単位で揃っているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

