
概要 📖 – 点群を滑らかに細分化
Subdivide POPは、入力の点群ジオメトリを GPU 上で反復的に分割し、より滑らかな曲面に変換する POPです。Depth で分割段数を、Crease Weight で残したい折り目の鋭さを指定し、滑らかなハイポリ形状を生成します。
主な用途 🎯
- 低密度の点群ジオメトリを滑らかな曲面に変換 (粗いメッシュを反復分割して丸める)
- Depth で細分化の段数を制御し、見た目の滑らかさと処理負荷のバランスを取る
- Crease Weight で折り目の鋭さを調整し、角を残すか完全に丸めるかを連続的に切り替え
- GPU 上で細分化を実行し、大規模点群でも軽量に滑らかな形状を生成
- 後段の変形・描画向けにハイポリ素体を用意 (Noise POP / 描画パイプラインに載せる土台)
データフロー 🔄
入力: 細分化したい点群ジオメトリ (POP)
↓
Depth で反復回数を指定
↓
Crease Weight で折り目の鋭さを制御
↓
出力: 細分化された滑らかな点群 (POP)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Subdivide Page 📋
細分化深度パラメータ 🔢
Depth .iterations 📈
– Depth (細分化の反復回数) — 点群を何回細分化するかを指定
– 値が大きいほど面はより滑らかになるが、点数が指数的に増加して処理負荷が急増する
– 1 から段階的に上げて、求める滑らかさが得られる最小段数を見つけるのが実用的
折り目の鋭さパラメータ ⚖️
Crease Weight .creaseweight ✂️
– Crease Weight (折り目の鋭さ) — ジオメトリ内の鋭いエッジをどの程度保持するかを指定
– 0 = 完全に滑らか (折り目を保持しない)、大きい値ほど鋭い角として残される
– 工業製品のエッジやキャラクターの輪郭を残しつつ全体を丸めたいときに使う
平滑化係数パラメータ 🎛️
Simple Coefficients .simplecoeffs ✅
– Simple Coefficients (簡易係数による平滑化) — 補間された点を平滑化する際に簡易的な係数計算を使うかを切替
– オンにすると計算が軽くなるが、平滑化の品質は通常計算より単純になる
– 処理負荷を抑えたい大規模点群で挙動を比較しながら使う
CPU 転送パラメータ 🧠
Copy Topology Info Back to CPU .cpureadback 🔁
– Copy Topology Info Back to CPU (トポロジ情報を CPU に書き戻し) — GPU 上に保持される点数とトポロジ情報を CPU 側にコピーするかを切替
– 細分化後の点数やトポロジを CPU 側のスクリプトや下流オペレータから参照したいときにオンにする
– 不要なときはオフのままにすると GPU から CPU への転送コストを避けられる
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、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: 粗い点群を滑らかに変換 🟢
Box POP → Subdivide POP (Depth=2) → Null POP → 描画パイプライン
Box POP のカクカクした素体を Subdivide POP で 2 段細分化し、滑らかな丸みのある形状に変換する最小構成。粗いプレースホルダ形状を一気に有機的なシルエットに仕上げる定番パターン。
- Box POP を配置して素体となる点群を生成
- Subdivide POP を後段に接続し
Depthを 2 に設定 (1 から始めて段階的に上げると挙動が掴みやすい) Crease Weightを 0 にして全エッジを均等に丸める- Null POP を後段に置いて出力を確認し、描画パイプラインに接続
Depthを上げると滑らかさが増すが点数も指数的に増えるので、負荷を見ながら段数を調整
Example 2: 折り目を残して細分化 ✂️
Box POP → Subdivide POP (Crease Weight=5, Depth=2)
鋭いエッジを保持したまま他の部分だけを滑らかに細分化する例。工業製品のエッジやキャラクターの輪郭を残しつつ全体を丸める用途で、Crease Weight を高めに設定して折り目の鋭さを制御する。
- Box POP で素体の点群を生成
- Subdivide POP を後段に接続し
Crease Weightを 5.0 程度に設定 (鋭く保持) Depthを 2〜3 に上げて、鋭いエッジ以外がしっかり丸まることを確認Crease Weightを段階的に下げて、折り目の鋭さがどう変化するかを比較
Example 3: Noise で有機形状を作る 🌊
Box POP → Subdivide POP (Depth=3) → Noise POP → 描画パイプライン
Subdivide POP で点密度を上げた点群を後段の Noise POP で変位させてプロシージャル形状を作る典型パターン。Noise の細かい揺らぎを乗せるには十分な点密度が必要なため、Subdivide で素体の解像度を確保する。
- Box POP で素体の点群を配置
- Subdivide POP を後段に置き
Depthを 3 に設定して点密度を確保 (低い Depth では Noise の細かい揺らぎが乗らない) - Noise POP を後段に接続して点を変位させ、形状を変形
- 点数が増えすぎると処理負荷が急増するため、
Depthは必要最小限に留める - Null POP に接続して結果を確認
関連オペレータ 🔗
類似機能OP 🔍
- Subdivide SOP — 同名の SOP 版。CPU 上でポリゴンメッシュを細分化する (POP は GPU 上で点群を細分化)
- Facet POP — 点結合・法線処理など細分化以外の面属性編集を行う POP
- Convert POP — ジオメトリ型を変換する POP (細分化前後で型を整える)
組み合わせ推奨OP 🔄
- Noise POP — Subdivide で増やした点をノイズで変位させて有機形状を作る
- Transform POP — 細分化後の出力にさらに移動・回転・スケールを掛ける
- Attribute POP — 細分化前後で属性を作成・リネームして整える
- Math POP — 細分化結果の属性値をスケーリング・正規化
- Convert POP — 細分化結果を別のジオメトリ型に変換して下流へ渡す
前処理・後処理POP 🎯
Info POP情報 📊
Subdivide POPは Info CHOP / Info DAT による詳細情報取得に対応しています。
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: エラー数
点群・属性情報 🧬
num_points:num_points— この POP に含まれる点数 (細分化後の値、Depth に応じて指数的に増加)num_prims:num_prims— この POP に含まれるプリミティブ数num_point_attribs:num_point_attribs— 出力 POP の point 属性数
クック統計 ⏱️
total_cooks:total_cooks— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒、Depth を上げると急増しやすい)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Depth を上げるとフレームレートが急激に落ちる
✅ Solution:
- Subdivide は点数を指数的に増やす仕様 —
Depthを 1 段下げるだけで処理負荷が大幅に減るので、最小段数で求めるシルエットが得られないか試す - 細分化後の点数は Info CHOP の
num_points/num_primsで常に把握しておく - Common Page の Free Extra GPU Memory パルスで未使用 VRAM を返却し、メモリ逼迫を緩和
❌ Problem: 折り目として残したいエッジが丸まってしまう
✅ Solution:
Crease Weightを 5.0〜10.0 と大きめに設定すると鋭いエッジが折り目として保持されるCrease Weightを 0 にすると全エッジが折り目なし扱いとなり完全に滑らかになるため、意図と逆になっていないか確認- 細分化前のジオメトリに想定どおりの鋭いエッジがあるか、前段の Convert POP 等で形状を確認
❌ Problem: 細分化後の点数やトポロジを CPU 側スクリプトから参照できない
✅ Solution:
Copy Topology Info Back to CPUをオンにして GPU 上の点数・トポロジ情報を CPU 側にコピー- 参照が不要なら同パラメータはオフのままにして GPU から CPU への転送コストを避ける
- 点数だけ知りたい場合は Info CHOP の
num_pointsから取得する方法も検討
❌ Problem: 細分化後のメッシュが想定より滑らかにならない
✅ Solution:
Crease Weightが大きい値になっていないか確認 — 折り目が強く保持されると滑らかさが出ないDepthを 1 から段階的に上げ、目的の滑らかさが得られる最小段数を見つけるSimple Coefficientsのオン/オフで平滑化の品質が変わるため、両方の挙動を比較する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Subdivide POP
- TouchDesigner公式ドキュメント – Facet POP
- TouchDesigner公式ドキュメント – Convert POP

