
概要 📖 – ポリゴンを滑らかに細分化
Subdivide SOPは、低ポリのポリゴンメッシュを反復的に分割して滑らかな曲面に変換する SOPです。Depth で分割段数を、Creases 入力と Crease Weight で残したい折り目の鋭さを指定し、ハイポリのスムーズメッシュを生成します。
主な用途 🎯
- 低ポリ形状を滑らかな曲面に変換 (Catmull-Clark 系の細分化でカクカクのメッシュを丸める)
- Depth で細分化の段数を制御し、レンダリング解像度とクックコストのバランスを取る
- Creases 入力で折り目を保持しながら細分化 (キャラクター造形でエッジを残しつつ全体を丸める用途)
- Crease Weight で折り目の鋭さを調整し、完全な角・半端な丸み・完全な滑らかさを連続的に切り替え
- 後段モデリング向けのハイポリ素体を生成 (Noise SOP / Deform 系の細かい変形を載せる土台)
データフロー 🔄
入力 1: 細分化したいポリゴンメッシュ
↓
入力 2 (オプション): 折り目を指定するエッジセット
↓
Depth で反復回数を指定
↓
Override Crease Weight で折り目の鋭さを上書き
↓
出力: 細分化された滑らかなメッシュ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象範囲指定パラメータ 🎯
Group .group 🗂️
– Group (対象グループ) — 入力 1 のうち細分化の対象とするポリゴンメッシュのサブセットを指定
– 空欄なら入力 1 のジオメトリ全体が細分化される
– * や [0-9] 等のパターンマッチングが使える
Creases .creases ✂️
– Creases (折り目指定) — 入力 2 のうち折り目として扱うエッジセットを指定
– 入力 2 のポリゴンエッジが入力 1 のメッシュエッジと同じポイント番号を共有していると、そのエッジが折り目として認識される
– ポイント座標は無視されポイント番号のみが照合される (物理的に近いだけでは折り目にならない)
細分化深度パラメータ 🔢
Depth .iterations 📈
– Depth (細分化の反復回数) — メッシュを何回細分化するかを指定
– 値が大きいほど面はより滑らかになるが、ポリゴン数が指数的に増加してクックコストが急増する
– 通常は 1〜3 が実用域。レンダリング解像度と性能のバランスで決定
折り目の鋭さ関連パラメータ 🔧
Override Crease Weight Attribute .overridecrease 🔁
– Override Crease Weight Attribute (折り目の鋭さ属性を上書き) — 折り目の鋭さを下記 Crease Weight パラメータで一括上書きするかを切替
– オフのとき: 入力ジオメトリの primitive / vertex の creaseweight 属性が使われる
– オンのとき (デフォルト): すべての折り目に対し Crease Weight 単一値が適用される
Crease Weight .creaseweight ⚖️
– Crease Weight (折り目の鋭さ) — Override Crease Weight Attribute がオンのとき適用される折り目の鋭さ値
– 0 = 完全に滑らか (折り目なし扱い)、大きい値ほど鋭い角として保持される
– 個別エッジで鋭さを変えたい場合は Vertex SOP / Primitive SOP で creaseweight 属性を直接設定する
折り目出力関連パラメータ 📤
Generate Resulting Creases .outputcrease 📝
– Generate Resulting Creases (残った折り目を出力) — Depth よりも鋭い折り目が残った場合、その情報を結果ジオメトリの primitive 属性として出力するかを切替
– オンのとき: 残った折り目が下記 New Group で指定したグループに格納される (後段で再利用可能)
– 多段細分化のパイプラインで折り目情報を引き継ぐときに使う
New Group .outcreasegroup 🏷️
– New Group (出力グループ名) — Generate Resulting Creases で出力される残存折り目を入れるグループの名前
– Generate Resulting Creases がオンのときのみ意味を持つ
亀裂処理関連パラメータ 🩹
Close Cracks .closeholes 🧷
– Close Cracks (亀裂の処理方法) — 出力ジオメトリで発生する亀裂 (細分化境界の隙間) をどう扱うかを選択するメニュー
– 細分化後にメッシュの境界に隙間が出るケース (グループ指定で部分細分化したときなど) で挙動を制御する
Surrounding Faces .surroundpoly 🔲
– Surrounding Faces (周辺面の扱い) — 亀裂を引き寄せて閉じる際に、亀裂の両側にある周辺ポリゴンをどう扱うかを選択するメニュー
– Close Cracks と組み合わせて細分化境界の連続性を制御するときに使う
Bias .bias ⚖️
– Bias (寄せ方の比率) — 亀裂を閉じる際にどちらのポイントを動かすかを 0〜1 で指定
– 0 = 細分化された側のポイントを境界側に寄せる
– 1 = 境界側のポイントを細分化された側に寄せる
– 0.5 で中間の位置に両側を歩み寄らせる
実践アイデア 💡
Example 1: Box を滑らかに変換 🟢
Box SOP → Subdivide SOP (Depth=2) → Geometry COMP → Render TOP
Box SOP のカクカクした立方体を Subdivide SOP で 2 段細分化し、滑らかな丸みのある形状に変換する最小構成。プレースホルダ造形を一気に有機的なシルエットに仕上げる定番パターン。
- Box SOP を配置してデフォルトの立方体を生成
- Subdivide SOP を後段に接続し
Depthを 2 に設定 (1 から始めて段階的に上げると挙動が掴みやすい) Override Crease Weight Attributeをオフのままにして全エッジを均等に丸める- Geometry COMP に接続し、Camera COMP / Light COMP / Render TOP でレンダリング結果を確認
Depthを上げると滑らかさが増すが、ポリゴン数も指数的に増えるので Info CHOP のnum_primsで確認しながら調整
Example 2: 折り目を保持して細分化 ✂️
Box SOP → Subdivide SOP (input1=mesh, input2=crease edges, Depth=2)
立方体の特定のエッジセットを入力 2 として Subdivide SOP に渡し、その折り目を保持したまま他の部分だけを滑らかに細分化する例。キャラクターの顔の輪郭や工業製品のエッジを残しつつ全体を丸める用途。
- Box SOP で素体を生成し、Group SOP で折り目として残したいエッジセットだけを抽出
- Subdivide SOP の input1 に素体メッシュを、input2 に折り目エッジセットを接続
Creasesパラメータに input2 のグループ名を指定Override Crease Weight AttributeをオンにしてCrease Weightを 5.0 程度に設定 (鋭く保持)Depthを 2〜3 に上げて、指定エッジ以外がしっかり丸まることを確認
Example 3: Noise で有機形状を作る 🌊
Box SOP → Subdivide SOP (Depth=3) → Noise SOP → Geometry COMP
Subdivide SOP で頂点密度を上げたメッシュを後段の Noise SOP で変位させてプロシージャル形状を作る典型パターン。Noise の細かい揺らぎを乗せるには十分な頂点密度が必要なため、Subdivide で素体の解像度を確保する。
- Box SOP で素体を配置
- Subdivide SOP を後段に置き
Depthを 3 に設定して頂点密度を確保 (低い Depth では Noise の細かい揺らぎが乗らない) - Noise SOP を後段に接続し、Amplitude / Frequency / Roughness で形状を変形
- 頂点数が増えすぎるとクックコストが急増するため、Info CHOP の
num_pointsで常時確認 - Geometry COMP に接続して結果を確認
関連オペレータ 🔗
類似機能OP 🔍
- Facet SOP — ポイント結合・法線処理・面の平面化など細分化以外の面属性編集を行う SOP
- Divide SOP — ポリゴンを単純に分割するシンプルな細分化 SOP (滑らかさは付与しない)
- Refine SOP — 曲線・サーフェスのコントロールポイント密度を細かくする (NURBS / Bezier 向けの細分化)
- Polyreduce SOP — ポリゴン数を減らす逆方向の操作 (細分化結果が重い場合の対処)
組み合わせ推奨OP 🔄
- Noise SOP — Subdivide で増やした頂点をノイズで変位させて有機形状を作る
- Transform SOP — Subdivide 後の出力にさらに移動・回転・スケールを掛ける
- Group SOP — Subdivide の Group / Creases パラメータに渡すエッジ・ポリゴンサブセットを作る
- Convert SOP — 細分化結果を別のジオメトリ型 (NURBS / Bezier / Polygon) に変換
- Geometry COMP — 細分化結果をレンダリングパイプラインに投入
前処理・後処理SOP 🎯
- 前処理: Box SOP、Grid SOP、Group SOP、Transform SOP
- 後処理: Facet SOP、Polyreduce SOP、Convert SOP、Transform SOP
Info CHOP情報 📊
Subdivide SOP は Info CHOP による詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
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で常に把握しておく - 重い場合は後段に Polyreduce SOP を入れて見た目に影響しない範囲でポリゴン数を削減
❌ Problem: 折り目として保持したいエッジが丸まってしまう
✅ Solution:
- input2 の Creases グループに該当エッジが含まれているか、また
Creasesパラメータにそのグループ名を指定しているかを確認 Override Crease Weight AttributeをオンにしてCrease Weightを 5.0〜10.0 と大きめに設定すると折り目が鋭く保持される- input2 のエッジが input1 のメッシュエッジと同じポイント番号を共有していないと折り目認識されない仕様 — ポイント番号のずれが疑われる場合は Group SOP でエッジセットを作り直す
❌ Problem: 部分的に Group 指定で細分化すると境界に隙間が出る
✅ Solution:
Close Cracksパラメータで境界の亀裂をどう扱うかを切替えて、隙間が閉じる挙動を試すSurrounding Facesパラメータで亀裂の周辺ポリゴンの寄せ方を変えると、片側だけ動くか両側が歩み寄るかを切替えられるBiasを 0.5 にすると境界と細分化側のポイントが中間に歩み寄り、自然な接続になりやすい
❌ Problem: 細分化後のメッシュが想定より滑らかにならない
✅ Solution:
- input1 のメッシュに既に
creaseweight属性が設定されており、それが残って細分化を妨げている可能性 — Group SOP や Vertex SOP で属性をクリア Override Crease Weight AttributeをオンにしてCrease Weightを 0 にすると、すべての折り目を無視して完全に滑らかに細分化されるDepthを 1 から段階的に上げ、目的の滑らかさが得られる最小段数を見つける
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Subdivide SOP
- TouchDesigner公式ドキュメント – Facet SOP
- TouchDesigner公式ドキュメント – Divide SOP
- TouchDesigner公式ドキュメント – Polyreduce SOP

