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

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

POP to TOP が点群の点をテクスチャのピクセルに変換する図

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

概要 📖 – 点群を画像に変換

POP to TOPは、点群 (POP) の各点を画像 (TOP) のピクセルに変換し、位置や属性を GPU パイプラインへ受け渡す橋渡し TOPです。デフォルトでは各点の位置属性 P32-bit float のピクセルとして書き出すため、点群の座標精度がそのまま保持されます。画像のアルファは点が存在するピクセルでは 1、点を表さない空きピクセルでは 0 になり、これが「有効ピクセル」を示す印として機能します。GPU インスタンシングのソースや、シェーダから点群属性をサンプリングする用途で広く使われます。

主な用途 🎯

  • 点群の座標をテクスチャ化 (各点の位置 P を 32 ビット浮動小数のピクセルに格納)
  • GPU インスタンシング用の位置データ供給 (1 点 = 1 ピクセルとしてシェーダから参照)
  • 点群属性のテクスチャパッキング (色や法線などカスタム属性を画像に書き出し)
  • 点群の有効・無効をアルファで判定 (点が存在するピクセルはアルファ 1、空きは 0)
  • 3D テクスチャへの点群展開 (行列構造を持つ点群を立体テクスチャに変換)

データフロー 🔄

入力: 点群データ (位置・属性を持つ点の集合)

抽出範囲 (点・頂点・プリミティブ) と変換モードを決定

レイアウトでピクセル配置を決定 (正方形 / 折り返し / 切り詰め / 点群の行列構造)

出力: テクスチャ画像 (デフォルト 32 ビット浮動小数、アルファに有効ピクセル情報)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

POP To Page 📁

POP .pop 🔗

ソースとなる点群の参照パス:

  • POP: POP (点群ソース) — 変換元となる点群オペレータのパスを指定します。同階層なら名前のみ、別階層なら相対パスまたは絶対パスで参照します。

Mode .rgbamode 🎛️

Mode (変換モード) — 点群の何をピクセルに書き出すかを決めるメニュー

項目 内部名 説明
Position and Active .pactive 各点の位置 P を RGB に書き出し、アルファには有効ピクセル情報 (点があれば 1、なければ 0) を入れます。
Custom .custom Cd など任意のカスタム属性をピクセルに書き出します。書き出す属性は下の Attributes Scope で指定します。

Extract .extract 🎯

Extract (抽出レベル) — 属性をどの粒度から取り出すかを決めるメニュー

項目 内部名 説明
Point .point 点 (Point) レベルの属性を抽出します。位置 P など一般的な点群属性はここに入ります。
Vertex .vertex 頂点 (Vertex) レベルの属性を抽出します。
Primitive .primitive プリミティブ (Primitive) レベルの属性を抽出します。

Attributes Scope .attribscope 📝

Custom モードで書き出す対象属性の指定:

  • Attributes Scope: Attributes Scope (対象属性) — Custom モードで書き出す属性名を指定します。色 Cd や法線 N など、どの属性をピクセルに変換するかをここで絞り込みます。

Layout .layout 🧩

Layout (配置方式) — 点をピクセルとして並べる方法を決めるメニュー

項目 内部名 説明
Fit to Square .square 全ての点が収まる最小の正方形テクスチャに自動配置します。空き行を作らず連続して詰めるため効率的です。
Wrapped .wrapped 幅を超えた分を次の行へ折り返して配置します。
Cropped .cropped テクスチャ幅を超えた余分な点は切り詰めて捨てます。
POP Dimension .popdim 点群が行と列の構造を持つ場合、その構造から画像の幅と高さを決めます。3 次元以上の構造があれば 3D テクスチャを生成します。

Dimension .dim 📐

Dimension (次元) — 2 次元と 3 次元のどちらの画像を作るかを決めるメニュー

項目 内部名 説明
2D .2d 通常の 2 次元テクスチャを作成します。
3D .3d 立体的に積み重ねた 3D テクスチャ (テクスチャ配列) を作成します。

Depth Type .depthtype 🧱

Depth Type (奥行き形式) — 3D 出力時のテクスチャ形式を決めるメニュー

項目 内部名 説明
2D Texture Array .texture2darray 複数の 2D 画像を層状に重ねたテクスチャ配列形式です。
3D Texture .texture3d ボリュームとして補間される 3D テクスチャ形式です。

Depth .depth 📏

3D テクスチャのスライス数 (Dimension = 3D の時に有効):

  • Depth: Depth (奥行き枚数) — Dimension が 3D のとき、何枚のスライスで立体テクスチャを構成するかを指定します。

