
概要 📖 – 点の格子を生成する
Grid POPは、行・列・スライス数で指定した規則的な点群を生成し、線・三角形・四辺形などの接続形状で出力する POPです。Connectivity で出力プリミティブの種類 (点・線・三角形・四辺形) を選択でき、Anchor / Translate / Rotate / Scale で配置を細かく制御できます。入力 POP を接続して Modify Bounds をオンにすると、入力のバウンディングボックスに合わせてグリッドを自動配置することも可能です。
主な用途 🎯
- 規則的な格子状ポイント群の生成
- パーティクル系の初期配置・発生点ソースの作成
- サンプリング用テストパターンとしてのグリッド生成
- 線・三角形・四辺形など基本プリミティブの一括生成
- GLSL POP / Texture Map POP 検証用のテストジオメトリ準備
データフロー 🔄
入力: (任意の bounds 用 POP)
↓
Grid POP(Columns × Rows × Slices で格子点を配置、Connectivity で接続形状を決定)
↓
出力: 点群+指定プリミティブを持つ POP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Grid Page 📋
Connectivity .surftype 🔗
格子点をどのプリミティブで接続するかを決めるメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
接続を行わず、点のみを出力 (プリミティブなし) |
| Point Primitives | .points |
各点を独立した Point プリミティブとして出力 |
| Lines | .lines |
隣接する 2 点ごとに独立した Line プリミティブを出力 |
| Line Strips | .linestrips |
連続したラインストリップとして接続出力 (1 行=1 ストリップ) |
| Triangles | .triangles |
格子セルを 2 つの三角形に分割して出力 |
| Alternating Triangles | .alttriangles |
セルごとに三角形の対角線方向を交互に変えて出力 (ジオメトリ偏りの軽減) |
| Quadrilaterals | .quads |
格子セルを 4 頂点の四辺形プリミティブとして出力 |
入力 bounds と寸法 📐
Modify Bounds .modifybounds 🧭
– Modify Bounds (バウンディング上書き) — 入力 POP が接続されている場合にのみ有効
– オン時は入力 POP のバウンディングボックスを基準として、下記の Size / Translate / Rotate / Scale 等で更にグリッドの形状を変形させる
Size .size 📏
– Size (3D サイズ) — 生成するグリッドの XYZ 方向の大きさ
– 内部名 sizex / sizey / sizez の 3 成分で指定
格子分割数 🔢
Columns .cols 📊
– Columns (列数) — X 方向に並べる点の列数
– 値を増やすほど横方向の密度が高くなる
Rows .rows 📊
– Rows (行数) — Y 方向に並べる点の行数
Slices .slices 📊
– Slices (スライス数) — Z 方向に重ねるレイヤー数
– 1 にすると平面、2 以上で立体格子になる
Unique Points .uniquepoints ✂️
– Unique Points (点の非共有) — プリミティブ間で点を共有しないモード
– オンにすると隣接プリミティブが頂点を重複して持つため、フェイス単位で属性を独立させたい場合に使用
ランダム化 🎲
Seed .seed 🌱
– Seed (乱数シード) — ランダム化の初期値
– 同じ Seed なら同じ乱数列が再生されるため、再現性のあるバリエーション生成が可能
Random .random 🔀
– Random (位置ジッタ幅) — 各点の位置に加える XYZ 方向のランダムオフセット量
– 内部名 randomx / randomy / randomz の 3 成分で指定
Random Size Fit .randomsizefit 📦
– Random Size Fit (ランダム適用後の補正スケール) — ランダム適用前の バウンディング寸法を維持するためのスケール係数
– 内部名 randomsizefitx / randomsizefity / randomsizefitz の 3 成分で指定
軸・平面の有効化 📐
Line X/Y/Z .line 📈
– Line X/Y/Z (軸方向ライン) — X / Y / Z 各軸方向に沿ったラインを有効化するトグル
– 内部名 linex / liney / linez の 3 成分
Plane XY/YZ/ZX .plane 🟦
– Plane XY/YZ/ZX (平面の向き) — XY / YZ / ZX のどの平面でグリッドを構成するかを選択
– 内部名 planex / planey / planez の 3 成分
アンカー位置 📍
Anchor U .anchoru ↔️
– Anchor U (U 方向アンカー) — 左端・中央・右端のいずれを原点 0 に揃えるかを指定
– グリッドを原点基準で配置する際の整列基準として使用
Anchor V .anchorv ↕️
– Anchor V (V 方向アンカー) — 下端・中央・上端のいずれを原点 0 に揃えるかを指定
Anchor W .anchorw 🔃
– Anchor W (W 方向アンカー) — 後ろ端・中央・前端のいずれを原点 0 に揃えるかを指定 (3D 配置時の Z 軸アンカー)
トランスフォーム 🧮
Translate .t ➡️
– Translate (平行移動) — 生成された点群を XYZ 軸方向に平行移動
– 内部名 tx / ty / tz の 3 成分
Rotate .r 🔄
– Rotate (回転) — 各点を XYZ 軸まわりに回転 (角度は度数法)
– 内部名 rx / ry / rz の 3 成分
Uniform Scale .scale 🔍
– Uniform Scale (一様スケール) — 全軸に均等に作用するスケール係数
– 1.0 が等倍、0.5 で半分、2.0 で 2 倍
出力属性の制御 🎨
Normal .normal 🧭
– Normal (法線属性) — 法線属性を生成するかと、生成する場合の属性クラス (point / vertex / primitive) を選択
– None を選ぶと法線属性は生成されない
Texture Coordinates .texture 🗺️
– Texture Coordinates (UV 座標属性) — UV テクスチャ座標を生成するかと、生成する場合の属性クラスを選択
– None を選ぶと UV 属性は生成されない
Append Dimension .dimension 🧊
次元属性の付加方式 (Rows / Cols / Slices の数値に応じてどの次元を属性として出力するか)
| 項目 | 内部名 | 説明 |
|---|---|---|
| When Rows Cols Slices > 1 | .morethanone |
Rows / Cols / Slices のいずれかが 2 以上のときだけ、その次元を属性として追加 |
| Always for Rows Cols | .rowscolsalways |
Rows / Cols は常に次元属性として追加 (Slices は条件付き) |
| Always for Rows Cols Slices | .rowscolsslicesalways |
Rows / Cols / Slices すべてを常に次元属性として追加 |
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: パーティクル発生点の格子 ✨
Grid POP (Connectivity=None) → Particle POP (発生点ソース) → Render TOP
Grid POP の Connectivity を None に設定して純粋な格子点群だけを出力し、それを Particle POP の発生点ソースとして接続する基本フロー。Columns / Rows / Slices を変えるだけで発生点の密度と分布を均一に変えられるため、グリッド状にパーティクルを湧き出させたい場面で頻用される。
- Grid POP の
Columns/Rows/Slicesを発生点の密度に合わせて設定 Connectivity= None でプリミティブを生成せず、点だけを出力SizeおよびAnchor U/V/Wでグリッドの大きさと原点位置を調整- Particle POP の発生点入力に Grid POP を接続
- Render TOP に渡して可視化
Example 2: 軸方向ワイヤーフレーム 📏
Grid POP (Connectivity=Lines, Plane=XY) → Transform POP → Render TOP
Connectivity を Lines、Plane を XY に設定すると、XY 平面上に縦横のワイヤーフレーム格子が生成される。背景の方眼グリッドや UI 装飾、空間方向のリファレンスマーカーとして使える基本パターン。Line X/Y/Z で X 軸線・Y 軸線の有効/無効を個別にトグルできる。
- Grid POP の
Connectivityを Lines に設定 Plane XY/YZ/ZXで目的の平面を選択 (例: XY 平面)Line X/Y/Zで必要な軸方向だけをオンにColumns/Rowsで格子の刻み数を指定- 後段 Transform POP で位置調整し Render TOP で描画
Example 3: 三角形メッシュの基盤生成 🔺
Grid POP (Connectivity=Triangles) → Noise POP (P 変位) → Render TOP
Connectivity を Triangles または Alternating Triangles に設定すると、平面三角形メッシュの基盤が得られる。後段で Noise POP / Math POP により位置属性 P を変位させると、地形やうねり面のような表現に発展させやすい。Alternating Triangles を使うと三角形の対角線方向が交互に切り替わり、変位時の偏りを軽減できる。
- Grid POP の
Connectivity= Triangles (または Alternating Triangles) Columns/Rowsでメッシュ解像度を設定Normal/Texture Coordinatesを point に設定し法線・UV を生成- 下流の Noise POP で
P属性に変位を加える - Render TOP で陰影付けして出力
関連オペレータ 🔗
類似機能OP 🔍
- Box POP — 立方体形状のポイントジオメトリを生成 (面ベース vs グリッドベース)
- Sphere POP — 球面状の点群を生成 (緯度経度分割ベース)
- Line POP — 1 次元のライン点列を生成 (Grid の 1 軸限定版に相当)
- Particle POP — 発生点群を時間発展させるパーティクル系プリミティブ生成
- Plane POP — 平面 1 枚を生成 (Connectivity 細分なしの単一面)
組み合わせ推奨OP 🔄
- Transform POP — 生成したグリッドを後段で平行移動・回転・スケールするための定番後処理
- Math POP —
P等の属性を算術変換してグリッドを歪ませる・正規化する - Noise POP — 格子点に Perlin / Simplex 等のノイズで変位を加える
- Attribute POP — Color / カスタム属性を点ごとに付与してから後段に渡す
- Convert POP — プリミティブタイプを別形式に変換 (例: Triangles → Quads)
- Copy POP — Grid 各点をテンプレートにして別ジオメトリをインスタンス配置
前処理・後処理POP 🎯
Info POP情報 📊
Grid 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: 生成された出力ポイント数 (Columns × Rows × Slices に依存)num_point_attribs: 出力 POP の point 属性数 (Normal / Texture Coordinates の有無で増減)num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数num_prims: 生成プリミティブ数 (Connectivity の選択により決定)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 点が一直線・一平面にしか並ばない
✅ Solution:
Plane XY/YZ/ZXの選択が意図した平面になっているか確認 (XY 平面なのに Z 方向の分布を期待していないか)Rows/Columns/Slicesのうち、想定軸が 1 のままになっていないか確認 (2 以上にしないと厚みが出ない)Line X/Y/Zのオン/オフが想定軸を無効化していないか確認
❌ Problem: プリミティブが出力されない / 点しか出てこない
✅ Solution:
Connectivityが None になっていないかを確認 (None は点のみ、面・線が必要なら別オプションを選択)- Triangles / Quadrilaterals を選んでいるのに
RowsまたはColumnsが 1 のままだとセルが作れないため、両方を 2 以上に - 下流の Render TOP がプリミティブを描画する設定 (Wireframe・Surface 等) になっているか確認
❌ Problem: 原点位置が意図と違う / グリッドが片側に寄る
✅ Solution:
Anchor U/Anchor V/Anchor Wを中央 (middle) に設定して原点中心に揃えるTranslateで意図せずオフセットがかかっていないか確認- 入力 POP を接続している場合、
Modify Boundsがオンだと入力のバウンディングに従って配置が変わる
❌ Problem: VRAM 使用量が増えてパフォーマンスが落ちる
✅ Solution:
Columns/Rows/Slicesの総積で点数が爆発していないか確認 (100×100×100 = 100 万点 等)- Common Page の
Delete Input Attributesで下流に不要な属性を残さず、必要なものだけ通す - Common Page の Free Extra GPU Memory パルスで未使用 VRAM を返却
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Grid POP
- Attribute – TouchDesigner 属性概念ページ
- Transform POP – グリッド後段で移動・回転・スケールに使用
- Noise POP – 格子点に変位を加える定番後処理

