
概要 📖 – 点を線分で滑らかに結ぶ
Line POPは、制御点リストを線分プリミティブに変換し、Linear / Cardinal / BSpline / Cubic Bezier / Quadratic Bezier の 6 種類の補間方式で滑らかな曲線として出力する POPです。Divisions ページで分割数や点間距離を指定して細分化でき、出力モードを Control Points に切り替えれば Line Divide POP に渡して後段で再分割する運用も可能です。
主な用途 🎯
- 制御点リストから連続した線分プリミティブを生成
- Linear / Cardinal / BSpline / Bezier 等の曲線補間で滑らかな曲線を作成
- 線分を等分割または等間隔でリサンプリング
- 1 本の点列を複数の独立した線に分割 (Multiple Line Strips)
- Line Divide POP に渡すための制御点列と補間属性 (SegMethod) の出力
データフロー 🔄
入力: 制御点リスト (POP)
↓
Line POP(補間方式と分割数を設定して線分化)
↓
出力: 連続した線分プリミティブ (Line Strips) または分割前の制御点 (Control Points)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
出力モード .output 📤
出力するプリミティブの種類
| 項目 | 内部名 | 説明 |
|---|---|---|
| Subdivided Lines | .subdivlines |
細分化済みの線分ストリップとして出力 (通常用途) |
| Control Points | .ctrlpoints |
未分割の制御点リストとして出力し、後段の Line Divide POP で分割する用途。SegMethod 等の補間属性が併せて出力される |
線分構成 🧵
Multiple Line Strips .multiplelinestrips ✂️
– Multiple Line Strips (複数線分モード) — オンにすると 1 つの点列を複数の独立した線分に分割可能
– 有効時は Points ページのシーケンシャルブロックに「line break」トグルが追加され、点ごとに線の区切りを指定できる
Closed .closed 🔁
– Closed (閉じた線) — オンにすると最終頂点が最初の頂点に接続され閉じたループになる
– 円や多角形のような閉じた輪郭を作るときに使用
Enable Point Repeat .enablepointrepeat 🔂
– Enable Point Repeat (制御点の繰り返し許可) — オンにすると同じ制御点を複数回指定できる
– 主に BSpline 補間でノット (knot) を重ねて折れ点を作るときに使用
補間方式 .interpmethod 📈
制御点間を結ぶ補間方式の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Linear | .linear |
制御点間を直線で結ぶ (デフォルト) |
| Cardinal (Interpolating) | .cardinal |
制御点を必ず通過する Cardinal スプライン (Tension パラメータでカーブの張り具合を制御) |
| BSpline | .bspline |
制御点を通過しないが滑らかな B スプライン (Enable Weights / Enable Point Repeat と併用) |
| Cubic Bezier With Tangents | .cubicbeziertang |
制御点ごとに接線を指定する 3 次ベジエ (Enable Tangents で接線属性を有効化) |
| Cubic Bezier | .cubicbezier |
標準的な 3 次ベジエ曲線 |
| Quadratic Bezier | .quadraticbezier |
2 次ベジエ曲線 (3 次より軽量だが表現力は限定) |
補間オプション 🎛️
Interpolation Method per Segment .interpmethodpersegment 🔀
– Interpolation Method per Segment (セグメントごとの補間方式) — オンにするとセグメント単位で異なる補間方式を割り当て可能
– Points ページのシーケンシャルブロックに SegMethod パラメータが追加される
Tension .tension 🎚️
– Tension (張力) — Cardinal 補間時に曲線が制御点をどれだけ強く突き抜けるかを制御
– 値が大きいほどカーブが鋭く、小さいほど緩やかになる
Enable Weights .enableweights ⚖️
– Enable Weights (重み有効化) — 各制御点に重みを指定できるようにする
– 主に BSpline / Bezier で制御点の影響度を変えるときに使用
Enable Tangents .enabletangent 📐
– Enable Tangents (接線有効化) — 制御点ごとに接線ベクトルを指定可能にする
– Cubic Bezier With Tangents 補間時に必須
色設定 .premultcolor 🎨
Pre-Multiply RGB by Alpha .premultcolor 🎨
– Pre-Multiply RGB by Alpha (アルファ事前乗算) — オンにすると RGB 値をアルファ値で事前乗算する
– 半透明合成の正確性のためにレンダリング前に乗算しておきたい場合に使用
属性追加ブロック .attr ✨
Sequential Parameter Blocks による新規属性の連続定義(インデックス N=0,1,2… が増えるたびに以下のセットがリピートされる)
New Attribute .attr ➕
– New Attribute (新規属性) — 属性追加シーケンシャルブロックの開始マーカー
– 値を増やすたびに以下のパラメータ群 (Name / Type / Number of Components / Default Value) が複製される
属性名選択 .attr0name 🏷️
追加する属性の名前 (規約属性またはカスタム名)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Custom | .custom |
下の Custom Name でカスタム属性名を指定 |
| N | .n |
法線 (Normal) 属性 |
| Color | .color |
RGBA カラー属性 |
| Tex | .tex |
テクスチャ座標属性 |
| PointScale | .pointscale |
ポイントスケール (大きさ) 属性 |
| LineWidth | .linewidth |
ライン幅属性 (描画時の太さ制御) |
カスタム属性名 .attr0customname 🔤
Custom Name .attr0customname 🔤
– Custom Name (カスタム属性名) — Name パラメータで Custom を選んだとき有効
– 任意の属性名を指定でき下流の POP でその名前でアクセス可能になる
属性データ型 .attr0type 🔢
追加属性のデータ型
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
32-bit 浮動小数点 |
| double | .double |
64-bit 浮動小数点 |
| int | .int |
符号付き整数 |
| uint | .uint |
符号なし整数 |
| dir | .dir |
方向ベクトル (float、正規化前提) |
| dbl dir | .ddir |
方向ベクトル (double、正規化前提) |
コンポーネント数 .attr0numcomps 📊
追加属性のコンポーネント数
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー値 |
| 2 | .2 |
2 次元 (UV 等) |
| 3 | .3 |
3 次元 (XYZ・RGB 等) |
| 4 | .4 |
4 次元 (RGBA・Quaternion 等) |
デフォルト値 .attr0value 🎯
Default Value .attr0value 🎯
– Default Value (デフォルト値) — 新規属性の初期値
– Number of Components に応じて attr0value0 / attr0value1 / attr0value2 / attr0value3 を指定
Points Page 📍
制御点位置 .pt 📌
Sequential Parameter Blocks による制御点の連続定義(インデックス N=0,1,2… が増えるたびに以下のセットがリピートされる)
Point .pt 📍
– Point (制御点) — 制御点シーケンシャルブロックの開始マーカー
– 値を増やすたびに以下のパラメータ群 (Position 等) が複製され線分の頂点として追加される
Position .pt0pos 📐
– Position (位置) — 各制御点の XYZ 座標
– pt0pos / pt1pos / pt2pos … のように制御点ごとに指定する
Divisions Page 📐
分割方式 .divmethod 🪓
線分をどの単位で分割するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Divisions per Line Strip | .linestrip |
線分ストリップ 1 本につき指定の分割数で細分化 |
| Divisions per Segment | .segment |
各セグメント (制御点間) を指定の分割数で細分化 |
| Divisions Defined per Segment | .defpersegment |
セグメントごとに個別の分割数を指定 (Points ページで定義) |
| Distance between Points (per Segment) | .distseg |
セグメントごとに点間距離を指定して細分化 |
分割数と距離 🔢
Divisions .divs 🔢
– Divisions (分割数) — 分割方式に応じた分割数の指定
– 値が大きいほど滑らかになるが GPU メモリ消費も増加する
Distance .dist 📏
– Distance (点間距離) — 距離ベース分割時の点間距離
– Divisions Method = distseg のときに有効
Add ControlPoint Attribute .addctrlpointattr 🏷️
– Add ControlPoint Attribute (制御点属性付与) — オンにすると出力点に制御点由来の属性を引き継ぐ
– 分割後の各点が元の制御点情報を保持する必要があるときに使用
再分割方式 .resamplemethod 🔁
1 次分割後の再サンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
再サンプリングを行わない (デフォルト) |
| Divisions per Line Strip | .linestrip |
線分ストリップ単位で指定数のポイントに再サンプリング |
| Distance between Points | .dist |
指定の点間距離になるように再サンプリング |
| Points as Keyframes | .keyframes |
既存ポイントをキーフレームとして扱い、独立変数の値で再サンプリング |
再分割パラメータ 🎛️
Divisions .resampledivs 🔢
– Divisions (再分割数) — 再サンプリング後のポイント数
– Post-Resample Method = linestrip のときに有効
Distance .resampledist 📏
– Distance (再分割距離) — 再サンプリング時の最大点間距離
– Post-Resample Method = dist のときに有効
Maximum Number of Vertices .resamplemaxverts 🧮
– Maximum Number of Vertices (最大頂点数) — 確保する頂点バッファのサイズ
– 実際に生成される頂点数より大きく取る必要があり、過大に設定すると GPU メモリを浪費する
Max Tries for Binary Search .maxtries 🔍
– Max Tries for Binary Search (二分探索最大試行数) — 距離ベース再分割で二分探索を打ち切る回数
– 通常はデフォルトのままで良いが極端に高密度な分割では増やす
独立変数 .indvarattr 📊
Points as Keyframes 方式の独立変数属性
| 項目 | 内部名 | 説明 |
|---|---|---|
| P(0) | .P(0) |
位置属性の X 成分を独立変数として使用 (デフォルト) |
独立変数ステップ .indvarstep 📏
Independant Variable Step .indvarstep 📏
– Independant Variable Step (独立変数ステップ) — 独立変数の刻み幅
– 通常は独立変数のレンジに対する分数として指定 (例: レンジ 0..10 で step=0.1 なら 100 サンプル)
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: Bezier 軌道の生成 🎬
Line POP (Cubic Bezier With Tangents, 4 control points) → Geometry COMP (Instancing along Line Strip) → Render TOP
4 個の制御点と接線情報を指定して Cubic Bezier With Tangents 補間でなめらかなカメラ軌道を作り、その線分上にオブジェクトをインスタンシング配置するパイプライン。接線属性を有効化することで意図通りのカーブが得られる。
- Setup ページで
Interpolation Method=Cubic Bezier With Tangentsを選択しEnable Tangentsをオンに - Points ページで 4 個の制御点位置 (
pt0pos〜pt3pos) と接線属性を指定 - Divisions ページで
Divisions Method=Divisions per Line Strip、Divisions= 256 程度に設定 - 出力した Line Strip を Geometry COMP の Instancing で参照しオブジェクトを線に沿って配置
- Render TOP で最終描画
Example 2: 複数線分の同時生成 🧵
Pattern POP (8 control points) → Line POP (Multiple Line Strips on) → Render TOP
Multiple Line Strips を有効化することで 1 個の Line POP から複数の独立した線分を同時に出力する例。Points ページの line break トグルで点列を区切り、複数本の独立ラインを 1 ノードでまとめて扱える。
- 前段で 8 個程度の制御点を持つ点列を用意 (Pattern POP / Circle POP 等)
- Setup ページで
Multiple Line Stripsをオンに切り替え - Points ページの line break トグルで線分の区切り位置を指定
- 出力に複数の独立した Line Strip プリミティブが現れ、Render TOP でまとめて描画される
Example 3: 等間隔リサンプリング 📏
File In POP (irregular control points) → Line POP (Cardinal, Post-Resample by Distance) → Math POP
不均等な間隔の制御点列を Cardinal 補間で滑らかにつないだ後、Post-Resample Method = Distance between Points で点間距離を一定に揃える例。下流の弧長依存処理 (テクスチャマッピング・パーティクル放出等) で等間隔ポイントが必要なときに有効。
- File In POP 等で不均等な制御点列を読み込む
- Setup ページで
Interpolation Method=Cardinal (Interpolating)、Tension= 0.5 程度に設定 - Divisions ページで 1 次分割後に
Post-Resample Method=Distance between Points、Distance= 0.1 等を指定 Maximum Number of Verticesを実際の出力数より十分大きく設定して頂点バッファ不足を防ぐ
関連オペレータ 🔗
類似機能OP 🔍
- Curve POP — セグメントごとに数式定義したパラメトリック曲線を生成 (Line POP は制御点ベース、Curve POP は数式ベース)
- Pattern POP — 格子状・規則的なパターン点列を生成 (Line POP の前段で制御点列を用意する用途)
組み合わせ推奨OP 🔄
- Line Divide POP — Line POP の
Control Points出力モードで生成した未分割の制御点列を後段で再分割 - Line Resample POP — Line POP 出力の線分を更に等間隔または曲率ベースで再サンプリング
- Line Smooth POP — Line POP 出力に追加のスムージングを適用してノイズを除去
- Geometry COMP — Line POP の Line Strip 出力をインスタンシング元として利用しオブジェクトを軌道上に並べる
- Particle POP — Line POP の線分に沿ってパーティクルを発生・配置
- CHOP to POP — CHOP 由来のチャンネル値を Line POP の制御点位置として注入
前処理・後処理POP 🎯
- 前処理: Point POP、Pattern POP、Circle POP、Attribute POP
- 後処理: Line Divide POP、Line Resample POP、Line Smooth POP、Transform POP、Copy POP
Info POP情報 📊
Line 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: 出力線分の総ポイント数 (Divisions Page の設定に応じて変動)num_prims: 出力プリミティブ数 (Multiple Line Strips 有効時は複数線分の合計)num_point_attribs: 出力 POP の point 属性数 (New Attribute で追加した属性込み)num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 補間曲線が想定した形状にならない
✅ Solution:
Interpolation Methodが想定の方式 (Linear / Cardinal / BSpline / Bezier) になっているか確認- Cardinal の場合は
Tension値を調整 (デフォルト 0.5、上げるとカーブが鋭く、下げると緩やか) - Bezier With Tangents 使用時は
Enable Tangentsがオンで、Points ページに接線属性が設定されているか確認 - BSpline で折れ点を作りたい場合は
Enable Point Repeatをオンにして同一制御点を複数回指定
❌ Problem: 出力線分が 1 本に繋がってしまう (分けたい)
✅ Solution:
- Setup ページの
Multiple Line Stripsをオンに切り替え - Points ページの line break トグルで線分の区切り位置を明示的に指定
- 前段で別ブランチに分けて Merge POP で合成する代替案も検討
❌ Problem: Maximum Number of Vertices 超過で頂点が欠ける
✅ Solution:
Maximum Number of Verticesの値を実際の出力頂点数より十分大きく設定 (Info popup で実数を確認)Divisionsの値を必要最小限に抑えて頂点数を削減- Divisions Page の
Post-Resample Method=Noneに変更し再サンプリングを省略
❌ Problem: Line Divide POP に渡しても再分割が効かない
✅ Solution:
- Setup ページの
Output=Control Pointsに切り替えて未分割の制御点を出力 - 出力に
SegMethod属性が含まれているか Info popup で確認 (Interpolation Method の数値表現) - Line POP 側の
Interpolation Methodと Line Divide POP 側の補間設定が整合しているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

