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

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

Line POP の線分プリミティブ生成機能を示す図

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

概要 📖 – 点を線分で滑らかに結ぶ

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)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 補間でなめらかなカメラ軌道を作り、その線分上にオブジェクトをインスタンシング配置するパイプライン。接線属性を有効化することで意図通りのカーブが得られる。

  1. Setup ページで Interpolation Method = Cubic Bezier With Tangents を選択し Enable Tangents をオンに
  2. Points ページで 4 個の制御点位置 (pt0pospt3pos) と接線属性を指定
  3. Divisions ページで Divisions Method = Divisions per Line StripDivisions = 256 程度に設定
  4. 出力した Line Strip を Geometry COMP の Instancing で参照しオブジェクトを線に沿って配置
  5. 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 ノードでまとめて扱える。

  1. 前段で 8 個程度の制御点を持つ点列を用意 (Pattern POP / Circle POP 等)
  2. Setup ページで Multiple Line Strips をオンに切り替え
  3. Points ページの line break トグルで線分の区切り位置を指定
  4. 出力に複数の独立した 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 で点間距離を一定に揃える例。下流の弧長依存処理 (テクスチャマッピング・パーティクル放出等) で等間隔ポイントが必要なときに有効。

  1. File In POP 等で不均等な制御点列を読み込む
  2. Setup ページで Interpolation Method = Cardinal (Interpolating)Tension = 0.5 程度に設定
  3. Divisions ページで 1 次分割後に Post-Resample Method = Distance between PointsDistance = 0.1 等を指定
  4. 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 🎯


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 側の補間設定が整合しているか確認

参考資料 📚

その他 🔗

公式リソース 📖

関連オペレータ 🔗

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