
概要 📖 – ラインを区切って分割
Line Break POPは、入力ポイント群を距離・個数・属性に応じて区切り、独立したラインプリミティブに分割する POPです。区切り条件 3 種類 (定間隔・距離しきい値・入力属性継承) を組み合わせて、長いストリップを意味のある線分グループに分割できます。
主な用途 🎯
- 長いラインストリップを定間隔 (N ポイントごと) で分割してビーズ状の線分群を生成
- 距離しきい値で離れた点同士を切り離し、ジャンプ点で自動的にラインを区切る
- パーティクル / Trail 出力の連続ポイント群を意味のある軌跡セグメントに分割
- 入力ジオメトリのライン区切り属性 (LineBreak 属性) を継承して既存トポロジを保持
- 距離しきい値属性 (per-point attribute) で点ごとに区切り判定の許容範囲を変える
- GPU 側のトポロジ情報を CPU に読み戻してインタラクティブ判定やデバッグを行う
データフロー 🔄
入力: ポイント属性付きジオメトリ (ライン or ポイント群)
↓
区切り条件 (個数 / 距離 / 入力属性) で判定
↓
出力: 区切りごとに分割された独立ラインプリミティブ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Line Break Page 📋
Mode .connecmode 🎛️
入力ジオメトリのどの接続情報を使って分割判定するかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| No Connectivity | .noconnec |
入力の接続情報を無視してポイント列の順序のみを使用 (純粋なポイント並び順で区切り判定) |
| One Line Strip (point order) | .onelinestrip |
入力ポイント全体を 1 本のラインストリップとみなしてポイント順で区切りを挿入 |
| Input Line Strips | .inputlinestrips |
入力ジオメトリに既に存在するラインストリップ接続を尊重したうえで区切りを追加 |
区切り属性 🏷️
出力ジオメトリに付加する区切り判定用の属性 (attribute) を制御します。
Line Break Attribute .uselinebreak ✅
– Line Break Attribute (区切り属性出力) — オンにすると、各ポイントに区切りフラグを示す属性 (区切りなら 1 / それ以外は 0) を追加します。
– 下流の POP / シェーダでセグメント境界を識別する用途に使います。
Line Break Attribute (name) .linebreakname 🔤
– Line Break Attribute (name) (属性名) — 上記で生成する区切りフラグ属性の名前を指定します。
– 既定では linebreak 系の名前。下流が参照する属性名と合わせて変更可能です。
Line Strip Index Attribute .uselinestripindex ✅
– Line Strip Index Attribute (ストリップ番号属性) — オンにすると、各ポイントに「どのラインストリップに属するか」を示す整数属性が追加されます。
– 同じ整数値を持つポイント群が 1 本のストリップとして区別され、属性駆動の per-strip 処理に使えます。
Line Strip Index Attribute (name) .linestripindexname 🔤
– Line Strip Index Attribute (name) (属性名) — 上記で生成するストリップ番号属性の名前を指定します。
– 既定値からの変更で、下流が期待する属性名に合わせ込むことができます。
入力属性継承 📥
入力ジオメトリにすでに付与されている区切り属性を使って分割するかどうかの制御です。
Use Input Line Breaks .useinputlinebreaks 🔗
– Use Input Line Breaks (入力区切りを使用) — オンにすると、入力ジオメトリに既存の区切り属性 (上流 POP が付けたもの) を尊重して分割を行います。
– 既存トポロジを保持しつつ、追加の区切り条件 (距離・定間隔) と組み合わせて使うのが基本フローです。
定間隔区切り 🔢
ポイント数のカウントで区切りを挿入する条件です。
Every N Points .everyn ✅
– Every N Points (N ポイントごと) — オンにすると、N ポイントごとに区切りを挿入してラインを等間隔で分割します。
– ビーズ状のセグメント・周期的な区切り表現に使います。
N .n 🔢
– N (区切り間隔) — 何ポイントごとに区切りを入れるかの整数値です。
– Every N Points がオンのときに有効になります。
距離しきい値区切り 📏
ポイント間の距離が大きいときに自動で区切りを入れる条件です。
By Distance Threshold .bydistancethreshold ✅
– By Distance Threshold (距離で区切る) — オンにすると、隣接ポイント間の距離がしきい値を超えた箇所に自動で区切りを挿入します。
– ジャンプ点 (テレポート) を含むトレイルや、不連続な軌跡を分割する用途で使います。
Distance Threshold .distancethreshold 📐
– Distance Threshold (距離しきい値) — 区切りを入れる最小距離を指定する数値です。
– ポイント間距離がこの値を超えた瞬間に区切りが挿入されます。
Distance Threshold Attribute .distancethresholdattr 🏷️
– Distance Threshold Attribute (距離属性スコープ) — 距離計算に使うポイント属性の名前を指定します (既定はポイント位置 P)。
– 速度や任意の per-point スカラー属性を参照して、属性駆動の動的区切り判定が可能です。
Line Type .linetype 📐
出力するラインプリミティブの形式を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Line Strip | .linestrip |
区切りで分割された各セグメントを連続ラインストリップとして出力 (パス可視化向け) |
| Lines | .lines |
セグメントを 2 点ペアの独立した線分プリミティブ群として出力 (個別操作・GPU 描画効率向け) |
出力制御 📤
出力ジオメトリに付加する情報の有無を制御するパラメータ群です。
Output Line Break Attribute .outputlinebreakattr ✅
– Output Line Break Attribute (区切り属性を出力) — オンにすると、生成した区切り情報を LineBreak 属性として出力ジオメトリに残します。
– 下流の POP で同じ区切り判定を再利用したいときに有効です。
Output Lines .outputlines ✅
– Output Lines (ラインを出力) — オンにすると、区切り後のジオメトリを Line Type メニューで指定した形式 (Line Strip / Lines) で出力します。
– オフのときはポイント属性のみ更新し、プリミティブ生成は行いません (属性パイプライン用)。
CPU 読み戻し 💻
GPU 側で管理しているトポロジ情報を CPU に同期するか否かの制御です。
Copy Topology Info Back to CPU .cpureadback 🔁
– Copy Topology Info Back to CPU (CPU 読み戻し) — オンにすると、GPU 側に保持されているポイント数とトポロジ情報を CPU 側へ読み戻します。
– Python / DAT 等で per-frame に区切り情報を参照する場合に必要ですが、有効化は CPU↔GPU 転送コストが発生するため、参照しないなら無効が推奨です。
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) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: パーティクル軌跡を区切る ✂️
Particle POP → Trail POP → Line Break POP (Every N Points) → Render
Particle POP で発生したポイント群を Trail POP で軌跡化し、Line Break POP の定間隔区切りで一定ポイントごとに分割することで、長い trail を短い破線状セグメントの集合として描画する用途。
- Particle POP でパーティクル発生源を構成、Trail POP で各ポイントの履歴を線にする
- Line Break POP を後段に接続し、Every N Points をオン、N=16 程度で区切り間隔を設定
- Line Type を Lines にしてセグメントごとに独立したラインプリミティブとして出力
- 下流のレンダリング POP / SOP で破線エフェクトとして描画
Example 2: ジャンプ点で軌跡を分離 📏
Curve POP → Line Break POP (By Distance Threshold) → Connectivity POP
テレポート的なジャンプを含むカーブやセンサー軌跡を、距離しきい値による自動区切りで連続部分のみを 1 本のストリップとして残し、不連続点で自然に分割する用途。
- Curve POP / 外部入力で連続するポイント列を構成
- Line Break POP の By Distance Threshold をオンにし、Distance Threshold をジャンプ距離以下に設定
- 出力を Connectivity POP で再接続して、分離された各ストリップを独立プリミティブ化
Example 3: 入力ストリップを尊重 🔗
既存ライン POP → Line Break POP (Mode=Input Line Strips + Use Input Line Breaks) → Transform POP
すでに複数のラインストリップを含む入力ジオメトリに対し、既存トポロジ情報を活かしながら追加の区切り判定を重ねて、メタ情報 (Line Strip Index 属性) を付加する用途。
- Mode を Input Line Strips に設定して、入力の既存ストリップ接続を保持
- Use Input Line Breaks をオンにし、入力既存の区切り属性も継承させる
- Line Strip Index Attribute をオンにして、各ストリップにユニーク番号属性を付加
- 下流で per-strip の Transform 等を Line Strip Index 属性で振り分け
関連オペレータ 🔗
類似機能OP 🔍
- Convert POP — プリミティブ形式を変換 (Line Strip ↔ Lines 等)。Line Break が「区切りを入れて分割」なのに対し Convert は「既存接続を別形式に変換」する役割
組み合わせ推奨OP 🔄
- Particle POP — 前段でパーティクル軌跡を生成し、Line Break で軌跡を時系列的に区切る典型フロー
- Trail POP — 前段で各ポイントの履歴を線として蓄積、Line Break で履歴を一定間隔で分割
- Curve POP — 前段で連続曲線を構成、Line Break で曲線をビーズ状セグメントに分割
- Connectivity POP — Line Break の後段で、分割されたポイント群を再接続して別のプリミティブ形式に再構成
- Transform POP — Line Break が付与した Line Strip Index 属性を参照して、ストリップごとに別の変換を適用
- Attribute POP — Line Strip Index / LineBreak 属性を読み出して per-segment の色や速度を生成
前処理・後処理POP 🎯
- 前処理: Particle POP、Trail POP、Curve POP、Line POP、Connectivity POP
- 後処理: Transform POP、Convert POP、Attribute POP、Line Resample POP
Info POP情報 📊
Line Break POP は Info CHOP 経由で出力ジオメトリの統計情報を取得できます。
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: エラー数
POP 汎用情報 📊 📊
num_points: 出力ジオメトリのポイント数num_prims: Line Break が生成したライン / ラインストリッププリミティブの総数num_point_attribs: 出力ジオメトリのポイント属性数 (区切り属性 / ストリップ番号属性を含む)num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 区切りが入らない
✅ Solution:
Every N PointsまたはBy Distance Thresholdのいずれかがオンになっているか確認 (両方オフだと区切りは追加されません)ModeがNo Connectivityのときは、入力の既存接続を無視するため、想定とずれることがありますOutput Linesがオフだとプリミティブが生成されないため、結果として「線が消えた」ように見える点に注意
❌ Problem: 距離しきい値で意図しない場所が区切られる
✅ Solution:
Distance Thresholdの値を入力ジオメトリのスケールに合わせて再調整- 前段に Transform POP を入れている場合、スケール変更で距離が変わるため Transform 後の値で設定
Distance Threshold Attributeを設定している場合、参照属性の値が想定通りか Info CHOP で確認
❌ Problem: Line Strip Index 属性で per-strip 処理がうまくいかない
✅ Solution:
Line Strip Index Attributeがオンになっているかを確認- 下流の Attribute POP / シェーダで参照している属性名が
Line Strip Index Attribute (name)で指定した名前と一致しているか確認 ModeをInput Line Stripsにして既存ストリップを尊重させると、入力に応じた一貫した番号が割り当てやすくなります
❌ Problem: CPU 側で区切り情報を参照できない
✅ Solution:
Copy Topology Info Back to CPUをオンにして GPU から CPU へトポロジ情報を読み戻す- ただし読み戻しは転送コストが発生するため、参照しないフレームではオフにする運用が推奨
- 属性ベースで判定する場合は
Output Line Break Attributeをオンにして属性として出力経路に流す方法も有効
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Line Break POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- Connectivity POP (関連: 接続生成)
- 属性 (Attribute) の基礎

