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

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

TOP to POP の TOP→POP 点群変換機能を示す図

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

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

TOP to POPは、TOP のピクセルをサンプリングして点群 (POP ジオメトリ) に変換し、色・位置・法線・深度・高さといった解釈方法に応じて属性を生成する POPです。ピクセルが何を表すかを First RGBA Contains で選び、深度画像であればカメラ設定から 3D 点群を、高さ画像であれば変位として立体を組み立てます。

主な用途 🎯

  • TOP のピクセルを POP のポイント (点群) ジオメトリに変換し GPU 上で扱う
  • ピクセルの RGBA を色・位置・法線のいずれとして解釈するか選んで点群を生成
  • 深度 (デプス) 画像とカメラ設定からカメラ空間の 3D 点群を復元
  • 高さ (ハイトマップ) 画像のピクセル値を変位量として平面を凹凸化
  • 色チャンネルを任意のカスタム属性として点群に書き込み下流へ受け渡す

データフロー 🔄

入力: TOP の 2D ピクセル (RGBA)

ピクセルの解釈方法を選択 (色 / 位置 / 法線 / 深度 / 高さ)

点群へのサンプリングと属性生成

出力: 各ピクセルを点に対応させた POP ジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Inputs Page 📋

ピクセルの解釈 .rgba 🎨

First RGBA Contains (最初の TOP の RGBA が表す内容) — 入力 TOP のピクセル値を何として解釈するかを選ぶメニューパラメータです。

項目 内部名 説明
Color .color ピクセル値を色 (Color 属性) として解釈します。
Position .position ピクセル値を点の位置 (P 属性) として解釈します。
Normal .normal ピクセル値を法線 (N 属性) として解釈します。
Depth .depth ピクセル値をカメラからの深度として解釈し 3D 点群を復元します。
Height .height ピクセル値を高さ (変位量) として解釈し平面を凹凸化します。

点数の上限 .maxpointsenable 🔢

Max Number of Points .maxpointsenable 🔢
Max Number of Points (最大点数) — First RGBA Contains が Position のとき、生成する点数の上限を設定できる項目です。
– 大量のピクセルから点群を作る際に点数を制限してメモリ・描画負荷を抑える用途です。

入力TOPと範囲 .input0top 🔌

TOP .input0top 🎯
TOP (変換元 TOP) — 点群に変換する入力 TOP への参照を指定する項目です。
– 複数 TOP を順番に並べる連続パラメータブロックの先頭で、TOP ごとに以下の範囲設定を持ちます。

Channel Scope .input0chanscope 🎚️
Channel Scope (サンプリングする色チャンネル) — この TOP からサンプリングする色チャンネルを指定する項目です。
r g b a のうち必要なチャンネルだけを抜き出せます。

Attribute Scope .input0attrscope 🏷️
Attribute Scope (生成する属性のリスト) — チャンネルスコープに応じて作成する属性名の一覧を指定する項目です。
– サンプリングした色チャンネルをどの属性として書き込むかを対応付けます。

Filter .input0filter 🔍
Filter (ピクセルのフィルタリング) — TOP のピクセルをサンプリングする際の補間方法を指定するメニュー項目です。
– 点とピクセルの位置がずれる場合の色の取り方 (最近傍 / 線形補間など) を制御します。

新規属性の作成 .attr0name 🆕

New Attribute Name .attr0name 🆕
New Attribute Name (新規属性名) — 定義済み属性か独自属性かを選び、点群に追加する属性名を指定する項目です。
– 新しい属性を作成する連続パラメータブロックの先頭で、属性ごとに型と既定値を持ちます。

Attribute Type .attr0type 🔠
Attribute Type (属性の型) — 作成する属性のデータ型 (浮動小数 / 整数など) を決めるメニュー項目です。

Default Value .attr0defaultval 🔢
Default Value (既定値) — 計算できない場合に新規カスタム属性へ入れる値を指定する項目です。


Detail Page 🧩

点の接続方法 .surftype 🔗

Connectivity (接続方法) — 生成した点同士をどのプリミティブで結ぶかを選ぶメニューパラメータです。

項目 内部名 説明
Points .points 点同士を結ばず点プリミティブとして出力します。
Lines .lines 点を線として接続します。
Quads .quads 点を四角形プリミティブで接続します。

線と面の軸 .line 📐

