
概要 📖 – 速度・加速度の積分による位置生成
Speed CHOPは、入力チャンネルを時間で積分して累積値(位置)を生成し、Limit と Reset で値域・初期化を制御する CHOPです。Order パラメータで一階・二階・三階の積分を切り替えられ、入力なしでも Speed パラメータから連続値を生成できます。Limit Type で Loop / Clamp / Zigzag による値域処理、Reset 入力で任意タイミングの初期化まで 1 オペレータで完結します。
主な用途 🎯
- 速度入力の積分による位置の生成(First Order)
- 加速度入力の二重積分による位置の生成(Second Order)
- 入力なしでも Speed パラメータから連続値を生成(タイマー・スイープ用途)
- Limit Type(Loop / Clamp / Zigzag)による値域制御と循環アニメーション
- Reset 入力・Reset Pulse による累積値の任意タイミングでのリセット
データフロー 🔄
入力: 速度 / 加速度チャンネル(または Speed パラメータ)
↓
Order(積分階数)による積分
↓
定数加算(Constant1〜3)
↓
Limit Type による値域制御(Min / Max)
↓
Reset 条件評価
↓
出力: 累積値チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Speed Page 📁
Order .order 🎛️
入力をどの階数で積分するかを選ぶメニュー。速度入力なら First で位置、加速度入力なら Second で位置(First で速度)が得られる。
| 項目 | 内部名 | 説明 |
|---|---|---|
| First | .first |
一階積分(速度 → 位置、加速度 → 速度) |
| Second | .second |
二階積分(加速度 → 位置) |
| Third | .third |
三階積分(ジャーク → 位置) |
速度・定数パラメータ ⚡
Speed .speed 🏃
– 入力が接続されていないときに自動生成する速度値
– 入力が接続されると無効化される(タイマー・スイープ用途で使用)
First Constant .constant1 1️⃣
– 一階積分後の結果に加算する定数
– 積分結果に対する初期オフセットの役割
Second Constant .constant2 2️⃣
– 二階積分後の結果に加算する定数
– Order=Second / Third 使用時のみ意味を持つ
Third Constant .constant3 3️⃣
– 三階積分後の結果に加算する定数
– Order=Third 使用時のみ意味を持つ
Limit Type .limittype 📏
出力値が Min / Max の範囲を超えたときの処理を選ぶメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
値域制限なし(無限に累積する) |
| Clamp | .clamp |
Max / Min の範囲外でカットし、上下限値で固定 |
| Loop | .loop |
範囲を超えると逆側の端から再開(循環アニメーション) |
| Zigzag | .zigzag |
範囲端で反射して逆方向へ折り返す |
値域・サンプル設定 🎚️
Minimum .min ⬇️
– 出力チャンネルが取りうる最小値
– Limit Type が Off 以外のときに適用される
Maximum .max ⬆️
– 出力チャンネルが取りうる最大値
– Limit Type が Off 以外のときに適用される
Speed per Sample .speedsamples 🎵
– オン: チャンネル全体ではなくサンプル毎に Speed を適用
– マルチサンプルチャンネル(音声等)の処理で使用
Reset Page 🔁
Reset Condition .resetcondition 🎛️
Reset 入力(2 番目の入力)がどの状態のときにチャンネルをリセットするかを選ぶメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off to On | .offtoon |
Reset 入力が Off → On に立ち上がった瞬間にリセット |
| While On | .on |
Reset 入力が On の間ずっと Reset Value を保持 |
| On to Off | .ontooff |
Reset 入力が On → Off に立ち下がった瞬間にリセット |
| While Off | .off |
Reset 入力が Off の間ずっと Reset Value を保持 |
Reset 値・トリガー ⚡
Reset Value .resetvalue 🎯
– リセット時にチャンネルへ書き込まれる値
– 累積値の初期化点として機能
Reset .reset 🔁
– トグルで On の間チャンネルを Reset Value に固定
– 手動・スクリプトによる強制リセット用
Reset Pulse .resetpulse ⚡
– クリック(パルス)で瞬時にチャンネルを Reset Value に戻す
– トグルではなく単発トリガーが必要なときに使用
Reset on Start .resetonstart 🚀
– オン: .toe ファイルが再起動されるたびに自動的にリセット
– 長時間動作する案件で累積値が CHOP の数値解像度限界に達するのを回避
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: 速度入力から位置を生成する平行移動アニメーション 🚗
Constant CHOP (velocity) → Speed CHOP (Order=First) → Geometry COMP tx
- Constant CHOP に一定の速度値(例: 0.5)を設定
- Speed CHOP の Order を First にして接続(速度を積分して位置を生成)
- Speed CHOP の出力を Geometry COMP の tx パラメータに Export
- 毎秒 0.5 単位ずつ移動する平行移動アニメーションが得られる
Example 2: Loop モードによる循環カウンター 🔄
Speed CHOP (no input, Speed=1, Limit Type=Loop, Min=0, Max=10) → Index 用途
- 入力を接続せず Speed パラメータに 1 を設定
- Limit Type を Loop、Minimum を 0、Maximum を 10 に設定
- 出力が 0 → 10 → 0 → 10 と循環する 10 秒周期のカウンターが得られる
- Switch CHOP や Select CHOP のインデックスとして利用可能
Example 3: Zigzag による反射運動 🏓
Constant CHOP → Speed CHOP (Limit Type=Zigzag) → Geometry COMP tx
- 速度を Constant CHOP で与える(例: 2)
- Speed CHOP の Limit Type を Zigzag、Min/Max を -5 / 5 に設定
- 値が -5 と 5 の間で反射するピンポン運動が出力される
- オブジェクトの往復アニメーションや音声サンプルの折り返しに利用
Example 4: ボタン押下で累積値をリセットするスコア表示 🎮
Score input → Speed CHOP (input1) + Reset trigger → Speed CHOP (input2, Reset Condition=Off to On) → Text TOP
- 1 番目の入力にスコア加算用の速度値、2 番目の入力にボタン信号を接続
- Reset Condition を Off to On、Reset Value を 0 に設定
- 通常時は加算値が累積、ボタン立ち上がりで 0 にリセット
- Text TOP に出力をバインドしてスコア表示として利用
関連オペレータ 🔗
類似機能OP 🔍
- Count CHOP — 閾値交差のたびに離散カウントを進める(Speed が連続積分なのに対し Count は離散加算)
- Timer CHOP — 明示的な時間カウンタ・セグメント構造を持つ(Speed は単純積分のみ)
- LFO CHOP — 周期波形の生成に特化(Speed の Loop / Zigzag は Saw / Triangle 相当の波形を作れる)
組み合わせ推奨OP 🔄
- Constant CHOP — Speed CHOP の入力速度・加速度ソースとして最も多用される
- Math CHOP — Speed の出力レンジを From Range / To Range で正規化して下流へ渡す
- Logic CHOP — Speed の出力が閾値を超えたかを判定して Reset 入力にフィード
- Trigger CHOP — Loop モードで一定値に達したタイミングをイベントとして取り出す
- Filter CHOP — Speed の出力をスムージングしてジッターを抑える
前処理・後処理CHOP 🎯
- 前処理: Constant CHOP、Math CHOP、Filter CHOP、Noise CHOP
- 後処理: Math CHOP、Logic CHOP、Filter CHOP、Limit CHOP、Trigger CHOP
Info CHOP情報 📊
Speed 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:
- 累積値が CHOP の数値解像度(float 精度)限界に達している
- Reset on Start をオンにして .toe 再起動時に自動初期化する
- Limit Type を Clamp / Loop / Zigzag のいずれかに設定して値域を制限
❌ Problem: Speed パラメータを設定しても値が動かない
✅ Solution:
- 1 番目の入力にチャンネルが接続されていると Speed パラメータは無効化される
- 入力を切り離してから Speed パラメータの値を確認
- 前段に Null CHOP を挟んでいる場合、その出力が事実上の入力扱いになる点に注意
❌ Problem: Loop モードで意図した位置で循環しない
✅ Solution:
- Minimum と Maximum の値が逆になっていないか確認(Min < Max が必要)
- Max – Min が極端に大きいと Loop 周期が長くなりすぎて循環が見えない
- 前段の速度値が大きすぎると 1 フレームで複数周期が進み目視で確認できない、Math CHOP でスケーリング
❌ Problem: Reset 入力でリセットされない
✅ Solution:
- Reset Condition の選択肢が入力信号の挙動と合っているか確認(Off to On / While On / On to Off / While Off)
- Reset 入力(2 番目の入力)に実際にチャンネルが接続されているか Network エディタで確認
- Reset Pulse パラメータを直接クリックして手動リセットの動作を切り分けてから入力配線を見直す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

