Projection POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Projection POP の座標系変換機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 座標系の間で点の位置を変換

Projection POPは、点の座標を直交・球面・円柱・スクリーン空間などの座標系の間で変換する POPです。変換元と変換先の座標系をそれぞれ指定でき、スクリーン空間や正規化デバイス座標への投影にはカメラと視野角の設定を使います。

主な用途 🎯

  • 点の位置を直交座標・球面座標・円柱座標の間で相互変換
  • カメラを使ってワールド座標をスクリーン座標へ投影
  • 変換元と変換先の座標系 (From / To Coordinate System) を独立に指定
  • 角度の単位 (度・ラジアン・周回数・正規化) を切り替えて球面・円柱座標を扱う
  • 近接面・遠方面の深度や視野角を指定して投影の奥行きを制御

データフロー 🔄

入力: 点属性を持つ POP

From Coordinate System で元座標系を解釈 + To Coordinate System で変換先を選択 + カメラ・視野角で投影

出力: 変換後の座標を持つジオメトリ

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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

三次元のワールド座標を持つ点群を、指定したカメラの視点を通してスクリーン空間へ投影し、画面上のどこに各点が映るかを計算する基本フロー。投影結果をテクスチャ参照やスクリーン上の配置に利用します。

  1. 点の位置属性 P を持つ POP を Projection POP の入力に接続
  2. From Coordinate System を cartesian に設定
  3. To Coordinate System を screenspace に設定
  4. Camera に投影基準とするカメラ (例 cam1) を指定
  5. Horizontal FOV とアスペクト比をカメラに合わせて調整
  6. 出力を Lookup Texture POP に渡しスクリーン座標でテクスチャを参照

Example 2: 直交座標を球面へ変換 🌐

Grid POP (point P) → Projection POP (From=cartesian, To=spherical, Angle Units=deg) → Transform POP

平面格子の点を直交座標から球面座標へ変換し、半径と角度のパラメータで点をドーム状・球状に再配置する。角度の単位を度に揃えて後段の変形と整合させる座標系変換のパターンです。

  1. 格子状の点を生成する POP を Projection POP の入力に接続
  2. From Coordinate System を cartesian に設定
  3. To Coordinate System を spherical に設定
  4. Angle Units を deg に設定して角度を度で扱う
  5. 出力を Transform POP に渡して位置を微調整

Example 3: NDC で画角内を抽出 🎯

POP with point P → Projection POP (To=ndc, Near Depth / Far Depth 指定) → Math POP

点を正規化デバイス座標 (NDC) へ投影し、近接面・遠方面の深度範囲を指定して、カメラの画角と奥行きの範囲内にある点だけを後段で抽出・処理しやすくするフローです。

  1. 点の位置属性 P を持つ POP を Projection POP の入力に接続
  2. To Coordinate System を ndc に設定
  3. Camera に基準カメラを指定して投影
  4. Near Depth と Far Depth で奥行きのクリッピング範囲を指定
  5. 出力を 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 🎯


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 で既定値が入る仕様を考慮する

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました