
概要 📖 – S字カーブ生成とイージング
S Curve CHOPは、Half Cosine / Logistic / Arctangent から選択した S 字状のイージングカーブを指定サンプル数で生成する CHOPです。Steepness / Linearize / Bias で曲線形状を細かく調整でき、From Range / To Range で入出力レンジも 1 オペレータでマッピング可能です。
主な用途 🎯
- S字状のイージングカーブ生成(Half Cosine / Logistic / Arctangent)
- アニメーション・トランジションの加減速制御
- 値域変換用のルックアップカーブとしての利用(From Range / To Range)
- 信号の急激な変化を滑らかに整形(ステップ応答のスムージング)
- プロシージャルなオートメーション曲線の生成(カスタムサンプル数指定)
データフロー 🔄
入力: サンプルインデックス(From Range で指定)
↓
Curve Type 選択(Half Cosine / Logistic / Arctangent)
↓
Steepness / Linearize / Bias で形状調整
↓
To Range にマッピング
↓
出力: S字カーブのチャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
S Curve Page 📋
Curve Type .type 🎛️
生成する S 字カーブの数式を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Half Cosine | .halfcosine |
半周期のコサイン波で滑らかなS字を生成(始点と終点で勾配ゼロ) |
| Logistic | .log |
シグモイド(ロジスティック関数)でS字を生成(中央付近で急峻) |
| Arctangent | .atan |
アークタンジェント関数でS字を生成(裾野がなだらか) |
サンプル数・パディング 📏
Length .length 📏
– 本体カーブのサンプル数を設定
– 出力 CHOP の主部分の解像度を決定
Prepend .prepend ⏮️
– カーブの先頭側に追加するサンプル数(カーブ開始前のパディング)
– アニメーションの開始タイミング調整に使用
Append .append ⏭️
– カーブの末尾側に追加するサンプル数(カーブ終了後のパディング)
– アニメーションの終了タイミング調整に使用
形状調整パラメータ 🎚️
Steepness .steepness 📐
– S 字カーブの中央付近の傾きの急峻さを制御
– 値を大きくするほど中央でシャープに、小さくするほどなだらかになる
Linearize .linearize 📈
– カーブの曲率の強さを制御(線形への近づけ具合)
– 値を上げると直線的に、下げると S 字らしさが強調される
Bias .bias ↔️
– カーブのバイアス(中央位置)を前後にシフト
– 値を変えると S 字の変曲点が前寄り・後ろ寄りに移動
From Range .fromrange 📥
入力インデックスの想定レンジ:
- From Range low / high: 入力インデックスの下限と上限。カーブ生成の基準範囲となる入力側のレンジを指定
To Range .torange 📤
出力カーブの値域:
- To Range low / high: 出力カーブの最小値と最大値。生成された S 字カーブをこのレンジにマッピング
Channel Page 🎚️
チャンネル名・サンプルレート 🏷️
Channel Names .channelname 🏷️
– 出力チャンネル名を指定(パターン記法対応)
– 例: chan[1-20] で chan1〜chan20 の 20 チャンネルを一括生成
Sample Rate .rate ⏱️
– チャンネルのサンプルレート(samples/sec)
– デフォルトは me.time.rate(プロジェクトのタイムラインレート)
Extend Left .left ⬅️
チャンネル範囲より前(左側)の値を取得した場合の挙動
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
チャンネルの現在値を保持して返す |
| Slope | .slope |
チャンネル開始前にも傾きを維持して外挿 |
| Cycle | .cycle |
チャンネルを繰り返して循環させる |
| Mirror | .mirror |
1 周期ごとに反転しながら循環させる |
| Default Value | .default |
Default Value パラメータで指定した固定値を返す |
Extend Right .right ➡️
チャンネル範囲より後(右側)の値を取得した場合の挙動
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
チャンネルの現在値を保持して返す |
| Slope | .slope |
チャンネル終了後にも傾きを維持して外挿 |
| Cycle | .cycle |
チャンネルを繰り返して循環させる |
| Mirror | .mirror |
1 周期ごとに反転しながら循環させる |
| Default Value | .default |
Default Value パラメータで指定した固定値を返す |
Default Value .defval 🔢
Default Value モード時に返される固定値:
- Default Value: Extend Left / Right で
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: アニメーションのイージング曲線 🎬
Timer CHOP → S Curve CHOP (Half Cosine) → Lookup CHOP → Geometry tx
- Timer CHOP で 0〜1 の進行値を生成
- S Curve CHOP の Curve Type を「Half Cosine」、To Range を [0, 1] に設定
- Lookup CHOP で Timer 値を S Curve カーブで参照し、滑らかな進行値に変換
- Geometry の位置パラメータに渡し、始点・終点で減速する自然な動きを実現
Example 2: 音量フェードイン・フェードアウト 🎵
Audio Device In CHOP → Math CHOP (Multiply) ← S Curve CHOP (Logistic) → 音量カーブ
- S Curve CHOP の Curve Type を「Logistic」、Length をフェード時間に合わせて設定
- To Range を [0, 1] にして音量係数カーブを生成
- Math CHOP で Audio Device In CHOP に S Curve の値を乗算
- 音量が S 字状に立ち上がり・立ち下がる自然なフェード効果を実現
Example 3: センサー値の滑らかなマッピング 📊
Serial CHOP → Math CHOP (Normalize) → Lookup CHOP ← S Curve CHOP (Arctangent) → 制御値
- Math CHOP でセンサー値を 0〜1 に正規化
- S Curve CHOP の Curve Type を「Arctangent」、Steepness を調整して応答カーブを生成
- Lookup CHOP で正規化値を S Curve でルックアップし非線形マッピング
- センサーの中央域で敏感、端部でゆるやかな応答特性を持つ制御信号を得る
Example 4: ライティングのディマー曲線 💡
LFO CHOP → S Curve CHOP (Half Cosine, Bias) → DMX Out CHOP
- LFO CHOP で 0〜1 の周期的な進行値を生成
- S Curve CHOP で Half Cosine カーブを設定、Bias で立ち上がりタイミングを調整
- To Range を [0, 255] に設定して DMX 値レンジへマッピング
- DMX Out CHOP に渡し、人の知覚に近い滑らかな調光カーブを実現
関連オペレータ 🔗
類似機能OP 🔍
- Pattern CHOP — Ramp / Sine / Square 等の波形パターンを生成(S 字に特化しない汎用波形ジェネレータ)
- LFO CHOP — 周期的な低周波振動を生成(S 字は単発カーブ、LFO は連続振動)
組み合わせ推奨OP 🔄
- Lookup CHOP — S Curve をルックアップテーブルとして使い、入力値を非線形マッピング
- Math CHOP — S Curve の出力をスケーリング・オフセット調整
- Timer CHOP — アニメーション進行値を S Curve でイージング処理
- Trigger CHOP — イベント発火時に S Curve をエンベロープとして再生
- Filter CHOP — 後段でさらにスムージングを加える
前処理・後処理CHOP 🎯
Info CHOP情報 📊
S Curve 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: カーブが直線的になってS字に見えない
✅ Solution:
- Linearize の値を小さくしてカーブの曲率を強める
- Steepness を上げて中央付近の傾きを急にする
- Curve Type を「Logistic」に切り替えるとシグモイド特有のS字が明確に出る
❌ Problem: 出力値が想定の範囲外になる
✅ Solution:
- To Range の low / high を出力したい値域に設定し直す
- From Range の low / high が入力インデックスのレンジと一致しているか確認
- 後段で Math CHOP の Range 変換を使って再マッピング
❌ Problem: サンプル数が足りずカーブがガタつく
✅ Solution:
- Length パラメータを大きくして解像度を上げる
- 後段で Resample CHOP を入れて補間する
- Sample Rate を上げてフレーム間の値変化を滑らかにする
❌ Problem: カーブの開始・終了タイミングがズレる
✅ Solution:
- Prepend / Append でカーブ前後のパディングサンプル数を調整
- Bias パラメータで S 字の変曲点(中央位置)を前後にシフト
- 前段の Timer CHOP 側で進行値のタイミングを整える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

