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

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

Extend CHOP のチャンネル延長挙動を示す図

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

概要 📖 – チャンネル区間外の延長挙動

Extend CHOPは、入力チャンネルのサンプル区間外(前後)に対して、保持・傾き継続・繰り返し・反転・既定値などの延長挙動を指定する CHOPです。Left Behavior と Right Behavior の 2 軸で区間前後の挙動を独立に設定でき、アニメーションのループ化や境界外参照時のクランプを 1 オペレータで完結します。

主な用途 🎯

  • チャンネル区間の前後でサンプリングされた際の挙動指定(Hold / Slope / Cycle / Mirror / Default Value)
  • アニメーションカーブのループ化(Cycle / Mirror による反復再生)
  • 区間外を一定値にクランプ(Hold / Default Value による境界処理)
  • 傾き継続による外挿補間(Slope で end の傾きをそのまま延長)
  • 後続 OP がチャンネル範囲外を読みに行ったときの値の決定(CHOP Reference / Lookup CHOP の前段)

データフロー 🔄

入力: 有限区間のチャンネルデータ

Left Behavior(区間開始前の挙動)

Right Behavior(区間終了後の挙動)

Default Value(必要時の固定値)

出力: 区間外でも参照可能な拡張済みチャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Extend Page 📋

Left Behavior .left 📥

チャンネル区間が始まる「前」の領域を参照されたときに、どのような値を返すかを決めるメニューパラメータ

項目 内部名 説明
No Change .asis チャンネルをそのまま(拡張せず)保つ
Hold .hold 区間開始時点の値をそのまま保持して延長
Slope .slope 区間開始前の傾きを継続して外挿
Cycle .cycle チャンネルを繰り返しループさせる
Mirror .mirror 1 サイクルごとに反転させながら繰り返す
Default Value .default 下記 Default Value で指定した固定値を使用

Right Behavior .right 📤

チャンネル区間が終わった「後」の領域を参照されたときに、どのような値を返すかを決めるメニューパラメータ(選択肢は Left Behavior と同一)

項目 内部名 説明
No Change .asis チャンネルをそのまま(拡張せず)保つ
Hold .hold 区間終了時点の値をそのまま保持して延長
Slope .slope 区間終了後も同じ傾きを継続して外挿
Cycle .cycle チャンネルを繰り返しループさせる
Mirror .mirror 1 サイクルごとに反転させながら繰り返す
Default Value .default 下記 Default Value で指定した固定値を使用

Default Value .defval 🎯

Default Value モードで区間外に返される定数値:

  • Default Value: Left / Right Behavior が default のときに区間外で返される定数値

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 → Extend CHOP (Left/Right = Cycle) → Geometry COMP
  1. Animation COMP で 1 サイクル分のキーフレームを作成
  2. Extend CHOP の Left Behavior と Right Behavior を「Cycle」に設定
  3. 出力をジオメトリの transform パラメータへ Export
  4. 区間外でも自動的に同じカーブが繰り返され、無限ループのアニメーションになる

Example 2: 区間外を境界値でクランプして安全参照 🛡️

Pattern CHOP → Extend CHOP (Left/Right = Hold) → Lookup CHOP
  1. Pattern CHOP で有限区間のカーブテーブルを生成
  2. Extend CHOP の Left/Right Behavior を「Hold」に設定
  3. 区間外参照時は始端値・終端値がそのまま保持される
  4. 後段の Lookup CHOP が範囲外を引いても NaN や暴れた外挿値が出ない

Example 3: Mirror で往復アニメーション 🪞

Pattern CHOP (0→1 ramp) → Extend CHOP (Right = Mirror) → Geometry transform
  1. Pattern CHOP で 0 から 1 への片道 ramp を作成
  2. Extend CHOP の Right Behavior を「Mirror」に設定
  3. 区間を超えると 1→0、再度 0→1 と反転を繰り返す
  4. 1 区間ぶんのカーブだけ作れば往復モーションが得られる

関連オペレータ 🔗

類似機能OP 🔍

  • Hold CHOP — トリガー時点の値を保持する用途に特化(Extend CHOP の Hold モードを動的トリガで実現)
  • Stretch CHOP — 区間長そのものを伸縮(Extend は区間外の挙動、Stretch は区間内の伸縮)
  • Trim CHOP — 区間を切り詰める(Extend と対をなす区間操作 OP)

組み合わせ推奨OP 🔄

  • Pattern CHOP — 有限区間のカーブを生成し Extend で区間外挙動を付与
  • Lookup CHOP — Extend で安全化したテーブルを Lookup で参照
  • Filter CHOP — Cycle / Mirror で生成した無限信号を後段で平滑化
  • Math CHOP — 延長後のチャンネルに対する値域変換やオフセット
  • Speed CHOP — Extend のサイクル再生速度を後段で動的に変更

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Extend 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: Cycle 設定にしてもループせず一定値で止まる
✅ Solution:

  • 下流 OP が Time Slice モードで現在フレームのみ参照している場合、視覚的にループが見えない可能性がある
  • Trim CHOP や Lookup CHOP で明示的に区間外をサンプリングしていることを確認
  • 前段のチャンネル区間長が 0 または 1 サンプルだとサイクルが成立しないため、Pattern CHOP 等で十分なサンプル数を確保する

❌ Problem: Slope 外挿で値が想定外に大きく / 小さくなる
✅ Solution:

  • Slope は端点付近の傾きをそのまま延長するため、急峻なカーブ末尾だと指数的に発散する
  • 発散を避ける場合は Hold か Default Value に切り替えるか、前段に Filter CHOP を入れて端点を平滑化する
  • 後段の Math CHOP や Limit CHOP で値域をクランプする

❌ Problem: Default Value にしたのに固定値が出力されない
✅ Solution:

  • Left Behavior / Right Behavior が「Default Value」に設定されているか確認(Hold や Cycle のままだと Default Value パラメータは無視される)
  • 区間内のサンプリングでは Default Value は使われない。区間外を読みに行くサンプル位置でないと適用されない
  • Default Value パラメータの数値が想定値(0 のまま等)になっていないかを再確認

❌ Problem: Mirror で繋ぎ目に不連続な折れ線が出る
✅ Solution:

  • Mirror は端点で値を反転して繋ぐ仕様のため、端点の傾きが急だと折り返しがガクッと見える
  • 繋ぎ目を滑らかにしたい場合は前段に Filter CHOP を入れて端点近傍を平滑化する
  • Cycle と Mirror では繋ぎ目挙動が異なるため、用途に応じて切り替える

参考資料 📚

その他 🔗

公式リソース 📖

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