Extra Pixel Values .rgba 🎨

点を表さない空きピクセルに埋める RGBA 値:

  • Red: rgba1 (赤) — 点を表さない余りピクセルの R 値。
  • Green: rgba2 (緑) — 余りピクセルの G 値。
  • Blue: rgba3 (青) — 余りピクセルの B 値。
  • Alpha: rgba4 (アルファ) — 余りピクセルの A 値。負値を埋めたい場合は Pixel Format を 32-bit float 系にします。

Common Page 🔧

Output Resolution .outputresolution 🖼️

出力解像度の決定方式

項目 内部名 説明
Use Input .useinput 入力 TOP の解像度をそのまま継承
Eighth .eighth 入力解像度の 1/8
Quarter .quarter 入力解像度の 1/4
Half .half 入力解像度の 1/2
2X .2x 入力解像度の 2 倍
4X .4x 入力解像度の 4 倍
8X .8x 入力解像度の 8 倍
Fit Resolution .fit 指定解像度に縦横比を保持して収める
Limit Resolution .limit 指定解像度を上限としてクランプ
Custom Resolution .custom Resolution パラメータで任意指定

Resolution .resolution 📐

カスタム解像度の幅・高さ指定 (Output Resolution = Custom 等の時のみ有効):

  • Resolution W: 出力幅 (ピクセル単位)。Output ResolutionCustom Resolution / Fit Resolution / Limit Resolution の時に有効
  • Resolution H: 出力高 (ピクセル単位)。同上

Resolution Menu .resmenu 📋

よく使う解像度プリセットのドロップダウン:

  • Resolution Menu: NTSC / PAL / HDTV 720 / HDTV 1080 / 4K UHD 等のプリセットから選択すると Resolution W / Resolution H が自動セットされる

Use Global Res Multiplier .resmult 🔢

プロジェクト全体の解像度倍率の適用:

  • Use Global Res Multiplier: Project Settings の Global Resolution Multiplier をこの TOP に適用するかどうか。プロトタイプを低解像度で動かしつつ最終出力で一括フル解像度化する運用に便利

Output Aspect .outputaspect 📏

出力アスペクト比の決定方式

項目 内部名 説明
Use Input .useinput 入力 TOP のアスペクトを継承 (伝播事故の元、非推奨)
Resolution .resolution 解像度から自動導出 (推奨デフォルト)
Custom Aspect .custom Aspect1 / Aspect2 で手動指定

Aspect .aspect 📐

カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):

  • Aspect1: 横方向アスペクト値 (Output Aspect = Custom Aspect の時のみ有効)
  • Aspect2: 縦方向アスペクト値 (同上)

Input Smoothness .inputfiltertype 🎚️

入力テクスチャのサンプリング方式

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (ピクセルアート向け、ジャギーが残る)
Interpolate Pixels .linear バイリニア補間 (滑らか、デフォルト)
Mipmap Pixels .mipmap ミップマップ補間 (縮小時のモアレ抑制、わずかにコスト高)

Fill Viewer .fillmode 🖥️

ビューア内でのテクスチャの収め方

項目 内部名 説明
Use Input .useinput 入力 TOP の Fill Viewer 設定を継承
Fill .fill ビューアいっぱいに引き伸ばす (アスペクト無視)
Fit Horizontal .width 横幅に合わせて収める (上下に余白)
Fit Vertical .height 縦幅に合わせて収める (左右に余白)
Fit Best .best アスペクト保持で内側に収まる最大サイズ
Fit Outside .outside アスペクト保持で外側まで覆う最小サイズ (はみ出しあり)
Native Resolution .nativeres テクスチャのネイティブ解像度のまま等倍表示

Viewer Smoothness .filtertype 🎛️

ビューア表示時のサンプリング方式

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (ピクセル単位での確認向け)
Interpolate Pixels .linear バイリニア補間 (滑らか、デフォルト)
Mipmap Pixels .mipmap ミップマップ補間 (縮小ビュー時のモアレ抑制)

Passes .npasses 🔁

オペレータの反復実行回数:

  • Passes: TOP の処理を何パス繰り返すかの整数値。前回パスの結果が次回パスの入力になる。POP to TOP では通常 1 で十分

Channel Mask .chanmask 🎨

処理対象のチャンネルマスク (R/G/B/A 個別トグル):

  • Channel Mask: R / G / B / A 各チャンネルのオン/オフトグル。オフのチャンネルは TOP の処理を受けず入力値がそのまま通過

Pixel Format .format 🎨