Line X/Y/Z .line 📏
Line X/Y/Z (各軸の線) — X / Y / Z の各軸方向に線を有効にするかどうかを指定する項目です。

Plane XY/YZ/ZX .plane 🟦
Plane XY/YZ/ZX (平面の向き) — 生成する平面の向き (XY / YZ / ZX) を指定する項目です。

Unique Points .uniquepoints ✳️
Unique Points (点を共有しない) — プリミティブ間で点を共有せず、それぞれ独立した点を持たせる項目です。

配置とサイズ .t 📦

Center .t 🎯
Center (中心) — 出力ジオメトリの中心位置を指定する項目です。

Override Size .overridesize 🔁
Override Size (サイズの上書き) — 自動サイズ (X 方向 1、Y 方向は入力 TOP のアスペクト比に従う) を上書きするかどうかの項目です。

Size .size 📐
Size (サイズ) — 出力ジオメトリの 3D サイズを指定する項目です。

Override Resolution .overrideres 🔁
Override Resolution (解像度の上書き) — 自動解像度 (入力 TOP の解像度) を上書きするかどうかの項目です。

Resolution .res 🖼️
Resolution (解像度) — 上書きする際の点群の解像度 (横×縦の点数) を指定する項目です。

サンプルと座標 .pixelsamplingloc 📍

Pixel Sampling Location .pixelsamplingloc 📍
Pixel Sampling Location (ピクセルのサンプリング位置) — ピクセルのどこ (中心 / 角など) をサンプリングするかを設定する項目です。

Texture Coordinates .texture 🗺️
Texture Coordinates (テクスチャ座標) — テクスチャ座標 (uv) を作成する属性クラスを指定する項目です。

Append Dimension .dimension
Append Dimension (次元を付加) — 常に次元情報を追加するか、サイズが 2 以上のときだけ追加するかを選ぶ項目です。


Depth Page 📷

値の再マッピング .rerangefromlow 🔄

Rerange from Low High .rerangefromlow 📥
Rerange from Low High (入力値の範囲) — 入力ピクセル値の元の範囲 (最小・最大) を指定する項目です。

Rerange to Low High .rerangetolow 📤
Rerange to Low High (出力値の範囲) — 再マッピング後の出力値の範囲 (最小・最大) を指定する項目です。

カメラ設定 .camera 📷

Camera .camera 📷
Camera (カメラ) — 深度から 3D 点群を復元する際に基準とするカメラコンポーネントを指定する項目です。

Override Camera View .overridecamera 🔁
Override Camera View (カメラ視野の上書き) — 選択したカメラの View 設定を上書きするかどうかの項目です。

View Angle Method .viewanglemethod 📐
View Angle Method (視野角の指定方法) — 深度 TOP を 3D に変換する際の視野角の指定方法を選ぶメニュー項目です。

FOV Angle .fov 🔺
FOV Angle (視野角) — カメラの視野角を決める項目です。

Focal Length (Fx, Fy) .focallengths 🔍
Focal Length (Fx, Fy) (焦点距離) — 深度投影に使うカメラの焦点距離を指定する項目です。

Optical Center (Cx, Cy) .center 🎯
Optical Center (Cx, Cy) (光学中心) — 深度投影に使うカメラの中心位置を指定する項目です。

点の間引き .deletenear 🗑️

Delete Near Points .deletenear 🗑️
Delete Near Points (近すぎる点の削除) — カメラに近すぎる点を取り除くかどうかの項目です。

Near Depth .depthnear 📏
Near Depth (近クリップ面の深度) — 近クリップ面の深度 (これより手前を削除) を指定する項目です。

Delete Far Points .deletefar 🗑️
Delete Far Points (遠すぎる点の削除) — カメラから遠すぎる点を取り除くかどうかの項目です。

Far Depth .depthfar 📏
Far Depth (遠クリップ面の深度) — 遠クリップ面の深度 (これより奥を削除) を指定する項目です。

Line Strip Behavior .linestripbehavior
Line Strip Behavior (線ストリップの扱い) — 線ストリップの点が削除されたときの挙動を選ぶメニュー項目です。


Height Page ⛰️

変位スケール .dispscale ⛰️

