
概要 📖 – 点群からプリミティブを生成
Primitive POPは、入力された点群からライン・三角形・四角形などのプリミティブを GPU 上で生成する POPです。新しいアトリビュートの追加や、点をどうまとめてプリミティブにするかのルール設定が中心です。
主な用途 🎯
- 入力した点群からライン・三角形・四角形などのプリミティブを生成
- 新しいアトリビュート(色・テクスチャ座標・点サイズ等)を点に追加
- 点をN個ずつのグループに束ねてプリミティブ化するパターン生成
- GPU 上でジオメトリのトポロジー(接続情報)を構築
- パーティクルやプロシージャル形状の下地となる構造作り
データフロー 🔄
入力: 点群(位置を持つポイント)
↓
処理(点をプリミティブにまとめ、アトリビュートを付与)
↓
出力: プリミティブ付きジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
基本設定 .setup 🧷
Delete Primitives and Keep Points .keep 🧹
– Delete Primitives and Keep Points (既存プリミティブを削除して点だけ残す) — 入力に含まれるプリミティブを取り除き、点 (ポイント) だけを残します。
Add Points .addpts ➕
– Add Points (点を追加) — 新しい点を追加するかどうかを切り替えます。
Pre-Multiply RGB by Alpha .premultcolor 🎨
– Pre-Multiply RGB by Alpha (RGB をアルファで事前乗算) — RGB 値をアルファ値で事前に掛け合わせます。
新規アトリビュート名 .attr0name 🏷️
New Attribute (新規アトリビュート) ブロックで作成するアトリビュートの種類を選びます。定義済みの種類か、自由に命名するカスタムを選択します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Custom | .custom |
自由に命名するカスタムアトリビュート |
| N | .n |
N 個ごとや N グループ単位でプリミティブを作るときの N 値 |
| Color | .color |
色 (Color) アトリビュート |
| Tex | .tex |
テクスチャ座標 (Tex) アトリビュート |
| PointScale | .pointscale |
点サイズ (PointScale) アトリビュート |
| LineWidth | .linewidth |
線幅 (LineWidth) アトリビュート |
アトリビュート型 .attr0type 🔢
Type (型) — 新規アトリビュートが保持する値の型を決めます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
単精度浮動小数点 (float) |
| double | .double |
倍精度浮動小数点 (double) |
| int | .int |
符号付き整数 (int) |
| uint | .uint |
符号なし整数 (uint) |
| dir | .dir |
方向ベクトル (dir) |
| dbl dir | .ddir |
倍精度の方向ベクトル (dbl dir) |
成分数とデフォルト値 .attr0comps 📐
Number of Components .attr0numcomps 🔢
– Number of Components (成分数) — 新規アトリビュートの成分数を 1 / 2 / 3 / 4 から選びます。
Custom Name .attr0customname 🏷️
– Custom Name (カスタム名) — 自由に命名するアトリビュートの名前を指定します。
Default Value .attr0value 🎚️
– Default Value (デフォルト値) — アトリビュート各成分の初期値を attr0value0〜attr0value3 で設定します。
Points Page 📍
点の追加 .pt 📍
Point .pt 📍
– Point (点) — 追加する点を定義する連続パラメータブロックの先頭です。
Position .pt0pos 🧭
– Position (位置) — 追加する点の座標を pt0posx / pt0posy / pt0posz で指定します。
Primitives Page 🔺
生成方法 .method 🧩
Method (生成方法) — 点をどのルールでまとめて新しいプリミティブを作るかを決めます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
プリミティブを生成しない |
| By Set | .set |
点をセット (まとまり) 単位でグループ化して生成 |
| By Pattern | .pattern |
[0-5] のような番号パターンで点を指定して生成 |
セット種類 .setprimtype 🔺
Primitives Type (プリミティブ種類) — セットから出力するプリミティブの形状を選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
形状を生成しない |
| Points | .points |
点 (Points) プリミティブ |
| Lines | .lines |
線 (Lines) プリミティブ |
| Triangles | .triangles |
三角形 (Triangles) プリミティブ |
| Quads | .quads |
四角形 (Quads) プリミティブ |
点のまとめ方 .set 🧷
Set (まとめ方) — 全点を 1 つにまとめるか、N 個ずつのグループに分けるかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| All Points | .all |
すべての点を 1 つのセットとして扱う |
| Groups of N Points | .group |
N 個ずつの点のグループに分割して扱う |
個別プリミティブ定義 .prim 🛠️
N .n 🔢
– N — Groups of N Points 選択時に、1 グループあたりの点数を指定します。
Primitive .prim 🛠️
– Primitive (プリミティブ) — プリミティブを個別に作成する連続パラメータブロックの先頭です。
Point Index Pattern .prim0pattern 🔢
– Point Index Pattern (点インデックスパターン) — プリミティブに含める点を番号 (インデックス) で指定するパターンです。
個別プリミティブ型 .prim0type 🔺
Type (型) — 個別作成するプリミティブの形状を選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
形状を生成しない |
| Points | .points |
点 (Points) プリミティブ |
| Lines | .lines |
線 (Lines) プリミティブ |
| Triangles | .triangles |
三角形 (Triangles) プリミティブ |
| Quads | .quads |
四角形 (Quads) プリミティブ |
Post Page 📤
未使用点の処理 .unusedpointsop 🧹
Unused Points (未使用点) — プリミティブに使われなかった点をどう扱うかを決めます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Do Nothing | .donothing |
何もせずそのまま残す |
| Remove | .remove |
未使用点を削除する |
| Turn into Point Prims | .pointprims |
未使用点を点プリミティブに変換する |
CPU 読み戻し .cpureadback 💻
Copy Topology Info Back to CPU .cpureadback 💻
– Copy Topology Info Back to CPU (トポロジー情報を CPU に書き戻す) — GPU 上の点数とトポロジー (接続) 情報を CPU 側にコピーします。
実践アイデア 💡
Example 1: 点群を三角メッシュ化 🔺
Point Generator POP → Primitive POP (By Set / Triangles) → Render
Point Generator POP で散らした点群を Primitive POP に通し、点をセット単位で三角形プリミティブにまとめて、面のあるジオメトリとして描画できる状態にする基本フローです。
- Point Generator POP で点群を用意
- Primitive POP の Method を「By Set」に設定
- Primitives Type を「Triangles」に設定して三角形を生成
- 出力をレンダリング経路に接続して面として表示
Example 2: 点に色を付与 🎨
Grid POP → Primitive POP (New Attribute: Color) → GLSL POP
Grid POP で並べた点に対し Primitive POP で Color アトリビュートを新規追加し、後段の GLSL POP で色を使った表現に繋げる、アトリビュート付与の例です。
- Grid POP で格子状の点を生成
- Primitive POP の New Attribute で「Color」を選択して色アトリビュートを追加
- Default Value で初期色を設定
Example 3: N 個ずつ線で接続 📏
Pattern POP → Primitive POP (Groups of N Points / Lines)
Pattern POP で生成した点列を Primitive POP の Groups of N Points モードで N 個ずつ束ね、線プリミティブとして接続することで、プロシージャルなライン形状を作る用途です。
- Pattern POP で点列を生成
- Primitive POP の Set を「Groups of N Points」に設定し N 値を指定
- Primitives Type を「Lines」にして点を線で接続
関連オペレータ 🔗
類似機能OP 🔍
- Convert POP — プリミティブの種類を相互に変換
- Polygonize POP — プリミティブをポリゴンに変換
組み合わせ推奨OP 🔄
- Point Generator POP — 前段でプリミティブ化する点群を生成
- Attribute POP — 付与したアトリビュートを後段で編集
- GLSL POP — 生成形状を GPU シェーダで加工
- Triangulate POP — プリミティブを三角形分割
前処理・後処理POP 🎯
Info情報 📊
Primitive 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: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: プリミティブが生成されない
✅ Solution:
- Method が「None」になっていないか確認し、「By Set」または「By Pattern」に設定
- Primitives Type / Type が「None」のままだと形状が出ないため、Lines / Triangles / Quads 等を選択
- 入力に十分な点が存在するか前段の Point Generator POP を確認
❌ Problem: 追加したアトリビュートが反映されない
✅ Solution:
- New Attribute の Name とアトリビュート型 (Type)・成分数 (Number of Components) が用途に合っているか確認
- Default Value (attr0value) に初期値を設定しているか確認
- Delete Input Attributes で必要なアトリビュートを誤って除外していないか確認
❌ Problem: 動作が重い・GPU メモリを消費する
✅ Solution:
- Copy Topology Info Back to CPU は必要なときだけ有効にする (GPU→CPU 転送はコスト大)
- Free Extra GPU Memory を有効にして余分なメモリを解放
- 未使用点は Post ページの Unused Points を「Remove」にして削減
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