出力テクスチャのピクセルフォーマット (POP to TOP では 32-bit float 系がデフォルトかつ推奨)

項目 内部名 説明
Use Input .useinput 入力 TOP のフォーマットを継承
8-bit fixed (RGBA) .rgba8fixed 標準 8 ビット固定小数 RGBA (座標が 0-1 範囲に収まるとき)
sRGB 8-bit fixed (RGBA) .srgba8fixed sRGB ガンマ補正済 8 ビット RGBA
16-bit float (RGBA) .rgba16float 16 ビット浮動小数 RGBA (HDR・中間処理向け)
32-bit float (RGBA) .rgba32float 32 ビット浮動小数 RGBA (点群座標精度をそのまま保持する デフォルト推奨)
10-bit RGB with 2-bit Alpha .rgb10a2fixed 10-10-10-2 ビット固定小数 (バンディング抑制)
16-bit fixed (RGBA) .rgba16fixed 16 ビット固定小数 RGBA
11-bit float (RGB) .rgb11float 11-11-10 ビット浮動小数 RGB (アルファなし、HDR 軽量)
16-bit float (RGB) .rgb16float 16 ビット浮動小数 RGB (アルファなし)
32-bit float (RGB) .rgb32float 32 ビット浮動小数 RGB (アルファなし)
8-bit fixed (Mono) .mono8fixed 8 ビット固定小数モノクロ
16-bit fixed (Mono) .mono16fixed 16 ビット固定小数モノクロ
16-bit float (Mono) .mono16float 16 ビット浮動小数モノクロ
32-bit float (Mono) .mono32float 32 ビット浮動小数モノクロ
8-bit fixed (RG) .rg8fixed 8 ビット固定小数 R+G 2 チャンネル
16-bit fixed (RG) .rg16fixed 16 ビット固定小数 R+G
16-bit float (RG) .rg16float 16 ビット浮動小数 R+G
32-bit float (RG) .rg32float 32 ビット浮動小数 R+G
8-bit fixed (A) .a8fixed 8 ビット固定小数アルファ単体
16-bit fixed (A) .a16fixed 16 ビット固定小数アルファ単体
16-bit float (A) .a16float 16 ビット浮動小数アルファ単体
32-bit float (A) .a32float 32 ビット浮動小数アルファ単体
8-bit fixed (Mono+Alpha) .monoalpha8fixed 8 ビット固定小数モノクロ+アルファ
16-bit fixed (Mono+Alpha) .monoalpha16fixed 16 ビット固定小数モノクロ+アルファ
16-bit float (Mono+Alpha) .monoalpha16float 16 ビット浮動小数モノクロ+アルファ
32-bit float (Mono+Alpha) .monoalpha32float 32 ビット浮動小数モノクロ+アルファ

実践アイデア 💡

Example 1: 点群の位置を画像化 ☁️

Grid POP / Noise POP → POP to TOP (Mode=Position and Active) → GLSL TOP / Instancing

点群の各点の座標をテクスチャに書き出し、GPU 側でインスタンシングやシェーダのソースとして使う基本フローです。Mode を Position and Active にすると位置がそのまま 32 ビット浮動小数のピクセルになり、座標精度を落とさず GPU へ受け渡せます。

  1. Grid POPNoise POP で対象となる点群を準備
  2. POP to TOP を配置し POP パラメータにソース点群のパスを指定
  3. ModePosition and Active に設定 (位置が RGB、有効ピクセルがアルファ)
  4. Pixel Format32-bit float 系になっていることを確認して座標精度を保持
  5. 下流の GLSL TOP や Geometry COMP のインスタンシングで位置ソースとして参照

Example 2: 色属性をパッキング 🎨

Texture Map POP → POP to TOP (Mode=Custom, Attributes Scope=Cd) → Composite TOP

点群が持つ色 Cd や法線などのカスタム属性を画像に書き出すフローです。Mode を Custom にして Attributes Scope で書き出す属性を指定すると、点ごとの属性値がピクセルに格納され、後段で他のテクスチャと合成したりルックアップ用データとして利用できます。

  1. 色や法線などの属性を持つ点群を Texture Map POP 等で準備
  2. POP to TOPModeCustom に切り替え
  3. Attributes Scope に書き出したい属性 (例: 色 Cd) を指定
  4. 下流の Composite TOP で他のレイヤーと重ねたり、ルックアップ用テクスチャとして利用

Example 3: 行列構造を3D化 🧱

行列構造を持つ POP → POP to TOP (Layout=POP Dimension, Dimension=3D) → 3D テクスチャ参照

