
概要 📖 – 座標系の間で点の位置を変換
Projection POPは、点の座標を直交・球面・円柱・スクリーン空間などの座標系の間で変換する POPです。変換元と変換先の座標系をそれぞれ指定でき、スクリーン空間や正規化デバイス座標への投影にはカメラと視野角の設定を使います。
主な用途 🎯
- 点の位置を直交座標・球面座標・円柱座標の間で相互変換
- カメラを使ってワールド座標をスクリーン座標へ投影
- 変換元と変換先の座標系 (From / To Coordinate System) を独立に指定
- 角度の単位 (度・ラジアン・周回数・正規化) を切り替えて球面・円柱座標を扱う
- 近接面・遠方面の深度や視野角を指定して投影の奥行きを制御
データフロー 🔄
入力: 点属性を持つ POP
↓
From Coordinate System で元座標系を解釈 + To Coordinate System で変換先を選択 + カメラ・視野角で投影
↓
出力: 変換後の座標を持つジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Projection Page 📋
Attribute Class .attrclass 🧩
Attribute Class .attrclass 🧩
– Attribute Class (属性クラス) — この POP をポイント属性・頂点属性・プリミティブ属性のどれに対して動作させるかを指定するパラメータ
– 対象とする属性の種類に応じて変換の適用範囲が変わります
Group .group 🎯
Group .group 🎯
– Group (グループ) — 入力にグループが存在する場合、ここにグループ名を指定するとそのグループのみに変換を適用するパラメータ
– 空のときは入力全体が変換対象になります
Input Attribute Scope .inputattrscope 🔤
Input Attribute Scope .inputattrscope 🔤
– Input Attribute Scope (入力属性の範囲) — 選択した属性クラスの中で、変換対象とする入力属性や属性の成分を指定するパラメータ
– 特定の属性だけを変換対象に絞り込めます
From Coordinate System .fromcoordsys 📥
From Coordinate System (変換元の座標系) — 入力の点をどの座標系として解釈するかを選ぶメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Cartesian | .cartesian |
直交座標 (X / Y / Z) として解釈 |
| Spherical | .spherical |
球面座標 (半径・2 つの角度) として解釈 |
| Cylindrical | .cylindrical |
円柱座標 (半径・角度・高さ) として解釈 |
| Screen Space | .screenspace |
スクリーン空間 (画面上の座標) として解釈 |
| Normalized Device Coordinates | .ndc |
正規化デバイス座標 (NDC) として解釈 |
To Coordinate System .tocoordsys 📤
To Coordinate System (変換先の座標系) — 変換後の点をどの座標系で出力するかを選ぶメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Cartesian | .cartesian |
直交座標 (X / Y / Z) へ変換 |
| Spherical | .spherical |
球面座標 (半径・2 つの角度) へ変換 |
| Cylindrical | .cylindrical |
円柱座標 (半径・角度・高さ) へ変換 |
| Screen Space | .screenspace |
スクリーン空間 (画面上の座標) へ変換 |
| Normalized Device Coordinates | .ndc |
正規化デバイス座標 (NDC) へ変換 |
Angle Units .angunit 📐
Angle Units (角度の単位) — 変換元または変換先で座標に角度成分が含まれる場合に、その角度の単位を選ぶメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Degrees | .deg |
度 (0〜360) で角度を扱う |
| Radians | .rad |
ラジアン (0〜2π) で角度を扱う |
| Cycles | .cycle |
周回数 (1 周 = 1.0) で角度を扱う |
| Normalized | .norm |
正規化された値で角度を扱う |
Camera .camera 🎥
Camera .camera 🎥
– Camera (カメラ) — 投影に使うカメラコンポーネントを指定するパラメータ
– スクリーン空間や正規化デバイス座標への投影では、このカメラの視点と投影設定が基準になります
Aspect Correct UVs .aspectcorrectuv 🖼️
Aspect Correct UVs .aspectcorrectuv 🖼️
– Aspect Correct UVs (UV のアスペクト補正) — 投影の際に縦横比 (アスペクト比) を尊重するかどうかを切り替えるトグルパラメータ
– オンにすると画面の縦横比に合わせて歪みを補正します
Aspect Ratio .aspect 📏
Aspect Ratio (アスペクト比) — カメラ投影の縦横比を指定するパラメータ (横方向と縦方向の 2 成分)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Aspect Ratio (横) | .aspectx |
投影の横方向アスペクト比 |
| Aspect Ratio (縦) | .aspecty |
投影の縦方向アスペクト比 |
Horizontal FOV .fov 👁️
Horizontal FOV .fov 👁️
– Horizontal FOV (水平視野角) — 変換元または変換先がスクリーン空間や正規化デバイス座標のときに使う、横方向の視野角を指定するパラメータ
– 視野角が広いほど画角が広く、点の投影位置が変化します
Near Depth .depthnear 🔵
Near Depth .depthnear 🔵
– Near Depth (近接面の深度) — 投影で使う手前側のクリッピング面の深度を指定するパラメータ
– この距離より手前の点は投影範囲外として扱われます
Far Depth .depthfar 🔴
Far Depth .depthfar 🔴
– Far Depth (遠方面の深度) — 投影で使う奥側のクリッピング面の深度を指定するパラメータ
– この距離より奥の点は投影範囲外として扱われます
Output Attribute Scope .outputattrscope 📦
Output Attribute Scope (出力属性の範囲) — 変換結果を書き出す属性 (または属性の成分) をメニューから選ぶパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
位置属性 P へ出力 |
| N | .N |
法線属性 N へ出力 |
| Color | .Color |
色属性へ出力 |
| Color.rgb | .Color.rgb |
色属性の RGB 成分へ出力 |
| Tex | .Tex |
テクスチャ座標属性へ出力 |
| PointScale | .PointScale |
点の大きさ属性へ出力 |
| LineWidth | .LineWidth |
線幅属性へ出力 |
Override Automatic Attribute .overrideautoattr 🔁
Override Automatic Attribute .overrideautoattr 🔁
– Override Automatic Attribute (自動属性の上書き) — 入力やパラメータに応じて自動的に作られる属性の種類を、手動で上書きするかを切り替えるトグルパラメータ
– オンにすると、新しい属性のデータ型と成分数を自分で指定できます
Attribute Type .attrtype 🔢
Attribute Type (属性の型) — 出力属性のデータ型を選ぶメニューパラメータ (既定は float)
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
単精度浮動小数点 (既定) |
| double | .double |
倍精度浮動小数点 |
| int | .int |
符号付き整数 |
| uint | .uint |
符号なし整数 |
| Color | .color |
色 (単精度) |
| Color (double) | .dcolor |
色 (倍精度) |
| Direction | .dir |
方向ベクトル (単精度) |
| Direction (double) | .ddir |
方向ベクトル (倍精度) |
Components .attrnumcomps 🧮
Components (成分数) — 新しいカスタム属性の成分の数を選ぶメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
1 成分 (スカラー値) |
| 2 | .2 |
2 成分 (2 次元ベクトル) |
| 3 | .3 |
3 成分 (3 次元ベクトル) |
| 4 | .4 |
4 成分 (4 次元ベクトル) |
Default Value .attrdefaultval 🅰️
Default Value (既定値) — 計算できなかった場合に出力属性の各成分へ入れる既定値を指定するパラメータ (成分ごとに最大 4 つ)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default Value (成分 0) | .attrdefaultval0 |
属性の 1 番目の成分の既定値 |
| Default Value (成分 1) | .attrdefaultval1 |
属性の 2 番目の成分の既定値 |
| Default Value (成分 2) | .attrdefaultval2 |
属性の 3 番目の成分の既定値 |
| Default Value (成分 3) | .attrdefaultval3 |
属性の 4 番目の成分の既定値 |
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: 座標を画面へ投影 🎥
SOP to POP (point P) → Projection POP (From=cartesian, To=screenspace, Camera=cam1) → Lookup Texture POP
三次元のワールド座標を持つ点群を、指定したカメラの視点を通してスクリーン空間へ投影し、画面上のどこに各点が映るかを計算する基本フロー。投影結果をテクスチャ参照やスクリーン上の配置に利用します。
- 点の位置属性 P を持つ POP を Projection POP の入力に接続
- From Coordinate System を
cartesianに設定 - To Coordinate System を
screenspaceに設定 - Camera に投影基準とするカメラ (例
cam1) を指定 - Horizontal FOV とアスペクト比をカメラに合わせて調整
- 出力を Lookup Texture POP に渡しスクリーン座標でテクスチャを参照
Example 2: 直交座標を球面へ変換 🌐
Grid POP (point P) → Projection POP (From=cartesian, To=spherical, Angle Units=deg) → Transform POP
平面格子の点を直交座標から球面座標へ変換し、半径と角度のパラメータで点をドーム状・球状に再配置する。角度の単位を度に揃えて後段の変形と整合させる座標系変換のパターンです。
- 格子状の点を生成する POP を Projection POP の入力に接続
- From Coordinate System を
cartesianに設定 - To Coordinate System を
sphericalに設定 - Angle Units を
degに設定して角度を度で扱う - 出力を Transform POP に渡して位置を微調整
Example 3: NDC で画角内を抽出 🎯
POP with point P → Projection POP (To=ndc, Near Depth / Far Depth 指定) → Math POP
点を正規化デバイス座標 (NDC) へ投影し、近接面・遠方面の深度範囲を指定して、カメラの画角と奥行きの範囲内にある点だけを後段で抽出・処理しやすくするフローです。
- 点の位置属性 P を持つ POP を Projection POP の入力に接続
- To Coordinate System を
ndcに設定 - Camera に基準カメラを指定して投影
- Near Depth と Far Depth で奥行きのクリッピング範囲を指定
- 出力を Math POP に渡し NDC 値を判定・正規化
関連オペレータ 🔗
類似機能OP 🔍
- Transform POP — 点の位置を平行移動・回転・拡大縮小する POP。座標系変換ではなく行列変形が主目的
- Convert POP — ジオメトリの表現形式を変換する POP。座標系ではなくプリミティブ種別を変換
- Normalize POP — 属性値を一定範囲に正規化する POP。投影後の値整形に併用
組み合わせ推奨OP 🔄
- Camera COMP — 投影の基準となる視点・視野角を提供するカメラ。Projection の Camera パラメータで参照
- Transform POP — 投影前にワールド座標を平行移動・回転させて視点に合わせる
- Math POP — 投影後の座標値をスケール・オフセットして後段に渡す
- GLSL POP — 投影結果の座標をカスタムシェーダで参照・加工
前処理・後処理POP 🎯
- 前処理: Transform POP、Convert POP、Attribute POP、CHOP to POP
- 後処理: Math POP、Normalize POP、GLSL POP、Merge POP
Info POP情報 📊
Projection 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_point_attribs: 出力ジオメトリのポイント属性数 (変換結果が反映される)num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数num_prims: 出力ジオメトリのプリミティブ数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: スクリーン投影しても点が画面の正しい位置に出ない
✅ Solution:
- Camera パラメータに投影基準とするカメラが正しく指定されているか確認
- Horizontal FOV とアスペクト比 (Aspect Ratio) が実際のカメラ設定と一致しているか確認
- Aspect Correct UVs をオンにして画面の縦横比に合わせた補正を有効化
❌ Problem: 球面・円柱座標への変換で角度がずれる
✅ Solution:
- Angle Units が変換前後で意図した単位 (度 / ラジアン / 周回数) になっているか確認
- From Coordinate System と To Coordinate System の組み合わせが目的の変換方向になっているか確認
- 前段で Transform POP を使い原点や向きを整えてから変換
❌ Problem: 投影範囲外の点が消えたり想定外の値になる
✅ Solution:
- Near Depth と Far Depth の深度範囲が対象の点群を含むよう設定されているか確認
- 正規化デバイス座標では値が -1〜1 の範囲に正規化される仕様であることを理解する
- 後段に Math POP を置き出力値をスケール・クランプして整える
❌ Problem: 出力属性が想定した型・成分数にならない
✅ Solution:
- Override Automatic Attribute をオンにして Attribute Type と Components を手動指定
- Output Attribute Scope が変換結果を書き出す属性 (例
P) に設定されているか確認 - 計算できない成分には Default Value で既定値が入る仕様を考慮する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Projection POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- Transform POP (位置の変形)
- Camera COMP (投影に使うカメラ)

