
概要 📖 – 球面の点群を生成
Sphere POPは、測地・グリッド・四面体・共有極の 4 方式から選んで球面の点群とプリミティブを出力する POPです。Type を切り替えると点の分布規則 (測地球は三角形の均一分割、Grid は緯度経度マッパー、Tetrahedron は最小頂点) が変わります。Radius / Frequency / Columns / Rows で密度を、Anchor / Translate / Rotate / Uniform Scale で配置を、Normal / Texture Coordinates / Texture Method で属性出力を細かく制御できます。
主な用途 🎯
- 球形ジオメトリのプリミティブ生成 (パーティクル発生源・装飾・参照)
- 測地球による均一分布点群の作成 (サンプリング・GLSL 検証用)
- 緯度経度グリッド球で UV テクスチャを貼った球体の生成
- 魚眼・全天球の点位置リファレンスとしての半球・全球生成
- 後段の Copy POP / Particle POP に渡す発生点ソースの作成
データフロー 🔄
入力: (任意の bounds 用 POP)
↓
Sphere POP(Type で生成方式を選び、Radius / Frequency / Rows / Columns で密度を制御)
↓
出力: 点群+指定プリミティブを持つ POP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Sphere Page 📋
Type .type 🎛️
球の生成方式を決定する基本メニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Geodesic | .geodesic |
正二十面体ベースの測地球。三角形を細分化して均一分布の点群を生成 |
| Grid | .grid |
緯度経度方向の Rows × Columns で球面をグリッド分割 (UV マッピング向き) |
| Tetrahedron | .tetrahedron |
正四面体ベースの最小頂点球 (低密度プレースホルダー) |
| Shared Points at Poles | .sharedpoles |
両極で点を共有する緯度経度球。Grid のシーム重複を回避 |
Geodesic Connectivity .geodesictype 🔗
測地球の点をどのプリミティブで接続するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
接続を行わず点のみを出力 |
| Point Primitives | .point |
各点を独立した Point プリミティブとして出力 |
| Triangles | .triangles |
細分化された三角形プリミティブとして接続 |
Grid Connectivity .surftype 🔗
緯度経度グリッド球の点接続方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
接続を行わず点のみを出力 |
| Point Primitives | .point |
各点を独立した Point プリミティブとして出力 |
| Rows | .rows |
行方向のラインだけで接続 |
| Columns | .cols |
列方向のラインだけで接続 |
| Rows and Columns | .rowcol |
行と列の両方をラインで接続 (ワイヤー球) |
| Triangles | .triangles |
セルを 2 つの三角形に分割して出力 |
| Alternating Triangles | .alttriangles |
セルごとに対角線方向を交互に切替えて偏りを軽減 |
| Quadrilaterals | .quads |
セルを 4 頂点の四辺形プリミティブとして出力 |
Line Type .linetype 📏
Rows / Columns / Rows and Columns 接続時のライン形式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Lines | .lines |
隣接 2 点ごとの独立 Line プリミティブとして出力 |
Orientation .orient 🧭
球の極軸 (両極を結ぶ軸) を X / Y / Z のどれに揃えるか
| 項目 | 内部名 | 説明 |
|---|---|---|
| X Axis | .x |
両極を X 軸 (左右方向) に揃える |
| Y Axis | .y |
両極を Y 軸 (上下方向) に揃える (一般的な初期値) |
| Z Axis | .z |
両極を Z 軸 (奥行き方向) に揃える |
サイズと入力 bounds 📐
Modify Bounds .modifybounds 🧭
– Modify Bounds (バウンディング上書き) — 入力 POP が接続されている場合にのみ有効
– オン時は入力 POP のバウンディングボックスを基準として、下記の Radius / Translate / Rotate / Scale で更に球の形状を変形させる
Radius .rad 📏
– Radius (半径) — 球の XYZ 方向の半径
– 内部名 radx / rady / radz の 3 成分で軸ごとに指定でき、楕円球も生成可
測地球の分割 🔢
Frequency .freq 🔢
– Frequency (細分化頻度) — 測地球の三角形をどれだけ細かく分割するか
– 値が大きいほど点数とプリミティブ数が増え、滑らかな球になる (Type=Geodesic のときに有効)
Fuse .fuse 🧷
– Fuse (頂点の融合) — 細分化で発生した重複頂点をまとめて 1 点に縮約するトグル
– オンにするとシームが消え、後段の法線計算やスムーズシェーディングが綺麗に通る
Fuse Technique .fusetechnique ⚙️
– Fuse Technique (融合アルゴリズム) — 重複点をどの方式でマッチさせるかを選択
– 候補: Brute Force (全探索) / Shared Memory (共有メモリ最適化) / Spatial Grid (空間グリッド)
緯度経度の分割数 🔢
Columns .cols 📊
– Columns (経度方向の列数) — 経度方向 (周回方向) に並べる点の列数
– Type が Grid / Shared Points at Poles のときに有効
Rows .rows 📊
– Rows (緯度方向の行数) — 極から極へ並べる点の行数 (緯度方向の分割数)
– 値を増やすほど球が滑らかになる
アンカー位置 📍
Anchor U .anchoru ↔️
– Anchor U (U 方向アンカー) — 左端・中央・右端のいずれを原点 0 に揃えるかを指定
– 球を原点基準で配置する際の整列基準として使用
Anchor V .anchorv ↕️
– Anchor V (V 方向アンカー) — 下端・中央・上端のいずれを原点 0 に揃えるかを指定
Anchor W .anchorw 🔃
– Anchor W (W 方向アンカー) — 後ろ端・中央・前端のいずれを原点 0 に揃えるかを指定 (奥行き方向)
トランスフォーム 🧮
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) を生成するかと、属性クラスの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
法線属性は生成しない |
Texture Coordinates .texture 🗺️
UV テクスチャ座標属性の生成設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
UV 座標属性は生成しない |
Texture Method .texmethod 🗺️
UV 座標を球面にどう貼り付けるかのマッピング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Equirectangular Inside (Spherical Polar) | .equirectangularin |
正距円筒図法 (内側貼り)。全天球パノラマを内側から見る形で UV 展開 |
| Equirectangular Outside (Spherical Polar) | .equirectangularout |
正距円筒図法 (外側貼り)。地球儀のように外側から UV を貼る |
| Equidistant Azimuth (Fish Eye) | .equiazimuth |
等距離方位図法 (魚眼)。中心からの角距離に比例した UV 配置 |
魚眼マッピング設定 🐟
FOV Angle .fov 📐
– FOV Angle (視野角) — Texture Method が Equidistant Azimuth (Fish Eye) のときに有効
– 魚眼テクスチャマッピングで使う視野角 (度) を指定。180 で半球、360 で全球の範囲をカバー
Shared Poles Connectivity .sharedpolessurftype 🔗
共有極球 (Shared Points at Poles) の接続形状
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
接続を行わず点のみを出力 |
| Point Primitives | .point |
各点を独立した Point プリミティブとして出力 |
| Rows | .rows |
行方向のラインだけで接続 |
| Columns | .cols |
列方向のラインだけで接続 |
| Rows and Columns | .rowcol |
行と列の両方をラインで接続 |
| Triangles | .triangles |
セルを 2 つの三角形に分割して出力 |
| Alternating Triangles | .alttriangles |
セルごとに対角線方向を交互に切替えて偏りを軽減 |
| Quadrilaterals and Triangles | .quadsandtriangles |
中央セルは四辺形、極周辺は三角形で構成 (極の縮退を吸収) |
Detail Page 📑
U 方向 (経度) の閉じ・範囲 🌐
U Closed .closedu 🔒
– U Closed (U 方向を閉じる) — 経度方向 (U) のジオメトリを閉じるトグル
– オンにすると 360 度をぐるりと閉じた球面、オフにすると経度方向にスリットの入った開いた形状になる
Angle U .angleu 📐
– Angle U (U 方向の角度範囲) — 球が U 方向 (経度) にカバーする開始角と終了角
– 内部名 beginangleu / endangleu の 2 成分で半球やオレンジの皮のような部分球を作れる
Tex Coords Range U .texrangeu 🗺️
Angle U が部分範囲のときの UV 座標の張り方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Respect Angles | .partial |
Angle U の実角度に対応した部分 UV を出力 (0-1 のうち実際の角度比だけを使用) |
| 0 to 1 | .full |
部分範囲でも UV を 0-1 に正規化して全幅へ展開 |
V 方向 (緯度) の範囲 🌐
Angle V .anglev 📐
– Angle V (V 方向の角度範囲) — 球が V 方向 (緯度) にカバーする開始角と終了角
– 内部名 beginanglev / endanglev の 2 成分で上半球・下半球・赤道帯などを作れる
Tex Coords Range V .texrangev 🗺️
Angle V が部分範囲のときの UV 座標の張り方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Respect Angles | .partial |
Angle V の実角度に対応した部分 UV を出力 |
| 0 to 1 | .full |
部分範囲でも UV を 0-1 に正規化して全高へ展開 |
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: 球状パーティクル発生源 ✨
Sphere POP (Type=Geodesic, Connectivity=None) → Particle POP → Render TOP
Type を Geodesic、Geodesic Connectivity を None に設定して、均一分布の点群だけを取り出す基本フロー。測地球は正二十面体を細分化する性質上、緯度経度グリッドと違って極で点が密集しないため、パーティクルやインスタンス配置の発生点ソースとして偏りなく使えるのが強み。Frequency で密度を、Radius で発生範囲を制御する。
- Sphere POP の
TypeをGeodesicに設定 Geodesic Connectivity= None で点群だけを取り出すFrequencyで細分化レベル (=点数) を調整Radiusで発生範囲のサイズを指定- Particle POP の発生点入力に接続し、Render TOP で可視化
Example 2: 全天球パノラマ用 UV 球 🌐
Sphere POP (Type=Grid, Texture Method=Equirectangular Inside) → PBR MAT (パノラマ画像) → Render TOP
Type を Grid、Texture Method を Equirectangular Inside (Spherical Polar) に設定すると、内側から見る球面に正距円筒図法の UV が貼られ、360 度パノラマや HDRI 環境マップを覆い被せた球内空間を作れる。VR / プロジェクションマッピング用の全周映像表示に頻用される。Rows / Columns を増やすほど球が滑らかになり、テクスチャの歪みも目立たなくなる。
- Sphere POP の
TypeをGridに設定 Texture Coordinatesを point に設定し UV 属性を生成Texture MethodをEquirectangular Insideに変更Rows/Columnsを増やして滑らかさを確保- PBR MAT にパノラマ画像をアサインし、Render TOP に出力
Example 3: 半球ドーム形状の生成 🏛️
Sphere POP (Type=Grid, Angle V=0〜90) → Transform POP → Render TOP
Detail Page の Angle V で V 方向 (緯度) の範囲を 0 度から 90 度に絞ると上半球ドームが、-90 度から 0 度にすると下半球が得られる。プラネタリウム・スカイドーム・建築モチーフなど「半球で十分」な場面で、フル球を生成するより頂点数を半減でき軽量化できる。Tex Coords Range V を Respect Angles にしておくと UV も実角度通りに張られ、テクスチャが歪まない。
- Sphere POP の
TypeをGridに設定 Angle Vのbeginanglev/endanglevで 0〜90 度に絞るTex Coords Range VをRespect Anglesに設定Rows/Columnsでドームの滑らかさを調整- Transform POP で配置を整え、Render TOP でマテリアル付きでレンダリング
関連オペレータ 🔗
類似機能OP 🔍
- Box POP — 立方体形状の点群を生成 (球と並ぶ基本プリミティブ)
- Grid POP — 平面・立体格子点群を生成 (球と違い直交格子)
- Torus POP — ドーナツ形状の点群を生成 (球と同じ回転体系プリミティブ)
- Tube POP — 円筒・円錐形状の点群を生成
- Circle POP — 2D 円・楕円の点群を生成 (球の 1 断面に相当)
組み合わせ推奨OP 🔄
- Transform POP — 生成した球を後段で平行移動・回転・スケールするための定番後処理
- Math POP —
P等の属性を算術変換して球を歪ませる・正規化する - Noise POP — 球面の点に Perlin / Simplex 等のノイズで変位を加える (惑星表面表現等)
- Particle POP — Sphere の点群を発生源として時間発展させる
- Copy POP — 球面各点をテンプレートにして別ジオメトリをインスタンス配置
- Attribute POP — Color / カスタム属性を点ごとに付与してから後段に渡す
前処理・後処理POP 🎯
Info POP情報 📊
Sphere 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: 生成された出力ポイント数 (Type / Frequency / Rows / Columns に依存)num_point_attribs: 出力 POP の point 属性数 (Normal / Texture Coordinates の有無で増減)num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数num_prims: 生成プリミティブ数 (Connectivity の選択により決定)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 極で点が密集する / テクスチャが伸びる
✅ Solution:
TypeをGeodesicに切替えると、極を持たない均一分布球になり密集が解消- Grid 系を使い続ける場合は
TypeをShared Points at Polesにして両極で点を共有し、シーム重複を回避 Texture MethodをEquidistant Azimuth (Fish Eye)に変更すると、極の伸びとは別の歪み方になる (用途に応じて選択)
❌ Problem: 球がジャギーで滑らかにならない
✅ Solution:
- Type=Geodesic の場合は
Frequencyを上げて細分化レベルを増やす - Type=Grid の場合は
Rows/Columnsを増やして緯度経度の分割数を増やす Fuseをオンにして測地球の重複頂点を融合させ、後段の法線スムージングを通す
❌ Problem: 半球・部分球にしたいのに全球が出る
✅ Solution:
- Detail Page の
Angle Vのbeginanglev/endanglevで緯度範囲を絞る (上半球なら 0〜90) Angle Uのbeginangleu/endangleuで経度範囲を絞る (オレンジの皮状の部分球)- UV の歪みを避けたい場合は
Tex Coords Range U/Tex Coords Range VをRespect Anglesに設定
❌ Problem: VRAM 使用量が増えてパフォーマンスが落ちる
✅ Solution:
FrequencyまたはRows/Columnsで点数が過剰になっていないか確認 (Frequency=6 で約 6 万点まで増える)- 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公式ドキュメント – Sphere POP
- Attribute – TouchDesigner 属性概念ページ
- Transform POP – 球の後段で移動・回転・スケールに使用
- Noise POP – 球面に変位を加える定番後処理

