
概要 📖 – パラメトリック曲線生成と属性ルックアップ
Curve POPは、セグメント単位で定義されたパラメトリック曲線をポイント列として出力、または曲線をルックアップ関数として入力属性を変換する POPです。Constant / Linear / Ease In / Ease Out / Ease In Ease Out / Bezier の 6 種類のセグメントを Sequential Parameter Blocks で連結でき、Lookup ページを使えば既存属性を曲線で remap できます。
主な用途 🎯
- パラメトリック曲線セグメント (Constant / Linear / Ease / Bezier) のジオメトリ生成
- Point / Line Strip / Color Strip としての曲線出力
- 属性値をカーブ経由で remap する Lookup モード
- アニメーションイージング曲線の構築(easein / easeout / easeinout / bezier)
- 確率分布 (CDF) や重み付きルックアップテーブルの構築
データフロー 🔄
入力: POP (任意属性)
↓
Curve POP(Segment Sequential Block で曲線形状定義、または Lookup ページで属性 remap)
↓
出力: 曲線ポイント列または属性が remap された POP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Curve Page 📋
曲線全体の設定 🎛️
Total Length .totallength 📏
– 出力曲線を構成する全ポイント数を決定
– 値が大きいほど滑らかな曲線になるが GPU メモリも増加
Normalize U .normalizeu ✅
– 全 U 値を 0〜1 の範囲に正規化
– セグメント間の U 比率は保持されたままスケールされる
Symmetric .symmetric 🔄
– 曲線セグメントを中心軸でミラーリングして対称な曲線を生成
– 対称形状 (山型・鐘形等) を簡潔に定義したい場合に有効
Start U .startu 🎯
– 最初のセグメントの開始 U 位置
– 通常 0、オフセットしたカーブ範囲が必要な場合に変更
Output Curve .outputcurve 📤
出力するプリミティブの種類
| 項目 | 内部名 | 説明 |
|---|---|---|
| Points | .points |
ポイントのみを出力 (パーティクル配置・インスタンシング向け) |
| Line Strips | .linestrip |
連続したラインプリミティブとして出力 (描画用ジオメトリ) |
| Color Strip | .colorstrip |
色情報を持つストリップとして出力 (グラデーション・カラールックアップ用) |
Parameter Size .parsize 📊
曲線の各値が持つコンポーネント数
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー値 (1 次元曲線) |
| 2 | .2 |
2 次元ベクトル (UV 等) |
| 3 | .3 |
3 次元ベクトル (XYZ 位置・RGB 等) |
| 4 | .4 |
4 次元ベクトル (RGBA・Quaternion 等) |
Segment (Sequential Block) .seg ✨
Sequential Parameter Blocks による曲線セグメントの連続定義(インデックス N=0,1,2… が増えるたびに以下のセットがリピートされる)
Segment .seg 📈
– セグメント Sequential Parameter Blocks の開始マーカー
– 値を増やすたびに以下のパラメータ群が複製され曲線が連結される
U .seg0u 🎯
– セグメント終端の U 位置
– 前セグメント終端 (または Start U) からこの値までが当該セグメントの範囲になる
Specify Start Value .seg0specstartval ✅
– オンの場合、セグメントは独立した開始値を持つ (前セグメントから不連続)
– オフの場合、前セグメント終端値から連続して始まる
Start Value .seg0startval 🟢
– Specify Start Value オン時の開始値
– Parameter Size に応じて seg0startval0 / seg0startval1 … を指定
End Value .seg0endval 🔴
– セグメント終端の値
– Parameter Size に応じて seg0endval0 / seg0endval1 … を指定
Alpha .seg0alpha 🎚️
– 曲線形状を制御する第一パラメータ (主にカーブの急峻さ)
– 有効値はセグメントの Curve Type に依存
Beta .seg0beta 🎚️
– 曲線形状を制御する第二パラメータ (主に開始・終端への偏り)
– 有効値はセグメントの Curve Type に依存
Slope In .seg0slopein 📐
– Bezier 曲線の入力側 (開始側) 接線スロープ係数
– Curve Type = Bezier のときのみ有効
Slope Out .seg0slopeout 📐
– Bezier 曲線の出力側 (終端側) 接線スロープ係数
– Curve Type = Bezier のときのみ有効
Curve Type .seg0type 📈
セグメント開始から終端までの補間タイプ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Constant | .constant |
Start Value を保持しつづけ、終端で End Value にステップ変化 |
| Linear | .linear |
Start から End まで直線補間 |
| Ease In | .easein |
ゆっくり始まり加速して End に到達するイージング |
| Ease Out | .easeout |
速く始まり減速して End に到達するイージング |
| Ease In Ease Out | .easeinout |
両端で減速、中間で加速する S 字補間 |
| Bezier | .bezier |
Slope In / Slope Out で接線を指定する 3 次ベジエ補間 |
Lookup Page 📋
Lookup 全体設定 🔎
Apply Lookup .applylookup ✅
– オンにすると曲線をポイント列として出力せず、入力属性のルックアップ関数として使用
– 入力 POP の属性が曲線経由で remap された値で上書きされる
Lookup Index Attribute .lookupindexattr 🏷️
– ルックアップのインデックスとして使用する入力属性名
– 通常はポイントごとの normalized 値 (例: U 座標・距離等) を指定
From Low High .fromlow 📥
入力インデックス属性のレンジ再マッピング
| 項目 | 内部名 | 説明 |
|---|---|---|
| From Low | .fromlow |
入力インデックス属性のレンジ下限 |
| From High | .fromhigh |
入力インデックス属性のレンジ上限 |
To Low High .tolow 📤
出力ルックアップ値のレンジ再マッピング
| 項目 | 内部名 | 説明 |
|---|---|---|
| To Low | .tolow |
出力レンジの下限 |
| To High | .tohigh |
出力レンジの上限 |
Extend Left and Right .extendleft ↔️
ルックアップ範囲外の挙動
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
範囲端の値をそのまま保持 |
| Slope | .slope |
範囲端の傾きを延長 |
| Cycle | .cycle |
曲線をループ繰り返し |
| Mirror | .mirror |
曲線を反転して繰り返し |
Lookup (Sequential Block) .lookup ✨
Sequential Parameter Blocks による複数ルックアップ定義(インデックス N=0,1,2… が増えるたびに以下のセットがリピートされる)
Lookup .lookup 📈
– ルックアップ Sequential Parameter Blocks の開始マーカー
– 値を増やすたびに以下のパラメータ群が複製される
Multiply .lookup0multiply ✖️
– ルックアップ結果に掛ける乗数
– 出力スケーリングに使用
Add .lookup0add ➕
– ルックアップ結果に加える値
– 出力オフセットに使用
Override Automatic Attribute .lookup0overrideautoattr 🔧
– 自動生成される出力属性の型・コンポーネント数を手動指定するモード
– オン時は Attribute Type / Components / Default Value が有効になる
Combine Operation .lookup0combineop 🔀
ルックアップ結果と既存属性の結合方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Set | .set |
ルックアップ結果で上書き |
| Add | .add |
既存値にルックアップ結果を加算 |
| Multiply | .mult |
既存値にルックアップ結果を乗算 |
| Minimum | .min |
既存値とルックアップ結果の最小値を採用 |
| Maximum | .max |
既存値とルックアップ結果の最大値を採用 |
Output Attribute Scope .lookup0outputattrscope 🎯
ルックアップ結果を書き込む出力属性
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
ポイント位置属性 |
| N | .N |
法線属性 |
| Color | .Color |
RGBA カラー属性 |
| Color.rgb | .Color.rgb |
カラー属性の RGB 成分のみ |
| Tex | .Tex |
テクスチャ座標属性 |
| PointScale | .PointScale |
ポイントスケール属性 |
| LineWidth | .LineWidth |
ライン幅属性 |
Attribute Type .lookup0attrtype 🔢
Override Automatic Attribute オン時の出力属性データ型
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
32-bit 浮動小数点 |
| double | .double |
64-bit 浮動小数点 |
| int | .int |
符号付き整数 |
| uint | .uint |
符号なし整数 |
| dir | .dir |
方向ベクトル (float、正規化前提) |
| dbl dir | .ddir |
方向ベクトル (double、正規化前提) |
Components .lookup0attrnumcomps 📊
Override Automatic Attribute オン時の出力属性コンポーネント数
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー値 |
| 2 | .2 |
2 次元 (UV 等) |
| 3 | .3 |
3 次元 (XYZ・RGB 等) |
| 4 | .4 |
4 次元 (RGBA・Quaternion 等) |
Default Value .lookup0attrdefaultval 🎯
Default Value .lookup0attrdefaultval 🎯
– 出力属性値が計算できなかった場合のデフォルト値
– Components 数に応じて lookup0attrdefaultval0 / lookup0attrdefaultval1 / lookup0attrdefaultval2 / lookup0attrdefaultval3 を指定
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
- 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用
Free Extra GPU Memory .freeextragpumem 🧠
蓄積した GPU メモリの解放:
- Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
- 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約
Delete Input Attributes .delinputattrs 🗑️
出力属性の絞り込みパターン:
- Delete Input Attributes パターン: 出力に残したい属性名のパターン (例:
P N Cd) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
Parameter Color Space .parmcolorspace 🎨
色パラメータの色空間を解釈・Working Color Space に変換する方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| sRGB | .srgb |
標準 sRGB ガンマ |
| sRGB – Linear | .srgblinear |
リニア化された sRGB |
| Rec.601 (NTSC) | .rec601 |
NTSC SD ビデオ用色空間 |
| Rec.709 | .rec709 |
HD ビデオ用色空間 |
| Rec.2020 | .rec2020 |
UHD / 4K HDR ビデオ用色空間 |
| DCI-P3 | .dcip3 |
デジタルシネマ用色空間 |
| DCI-P3 (D60) | .dcip3d60 |
D60 白色点の DCI-P3 |
| Display-P3 (D65) | .displayp3 |
Apple Display P3 (D65 白色点) |
| ACES2065-1 | .aces2065 |
ACES 標準 (AP0 プライマリ) |
| ACEScg | .acescg |
ACES CG 用 (AP1 プライマリ) |
| Passthrough | .passthrough |
色空間変換せず値をそのまま使用 |
Parameter Reference White .parmreferencewhite ⚪
色パラメータの基準白色点 (Reference White) の扱い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default For Color Space | .default |
選択した色空間のデフォルト基準白を使用 |
| Use Parent Panel | .useparent |
親パネルの基準白設定を継承 |
| Standard (SDR) | .sdr |
SDR (標準ダイナミックレンジ) 基準白 |
| High (HDR) | .hdr |
HDR (ハイダイナミックレンジ) 基準白 |
| UI | .ui |
UI 設定値を使用 |
実践アイデア 💡
Example 1: イージング付きアニメーション軌道の生成 🎬
Curve POP (Bezier segment) → Geometry COMP (Instancing along Line Strip) → Render TOP
Bezier セグメントを使ってカメラやオブジェクトのアニメーション軌道を生成し、ポイント列上にインスタンシングして滑らかな動きを描画する例。Slope In / Slope Out で接線を制御することで意図通りのカーブが得られる。
- Curve Page で
Output Curve= Line Strips、Total Length= 256 を設定 seg0type= Bezier、seg0u= 1.0、Parameter Size = 3 で 3 次元軌道にseg0startval0..2/seg0endval0..2で開始・終端位置を指定seg0slopein/seg0slopeoutで接線を調整し意図したカーブにする- 出力ポイント列を Geometry COMP の Instancing で参照しオブジェクト軌道として描画
Example 2: 属性値のカーブによる Remap 🔄
入力 POP → Curve POP (Apply Lookup, output Color) → Render TOP
入力 POP のスカラー属性値 (例: 高さや距離) を Curve POP の Lookup モードで色属性に remap する例。Color Strip 出力ではなく Apply Lookup を使うことで、既存ジオメトリの属性を曲線経由で変換できる。
- Curve Page で曲線形状を Constant / Linear / Ease で構築 (出力レンジを 0..1 等にしておく)
- Lookup Page で
applylookup= On、lookupindexattr= 入力属性名を指定 fromlow/fromhighで入力レンジを正規化、tolow/tohighで出力レンジを指定lookup0outputattrscope= Color、lookup0combineop= Set を設定- 出力 POP を Render TOP に渡してシェーダで色属性を参照
Example 3: 重み付きランダム抽選用 CDF テーブルの生成 🎲
Curve POP (monotonic 増加曲線, Color Strip) → CHOP to POP → Particle POP (重み付きサンプリング)
Curve POP で単調増加カーブ (累積分布関数 CDF) を生成し、ルックアップテーブルとして使うことで重み付きランダム抽選を実装する例。Symmetric を使えば対称な分布も容易に定義できる。
- Curve Page で
Output Curve= Color Strip、Total Length= 1024 等に設定 - 複数 Segment を Sequential Block で連結し、各セグメントを Linear / Ease で単調増加させる
Normalize U= On で全 U を 0〜1 にスケール- 出力曲線をルックアップテーブルとして下流でランダム数 → ポイントインデックス変換に使用
関連オペレータ 🔗
類似機能OP 🔍
- Lookup Attribute POP — 外部テーブルを使った属性ルックアップ (Curve POP は内部曲線でルックアップ)
- Math POP — 属性値の数式ベース変換 (Curve POP の曲線ルックアップ代替として使うことが多い)
組み合わせ推奨OP 🔄
- Particle POP — Curve POP の出力ポイント列に沿ってパーティクルを発生・配置
- Geometry COMP — Curve POP の Line Strip / Points をインスタンシング元として利用
- CHOP to POP — CHOP 由来の属性を Curve POP のルックアップインデックスとして注入
- Attribute POP — Curve POP の入出力属性名・型を Lookup 前後で整形
前処理・後処理POP 🎯
- 前処理: Box POP、Circle POP、Attribute POP
- 後処理: Math POP、Blend POP
Info POP情報 📊
Curve POPは Info CHOP / Info DAT による詳細情報取得に対応しています。
POP固有情報 ✨
num_verts: POP に含まれる頂点 (vertex) 数num_points: POP に含まれるポイント数num_prims: POP に含まれるプリミティブ数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)cook_start_time: 最後のクック開始時刻 (ミリ秒)cook_end_time: 最後のクック終了時刻 (ミリ秒)cooked_this_frame: 現フレームでクックされたか (0 / 1)warnings: 警告数errors: エラー数
出力ジオメトリ情報 🧬
num_points: 出力曲線の総ポイント数 (Total Length に対応)num_prims: 出力プリミティブ数 (Line Strip / Color Strip 出力時)num_point_attribs: 出力 POP の point 属性数num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 曲線が意図した形状にならない
✅ Solution:
seg0typeが想定の補間タイプ (Linear / Bezier / Ease) になっているか確認Specify Start Valueがオフの場合、前セグメント終端から連続するため値ジャンプは起きないことを確認- Bezier の場合は
seg0slopein/seg0slopeoutの値を調整して接線を制御
❌ Problem: Lookup モードで出力属性が反映されない
✅ Solution:
applylookupがオンになっているか確認lookupindexattrに指定した属性名が入力 POP に実在するか確認lookup0outputattrscopeとlookup0combineopの組合せが意図通りか確認 (Set で上書き、Add で加算)
❌ Problem: ルックアップ結果がレンジ外で固定値になる
✅ Solution:
fromlow/fromhighが入力属性の実レンジをカバーしているか確認extendleft/extendrightを Hold 以外 (Cycle / Mirror 等) に変更して範囲外の挙動を変える- 入力属性側を前段の Math POP で 0..1 に正規化してから Lookup に渡す
❌ Problem: 曲線ポイント数が多すぎてパフォーマンスが落ちる
✅ Solution:
Total Lengthを必要最小限のサンプル数に抑える- Common Page の
Delete Input Attributesで不要属性を削減 - 下流で
Free Extra GPU Memoryパルスを実行して VRAM を解放
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