Displacement Scale .dispscale ⛰️
Displacement Scale (変位スケール) — ピクセルを高さ値として解釈するときの変位量の倍率を設定する項目です。
– 値を大きくするほど高さ画像の凹凸が強調されます。


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: 画像を色付き点群に変換 🎨

Movie File In TOP → TOP to POP (First RGBA Contains=color) → Math POP → 描画

Movie File In TOP の各ピクセルを TOP to POP に通し、First RGBA Contains を Color に設定して色付きの点群を生成する基本フロー。映像を点描風のビジュアルへ変換する起点になり、後段の Math POP で点のサイズや色を調整できます。

  1. Movie File In TOP で映像・画像を読み込む
  2. TOP to POP の TOP パラメータで入力 TOP を参照
  3. First RGBA Containscolor に設定して色を Color 属性へ
  4. 下流の Math POP で点のサイズや色を調整

Example 2: 深度画像から3D点群を復元 📷

Depth TOP → TOP to POP (First RGBA Contains=depth, Camera 指定) → Transform POP

深度センサーやレンダリング由来の深度 TOP を TOP to POP に通し、First RGBA Contains を Depth に設定してカメラ空間の 3D 点群を復元する用途。Camera にカメラコンポーネントを指定すると、ピクセルの深度値が立体的な点の位置へ変換されます。

  1. 深度を表す TOP (Depth TOP など) を用意
  2. TOP to POP の First RGBA Containsdepth に設定
  3. Camera パラメータで基準となるカメラを指定
  4. 近すぎ・遠すぎる点を Delete Near Points / Delete Far Points で除去
  5. 復元した点群を Transform POP で配置

Example 3: 高さ画像で地形を立体化 ⛰️

Noise TOP → TOP to POP (First RGBA Contains=height) → Point POP

Noise TOP で生成したグレースケール画像を高さマップとして TOP to POP に渡し、First RGBA Contains を Height に設定してピクセル値を変位量に変換する用途。Displacement Scale で凹凸の強さを調整すれば、平面から起伏のある地形ジオメトリを GPU 上で組み立てられます。

  1. Noise TOP でグレースケールの高さマップを生成
  2. TOP to POP の First RGBA Containsheight に設定
  3. Displacement Scale で凹凸の強さを調整
  4. 下流の Point POP で点単位の属性操作を実行

関連オペレータ 🔗

類似機能OP 🔍

  • CHOP to POP — CHOP チャンネルから POP ジオメトリを生成する同系統の入力変換 POP
  • SOP to POP — SOP の 3D 形状を POP 点群に変換する同系統の入力変換 POP
  • DAT to POP — DAT テーブルから POP 属性を生成する同系統の入力変換 POP

組み合わせ推奨OP 🔄

  • Math POP — 変換した属性 (P / Color 等) を後段で正規化・スケーリング
  • Transform POP — 生成した点群を平行移動・回転・スケール
  • Attribute POP — 生成した属性の名前変更・型変換・削除
  • Texture Map POP — 点群にテクスチャ座標を使って色を貼り込む後段処理

前処理・後処理POP 🎯


Info POP情報 📊

TOP to 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 メモリ量

共通オペレータ情報 📈

  • total_cooks: プロセス開始以降にこのオペレータがクックした回数
  • cook_time: 直近のクックにかかった時間 (ミリ秒)
  • cooked_this_frame: このフレームでクックされた場合は 1
  • errors: このオペレータのエラー数

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

よくある問題と解決策 🔧

❌ Problem: 点群が表示されない
✅ Solution:

  • TOP パラメータに有効な入力 TOP が参照されているか確認
  • First RGBA Contains が用途 (色 / 位置 / 深度 / 高さ) に合っているか確認
  • Position 解釈時は Max Number of Points で点数が極端に絞られていないか確認

❌ Problem: 深度画像から3D点群がうまく出ない
✅ Solution:

  • First RGBA Containsdepth になっているか確認
  • Camera に正しいカメラコンポーネントが指定されているか確認
  • Near Depth / Far Depth のクリップ範囲で点が削除されすぎていないか確認

❌ Problem: 色や位置の値がずれる
✅ Solution:

  • Rerange from Low High / Rerange to Low High の入出力範囲が適切か確認
  • Channel ScopeAttribute Scope の対応が崩れていないか確認
  • 属性の名前や型を整えたい場合は後段に Attribute POP を接続

参考資料 📚

その他 🔗

公式リソース 📖

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