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

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

Join CHOP の連結・ブレンド機能を示す図

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

概要 📖 – 複数 CHOP を時間方向に連結しブレンド

Join CHOPは、複数の入力 CHOP を時間方向に連結し境界をブレンドして単一のシーケンスを出力する CHOPです。アニメーションクリップの結合や音声のクロスフェードなど、時間軸上での連結処理を 1 オペレータで完結します。

主な用途 🎯

  • 複数の アニメーションクリップを時間方向に連結 してシーケンスを生成
  • クリップ境界をブレンド して切替時のポップ・段差を滑らかに除去
  • Quaternion ベースの回転連結 でジンバルロックや経路の遠回りを回避
  • 第一入力をブレンド領域指定チャンネル として使い動的に各境界の長さを制御
  • 音声クリップのオーバーラップ結合 でクロスフェード再生

データフロー 🔄

入力: 複数の CHOP(クリップ)

Match by(チャンネル対応付け)

Method(連結方式)

Shape(補間カーブ)

Region & Bias(境界の長さと偏り)

Quaternion Blend(回転チャンネル処理)

出力: 連結後の単一 CHOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 本のシーケンスに繋ぐ。境界をコサイン補間でブレンドすると遷移時のポップが消えて自然なモーションになる。

  1. 歩行・停止・旋回それぞれの Animation COMP を Join CHOP に順に接続
  2. Method を Preserve Length に設定し合計長を保つ
  3. Shape を Ease in Ease out、Region を 10 frames 程度に調整
  4. 出力を 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 は前後クリップを物理的に重ねてミックスするため、音声のクロスフェードに最適。

  1. BGM の各パート(イントロ・ループ・アウトロ)を Audio File In CHOP で読み込み
  2. Join CHOP の Method を Overlap Sequences、Shape を Linear
  3. Region でフェード長(例: 1 秒)を指定
  4. 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 を併用すると最短経路で滑らかに繋がる。

  1. rx / ry / rz を含む 2 本の回転 CHOP を Join CHOP に接続
  2. Quaternion Blend をオンにしてクォータニオンで補間
  3. Shortest Path Rotation Blending をオンにし Cycle Length を 360 に設定
  4. 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 🎯


Info CHOP情報 📊

Join 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:

  • Region の値を増やしてブレンド領域を確保
  • Shape を Linear から Ease in Ease outCubic に変更して滑らかに
  • 後段に 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 にしてインデックス順で強制対応付け

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました