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

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

Curve POP のパラメトリック曲線生成機能を示す図

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

概要 📖 – パラメトリック曲線生成と属性ルックアップ

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

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 で接線を制御することで意図通りのカーブが得られる。

  1. Curve Page で Output Curve = Line Strips、Total Length = 256 を設定
  2. seg0type = Bezier、seg0u = 1.0、Parameter Size = 3 で 3 次元軌道に
  3. seg0startval0..2 / seg0endval0..2 で開始・終端位置を指定
  4. seg0slopein / seg0slopeout で接線を調整し意図したカーブにする
  5. 出力ポイント列を Geometry COMP の Instancing で参照しオブジェクト軌道として描画

Example 2: 属性値のカーブによる Remap 🔄

入力 POP → Curve POP (Apply Lookup, output Color) → Render TOP

入力 POP のスカラー属性値 (例: 高さや距離) を Curve POP の Lookup モードで色属性に remap する例。Color Strip 出力ではなく Apply Lookup を使うことで、既存ジオメトリの属性を曲線経由で変換できる。

  1. Curve Page で曲線形状を Constant / Linear / Ease で構築 (出力レンジを 0..1 等にしておく)
  2. Lookup Page で applylookup = On、lookupindexattr = 入力属性名を指定
  3. fromlow / fromhigh で入力レンジを正規化、tolow / tohigh で出力レンジを指定
  4. lookup0outputattrscope = Color、lookup0combineop = Set を設定
  5. 出力 POP を Render TOP に渡してシェーダで色属性を参照

Example 3: 重み付きランダム抽選用 CDF テーブルの生成 🎲

Curve POP (monotonic 増加曲線, Color Strip) → CHOP to POP → Particle POP (重み付きサンプリング)

Curve POP で単調増加カーブ (累積分布関数 CDF) を生成し、ルックアップテーブルとして使うことで重み付きランダム抽選を実装する例。Symmetric を使えば対称な分布も容易に定義できる。

  1. Curve Page で Output Curve = Color Strip、Total Length = 1024 等に設定
  2. 複数 Segment を Sequential Block で連結し、各セグメントを Linear / Ease で単調増加させる
  3. Normalize U = On で全 U を 0〜1 にスケール
  4. 出力曲線をルックアップテーブルとして下流でランダム数 → ポイントインデックス変換に使用

関連オペレータ 🔗

類似機能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 🎯


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 に実在するか確認
  • lookup0outputattrscopelookup0combineop の組合せが意図通りか確認 (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 を解放

参考資料 📚

その他 🔗

公式リソース 📖

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