
概要 📖 – 複数 CHOP を時間方向に連結しブレンド
Join CHOPは、複数の入力 CHOP を時間方向に連結し境界をブレンドして単一のシーケンスを出力する CHOPです。アニメーションクリップの結合や音声のクロスフェードなど、時間軸上での連結処理を 1 オペレータで完結します。
主な用途 🎯
- 複数の アニメーションクリップを時間方向に連結 してシーケンスを生成
- クリップ境界をブレンド して切替時のポップ・段差を滑らかに除去
- Quaternion ベースの回転連結 でジンバルロックや経路の遠回りを回避
- 第一入力をブレンド領域指定チャンネル として使い動的に各境界の長さを制御
- 音声クリップのオーバーラップ結合 でクロスフェード再生
データフロー 🔄
入力: 複数の CHOP(クリップ)
↓
Match by(チャンネル対応付け)
↓
Method(連結方式)
↓
Shape(補間カーブ)
↓
Region & Bias(境界の長さと偏り)
↓
Quaternion Blend(回転チャンネル処理)
↓
出力: 連結後の単一 CHOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Blend Page 🎚️
Method .blendmethod 🔗
シームレスなシーケンスを生成するための連結方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Preserve Length | .pre |
全 CHOP の合計長を保ったまま境界をブレンド |
| Overlap Sequences | .ovl |
後続 CHOP を直前の CHOP に重ねてブレンド(音声に最適) |
| Insert Blend Region | .ins |
CHOP の間にブレンド領域を挿入して全長を伸ばす |
Shape .blendfunc 📈
ブレンド時の補間カーブ形状(Cycle CHOP の Shape と同義)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .lin |
線形補間 |
| Ease in | .ei |
開始がゆるやかに加速 |
| Ease out | .eo |
終了がゆるやかに減速 |
| Ease in Ease out | .cos |
両端を滑らかに(コサイン補間) |
| Cubic | .cub |
三次補間で連続的な滑らかさ |
| Add | .add |
両クリップの値を加算 |
| Hold Previous | .holdprev |
境界で前のクリップ値を保持してから切替 |
Match by .match 🔍
複数入力間でチャンネルをどう対応付けるか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Channel Number | .index |
チャンネルのインデックス順で対応付け |
| Channel Name | .name |
チャンネル名で対応付け |
Blend Region Unit .blendregionunit 📐
Region パラメータの単位指定:
- Blend Region Unit:
Regionの値をどの時間単位で解釈するか(Samples / Frames / Seconds 等)
Blend 詳細パラメータ 🎛️
First Input Specifies Blend Regions .blendbyinput 📊
– オンにすると 第一入力(input0)をマルチチャンネル制御信号として扱う
– channel 1 で input1↔input2、channel 2 で input2↔input3 のブレンド領域を個別指定
– チャンネル数が足りないときは最後のチャンネルが繰り返し適用される
Region .blendregion 📏
– 各境界で使うブレンド領域の長さ
– 単位は Blend Region Unit で指定
Bias .blendbias ⚖️
– ブレンド時にどちらのクリップを優先するかのバイアス
– -1 で前クリップ寄り、+1 で次クリップ寄り、0 で中立
Rotate Page 🔄
回転チャンネル処理 🌀
Quaternion Blend .quatrot 🧭
– 回転チャンネルをクォータニオンとしてブレンド
– オイラー角の線形補間で起きるジンバルロックや経路の歪みを回避
Shortest Path Rotation Blending .shortrot 🛣️
– 回転を最短経路で補間
– 359° から 1° へ向かうとき遠回りせず 2° 分だけ回るように補正
Rotation Scope .rotscope 🎯
– Shortest Path Rotation Blending オン時に有効
– 最短経路補正を適用するチャンネルをパターンで絞り込む
Cycle Length .cyclelen 🔁
– Shortest Path Rotation Blending オン時に有効
– 1 周分の長さ(通常 360°)を指定し最短経路の判定基準にする
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: アニメーションクリップ 3 本を滑らかに連結 🎬
Animation COMP × 3 → Join CHOP (Method: Preserve Length / Shape: Ease in Ease out) → Geometry COMP
歩行・停止・旋回などのキャラクター動作クリップを 1 本のシーケンスに繋ぐ。境界をコサイン補間でブレンドすると遷移時のポップが消えて自然なモーションになる。
- 歩行・停止・旋回それぞれの Animation COMP を Join CHOP に順に接続
- Method を
Preserve Lengthに設定し合計長を保つ - Shape を
Ease in Ease out、Region を 10 frames 程度に調整 - 出力を Geometry COMP の Transform に Export してキャラクターを駆動
Example 2: 音声クリップのクロスフェード再生 🎵
Audio File In CHOP × N → Join CHOP (Method: Overlap Sequences / Shape: Linear) → Audio Device Out CHOP
BGM パートを段差なく繋ぐ用途。Overlap Sequences は前後クリップを物理的に重ねてミックスするため、音声のクロスフェードに最適。
- BGM の各パート(イントロ・ループ・アウトロ)を Audio File In CHOP で読み込み
- Join CHOP の Method を
Overlap Sequences、Shape をLinearに - Region でフェード長(例: 1 秒)を指定
- Audio Device Out CHOP で再生し境界が無音にならないことを確認
Example 3: 回転モーションをジンバルロックなく連結 🧭
回転 CHOP × 2 (rx,ry,rz) → Join CHOP (Quaternion Blend ON / Shortest Path ON) → Geometry COMP
オイラー角のまま線形補間するとジンバルロックや遠回り回転が発生する。Quaternion Blend と Shortest Path Rotation Blending を併用すると最短経路で滑らかに繋がる。
- rx / ry / rz を含む 2 本の回転 CHOP を Join CHOP に接続
Quaternion Blendをオンにしてクォータニオンで補間Shortest Path Rotation Blendingをオンにし Cycle Length を 360 に設定- Rotation Scope で
r*等パターンを指定し対象チャンネルを絞り込む
関連オペレータ 🔗
類似機能OP 🔍
- Merge CHOP — 複数 CHOP を時間方向ではなく チャンネル方向 に結合(連結ではなく束ねる)
- Switch CHOP — 複数 CHOP の中から 1 本を選択して出力(ブレンドなしの瞬間切替)
- Cross CHOP — 2 本の CHOP を時間方向ではなく値ベースでクロスフェード
組み合わせ推奨OP 🔄
- Audio File In CHOP — 音声クリップの供給元として Overlap Sequences と組み合わせ
- Filter CHOP — Join 後段のスムージングで微小段差をさらに緩和
- Trim CHOP — 連結前にクリップ長を揃える前処理として有効
- Trail CHOP — Join 出力の時間履歴を可視化してブレンド形状を確認
前処理・後処理CHOP 🎯
- 前処理: Audio File In CHOP、Trim CHOP、Resample CHOP、Stretch CHOP
- 後処理: Filter CHOP、Lag CHOP、Math CHOP、Audio Device Out CHOP、Null CHOP
Info CHOP情報 📊
Join 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:
- Region の値を増やしてブレンド領域を確保
- Shape を
LinearからEase in Ease outやCubicに変更して滑らかに - 後段に Filter CHOP を入れて残った微小段差を緩和
❌ Problem: 回転チャンネルで遠回りや反転が起きる
✅ Solution:
Quaternion Blendをオンにしてクォータニオン補間に切替Shortest Path Rotation Blendingをオンにして最短経路を強制- Rotation Scope で対象を
r*やrx ry rz等に絞り込み Cycle Length を 360 に設定
❌ Problem: 連結後の総長が想定より長い・短い
✅ Solution:
- Method が
Preserve Lengthなら合計長は変わらない、Insert Blend Regionなら Region 分だけ伸びる Overlap Sequencesは後続クリップを重ねるため合計長は短くなる- 前段の Trim CHOP でクリップ長を事前に揃える
❌ Problem: チャンネル名が一致せずブレンドが効かない
✅ Solution:
- Match by を
Channel Nameにして名前ベースで対応付け - 前段の Rename CHOP や Common Page の Rename from / Rename to で名前を揃える
- Match by を
Channel Numberにしてインデックス順で強制対応付け
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

