
概要 📖 – 画像から立体形状を生成
Polygonize POPは、TOP の値をしきい値で内外判定し、その境界面を三角形メッシュとして生成する POPです。符号付き距離フィールドや密度マップを Threshold (しきい値) で内外に分け、その境界に三角形サーフェスを GPU 上で構築します。法線・テクスチャ座標の付与にも対応し、生成結果をそのままレンダリングへ流せます。
主な用途 🎯
- テクスチャ (TOP) の明暗を高さの境界とみなしてサーフェスメッシュを生成
- 符号付き距離フィールドや密度フィールドから等値面 (アイソサーフェス) を取り出す
- しきい値 (Threshold) を時間で変化させて形状がモーフィングするアニメーションを作る
- GPU 上で TOP からジオメトリへ直接変換しポイント・三角形を高速に大量生成
- テクスチャ座標 (Tex) や法線 (Normal) を付与してそのままマテリアル描画に流す
データフロー 🔄
入力: 明暗・密度を持つ TOP (テクスチャ)
↓
しきい値で内外を判定し三角形メッシュを生成
↓
出力: 法線・テクスチャ座標付きのジオメトリ (POP)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Polygonize Page 📋
入力テクスチャ .top 🖼️
形状の元データとして読み込む TOP の指定:
- TOP:
TOP(元画像) — 立体化の元になるテクスチャを指定。明暗・密度・距離値などをここから読み取ります
サンプルチャンネル .channel 🎨
Channel (参照する色成分) — TOP のどの色成分を内外判定の値として使うかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Luminance | .luminance |
輝度 (明るさ) を値として使用 |
| Red | .red |
赤チャンネルの値を使用 |
| Green | .green |
緑チャンネルの値を使用 |
| Blue | .blue |
青チャンネルの値を使用 |
| Alpha | .alpha |
不透明度 (アルファ) の値を使用 |
| RGB Average | .rgbaverage |
赤・緑・青 3 成分の平均値を使用 |
| RGBA Average | .average |
赤・緑・青・アルファ 4 成分の平均値を使用 |
| RGB Maximum | .rgbmax |
赤・緑・青 3 成分のうち最大値を使用 |
| RGBA Maximum | .max |
赤・緑・青・アルファ 4 成分のうち最大値を使用 |
解像度倍率 .resmult 📏
メッシュの細かさを決める解像度倍率:
- Resolution Multiplier:
Resolution Multiplier(解像度倍率) — 入力 TOP に対して適用するサンプリング解像度の倍率。値を上げるほど細かいメッシュになりますが生成負荷も増えます
内外の判定 .inside 🔀
Inside (どちら側を内側とみなすか) — しきい値より上の値と下の値のどちらを「内側」と扱うかを決めるメニューパラメータ。三角形の巻き方向、ひいては法線の向きが決まります
| 項目 | 内部名 | 説明 |
|---|---|---|
| <= (Signed Distance) | .lteq |
しきい値以下を内側とみなす (符号付き距離フィールド向け) |
| > (Density) | .gt |
しきい値より大きい値を内側とみなす (密度フィールド向け) |
しきい値 .threshold 🎚️
サーフェスが生成される境界のしきい値:
- Threshold:
Threshold(しきい値) — この値を境にサーフェスが生成されます。時間で変化させると形状がモーフィングします
サンプリング外挿 .extend ↔️
Extend (端の外側の扱い) — TOP をサンプリングする際、画像の端より外側をどう補うかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
端のピクセル値をそのまま保持して外側へ延長 |
| Zero | .zero |
端の外側をゼロ値として扱う |
| Repeat | .repeat |
画像を繰り返してタイル状に外挿 |
| Mirror | .mirror |
画像を反転して鏡像状に外挿 |
頂点と座標再設定 .uniquepoints 🧩
頂点の共有方法と、出力座標の再マッピング設定
Unique Points .uniquepoints 🧩
– Unique Points (頂点を共有するか) — オンにすると三角形ごとに独立した頂点を持ちます
– オフでは隣接三角形が頂点を共有し、ポイント数を節約します
ReRange P .rerangep 📐
– ReRange P (位置を再マッピングするか) — オンにすると出力ポイント位置 (P) を別の数値範囲に変換します
– 変換後の範囲は以下の Map to Low / Map to High で指定します
再マッピング範囲 .rerange_range 📦
ReRange P がオンのときに適用される新しい座標範囲:
- Map to Low (tolow):
Map to Low(新しい範囲の下限) — XYZ 各軸の最小値 (tolow0/tolow1/tolow2) を指定 - Map to High (tohigh):
Map to High(新しい範囲の上限) — XYZ 各軸の最大値 (tohigh0/tohigh1/tohigh2) を指定
法線の計算 .nmlmethod 🧭
Normals Method (法線の求め方) — 生成した三角形の法線をどの方式で計算するかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Field Gradient | .gradient |
フィールドの勾配 (近傍値の変化) から法線を計算 (滑らかな法線が得られる) |
| From Surface | .surface |
生成された三角形サーフェスの形状そのものから法線を計算 |
勾配ステップ倍率 .nmlstepmul 📊
Field Gradient 方式での勾配計算ステップ幅:
- Step Multiplier:
Step Multiplier(勾配ステップ倍率) — 法線が Field Gradient のとき、勾配計算に使う近傍フィールド値のステップ幅に掛ける倍率
テクスチャ座標出力 .texture 🗺️
テクスチャ座標属性 (Tex) の出力設定:
- Texture Coordinates:
Texture Coordinates(テクスチャ座標を出力するか) — オンにするとポイントごとのテクスチャ座標属性 (Tex) を出力し、マテリアル描画でテクスチャを貼れます
メモリと読み戻し .allocfract 💾
GPU メモリの確保割合と、トポロジ情報の CPU 読み戻し設定
Fraction of Max Allocation .allocfract 💾
– Fraction of Max Allocation (確保するメモリの割合) — この POP は必要な GPU メモリ量を事前に知れないため、最大確保量に対する割合を指定して節約します
– ポイントやプリミティブが欠ける、または情報ポップアップで最大値に達している場合は、この割合が低すぎる合図です
Copy Topology Info Back to CPU .cpureadback 🔁
– Copy Topology Info Back to CPU (トポロジ情報を CPU に戻すか) — GPU 上に保持されるポイント数と接続情報を CPU 側にコピーします
– CPU 側でポイント数や接続を参照する必要があるときに有効にします
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 Tex) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: 明暗から立体化 🏔️
Noise TOP → Polygonize POP (Channel=luminance, Threshold=0.5) → Normal POP → Render TOP
Noise TOP で生成したパターンの輝度を Polygonize POP の参照チャンネルにして、しきい値 0.5 を境に三角形サーフェスを起こす基本フロー。明暗の境界がそのまま地形状のメッシュになります。
- Noise TOP で明暗のあるパターン画像を生成
- Polygonize POP の TOP に Noise TOP を接続し Channel を
luminanceに設定 - Threshold を
0.5に設定して内外の境界を決定 - Normal POP で法線を整えてから Render TOP で立体メッシュを描画
Example 2: 形状のモーフィング 🌊
Field POP → POP to TOP → Polygonize POP (Threshold を LFO で駆動) → Render TOP
密度フィールドをテクスチャ化して Polygonize POP に渡し、Threshold を時間で揺らすことで等値面が膨らんだり縮んだりするメタボール的なモーフィングアニメーションを作る用途。
- 密度を持つフィールドをテクスチャ (TOP) として用意
- Polygonize POP の Inside を
gt(密度フィールド向け) に設定 - Threshold を LFO 等で時間変化させて等値面を動かす
- Render TOP で形状が連続的にモーフィングする様子を確認
Example 3: 座標付きで描画 🎨
File In TOP → Polygonize POP (Texture Coordinates=On) → POP to SOP → Render TOP
Polygonize POP の Texture Coordinates をオンにして出力メッシュに Tex 属性を付与し、生成したサーフェスへ元画像をテクスチャとして貼り付けて描画するワークフロー。
- File In TOP で元になる画像を読み込み
- Polygonize POP で Texture Coordinates をオンにして Tex 属性を出力
- POP to SOP でジオメトリを SOP ワークフローに引き渡し
- Render TOP でテクスチャが貼られたメッシュを描画
関連オペレータ 🔗
類似機能OP 🔍
- Convert POP — Polygonize が TOP からメッシュを「新規生成」するのに対し、Convert は既存プリミティブのタイプを変換する
- Connectivity POP — 接続情報を持たないポイントからプリミティブを構成する。Polygonize は TOP の値から直接三角形を起こす点が異なる
組み合わせ推奨OP 🔄
- Field POP — 密度・距離フィールドを用意し、テクスチャ化して Polygonize の入力にする前段として典型
- Normal POP — 生成メッシュの法線を整え直す後段に頻出
- Transform POP — 起こしたメッシュを移動・回転・スケールして配置
- POP to SOP — 生成したジオメトリを SOP ワークフローへ引き渡し
前処理・後処理POP 🎯
- 前処理: Field POP、Noise POP
- 後処理: Normal POP、Transform POP、Convert POP
Info POP情報 📊
Polygonize 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_prims: 生成された三角形プリミティブ数num_point_attribs: 出力ジオメトリのポイント属性数 (Tex / Normal 付与時に増加)num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: メッシュが生成されない / 出力が空
✅ Solution:
Threshold(しきい値) が入力 TOP の値域から外れていないか確認。値域内に境界が無いと面が生成されませんChannel(参照チャンネル) が実際に値を持つ成分を指しているか確認 (例: グレースケール画像で Alpha を選ぶと空になる場合あり)- 前段に Field POP 等で明確な密度・距離フィールドを用意
❌ Problem: ポイントやプリミティブが欠ける / 一部しか出ない
✅ Solution:
Fraction of Max Allocation(確保するメモリの割合) を上げて GPU メモリ不足を解消- Info CHOP で
num_points/num_primsが最大値に張り付いていないか確認 Resolution Multiplier(解像度倍率) を下げて生成負荷とメモリ消費を抑える
❌ Problem: 法線の向きが裏返る / 陰影がおかしい
✅ Solution:
Inside(内外の判定) を入力データの種類 (符号付き距離ならlteq、密度ならgt) に合わせるNormals Method(法線の求め方) をgradientに切替えて滑らかな法線を試す- 後段に Normal POP を挟んで法線を整え直す
❌ Problem: メッシュがカクカクして滑らかにならない
✅ Solution:
Resolution Multiplier(解像度倍率) を上げて細かい三角形を生成Step Multiplier(勾配ステップ倍率) を調整して Field Gradient 法線を滑らかにする- 入力 TOP 自体の解像度を上げて値の変化を滑らかにする
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Polygonize POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- Field POP (密度・距離フィールド生成、Polygonize の前段に頻出)
- Convert POP (既存プリミティブのタイプ変換)