点が行・列・奥行きの構造を持つ点群を、その構造のまま立体テクスチャに展開するフローです。Layout を POP Dimension にすると点群の行列構造から画像の幅と高さが決まり、3 次元以上の構造があれば自動的に 3D テクスチャが生成されます。ボリュームデータの GPU 処理に向いた配置です。

  1. 行・列 (必要なら奥行き) の構造を持つ点群を用意
  2. POP to TOPLayoutPOP Dimension に設定
  3. Dimension3D にして立体テクスチャを生成 (奥行き枚数は Depth で指定)
  4. Depth Type で 2D テクスチャ配列か 3D テクスチャ形式かを選択
  5. 下流のシェーダや GLSL TOP で 3D テクスチャとしてサンプリング

関連オペレータ 🔗

類似機能OP 🔍

  • CHOP to TOP — チャンネルデータを画像に変換する同系統の TOP 変換オペレータ
  • POP to CHOP — 点群をチャンネルデータに変換する逆向きの取り出し
  • POP to SOP — 点群をジオメトリに変換する別系統の出力
  • POP to DAT — 点群をテーブルデータに変換する別系統の出力

組み合わせ推奨OP 🔄

  • GLSL TOP — POP to TOP の出力をシェーダのテクスチャソースとして参照
  • Texture Map POP — 前段で点群に色などのテクスチャ属性を付与してから変換
  • Composite TOP — 書き出した属性テクスチャを他のレイヤーと合成
  • Feedback TOP — 点群テクスチャを 1 フレームずつ蓄積して履歴を作る

前処理・後処理TOP 🎯


Info情報 📊

TOP は Info CHOP / Info DAT に接続することで解像度・ピクセルフォーマット・クック情報を取得できます。POP to TOP の場合、出力テクスチャのサイズと点群の点数・Layout 設定の関係をデバッグするのに便利です。

TOP固有情報 🖼️

  • resx: TOP の出力解像度 X (ピクセル単位)
  • resy: TOP の出力解像度 Y (ピクセル単位)
  • aspectx: アスペクト比 X
  • aspecty: アスペクト比 Y
  • depth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)
  • gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

テクスチャ情報 🖼️

  • resx: 出力テクスチャの横幅 (ピクセル単位)。Layout と点数の関係を確認
  • resy: 出力テクスチャの縦幅 (ピクセル単位)。Fit to Square や POP Dimension の効果を確認
  • aspectx: アスペクト比の横成分
  • aspecty: アスペクト比の縦成分
  • depth: ピクセルフォーマットのビット深度
  • gpu_memory_used: この TOP が消費している GPU メモリ量 (バイト)

クック情報 ⚙️

  • total_cooks: ノードがクックされた累積回数
  • cook_time: 直近フレームのクック時間 (ミリ秒)
  • cook_frame: 直近にクックされたフレーム番号
  • cooked_this_frame: 現フレームでクック済かどうか (0/1)

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 画像が真っ黒で点が見えない
✅ Solution:

  • POP パラメータに正しい点群のパスが指定されているか確認
  • Pixel Format32-bit float 系のとき、座標値が大きいとビューア上では暗く見える。Null TOP 経由で値を確認するか正規化を検討
  • ModeCustom の場合、Attributes Scope に存在する属性名が指定されているか確認

❌ Problem: 点の数より画像が小さく一部が欠ける
✅ Solution:

  • LayoutCropped だとテクスチャ幅を超えた点が捨てられる。Wrapped に切り替えると折り返して全点を保持
  • 全点を確実に収めたい場合は LayoutFit to Square にして最小正方形テクスチャに詰める
  • Output ResolutionCustom Resolution で小さく固定されていないか確認

❌ Problem: アルファ値が意図せず0や1になる
✅ Solution:

  • ModePosition and Active のとき、点が存在するピクセルはアルファ 1、空きピクセルは 0 になる仕様 (有効ピクセルの印)
  • 空きピクセルに別の値を入れたい場合は Extra Pixel Values (RGBA) の Alpha を変更
  • 負のアルファ値を保持したい場合は Pixel Format32-bit float 系に切り替え

❌ Problem: 3D テクスチャにならない
✅ Solution:

  • Dimension3D になっているか確認 (デフォルトは 2D)
  • LayoutPOP Dimension にして点群の行列構造を反映させると、3 次元以上の構造で自動的に 3D テクスチャになる
  • Depth でスライス数を指定し、Depth Type で 3D テクスチャか 2D テクスチャ配列かを選択

参考資料 📚

その他 🔗

公式リソース 📖

関連記事 🔗

この記事は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をコピーしました