
概要 📖 – 曲線からポリゴン面を張る
Polypatch SOPは、格子状に並んだ制御点を補間して、なめらかなポリゴン面を張る SOPです。スプラインの基底に沿って制御点の間を埋め、分割数や端の閉じ方を指定して面の形を整えます。
主な用途 🎯
- 格子状に並んだ制御点からポリゴンメッシュを生成
- 曲線や輪郭を補間してなめらかな面を作成
- U方向・V方向で面を筒状・球状に閉じて立体化
- 面の細かさを分割数で調整して軽い面と滑らかな面を切替
- 頂点アニメーションや変形の土台となる中間メッシュの生成
データフロー 🔄
入力: 格子状の制御点や曲線
↓
補間処理(スプライン基底に沿ってポリゴンを生成)
↓
出力: なめらかなポリゴンメッシュ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Polypatch Page 📋
入力の絞り込み 🎯
Group .group 🎯
– Group (対象グループ) — 入力のうち面を張る対象を一部だけに絞り込みます。
– 空欄のときは入力されたすべての形状が対象になります。
Basis .basis 📐
Basis (スプラインの種類) — 制御点の間を補間するときの曲線のタイプを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Cardinal | .cardinal |
制御点そのものを通る曲線で補間するタイプ |
| BSpline | .bspline |
制御点に引き寄せられるなめらかな曲線で補間するタイプ |
Connectivity .connecttype 🔗
Connectivity (接続方法) — 生成した面の点をどうつなぐかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rows | .rows |
横方向の線を作る。開いたポリゴンになります |
| Columns | .cols |
縦方向の線を作る。開いたポリゴンになります |
| Rows and Columns | .rowcol |
縦横の両方の線を作る。すべて開いたポリゴン |
| Triangles | .triangles |
三角形で面を構成する |
| Quadrilaterals | .quads |
四角形で面を構成する標準の接続 (デフォルト) |
| Alternating Triangles | .alttriangles |
向きが交互になる三角形を生成。Triangles に近い接続 |
| Inherit from Source | .inheritconnect |
入力した形状と同じつなぎ方を出力面に引き継ぐ |
U Wrap .closeu 🔄
U Wrap (U方向で閉じる) — U方向の端と端をつないで輪のように閉じるかどうかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .nonewu |
U方向で閉じない (開いたまま) |
| On | .wu |
U方向の端どうしをつないで輪状に閉じる |
V Wrap .closev 🔁
V Wrap (V方向で閉じる) — V方向の端と端をつないで輪のように閉じるかどうかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .nonewv |
V方向で閉じない (開いたまま) |
| On | .wv |
V方向の端どうしをつないで輪状に閉じる |
U端の固定(始) .firstuclamp 📌
U Clamp (First) (U方向の始端を固定) — U方向の最初の端を制御点に合わせて固定するかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .firstuclampoff |
U方向の始端を固定しない |
| On | .firstuclampon |
U方向の始端を固定する |
| If primitive does | .firstuclampifprim |
入力の形状が固定している場合だけ始端を固定する |
U端の固定(終) .lastuclamp 📌
U Clamp (Last) (U方向の終端を固定) — U方向の最後の端を制御点に合わせて固定するかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .lastuclampoff |
U方向の終端を固定しない |
| On | .lastuclampon |
U方向の終端を固定する |
| If primitive does | .lastuclampifprim |
入力の形状が固定している場合だけ終端を固定する |
V端の固定(始) .firstvclamp 📌
V Clamp (First) (V方向の始端を固定) — V方向の最初の端を制御点に合わせて固定するかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .firstvclampoff |
V方向の始端を固定しない |
| On | .firstvclampon |
V方向の始端を固定する |
| If primitive does | .firstvclampifprim |
入力の形状が固定している場合だけ始端を固定する |
V端の固定(終) .lastvclamp 📌
V Clamp (Last) (V方向の終端を固定) — V方向の最後の端を制御点に合わせて固定するかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .lastvclampoff |
V方向の終端を固定しない |
| On | .lastvclampon |
V方向の終端を固定する |
| If primitive does | .lastvclampifprim |
入力の形状が固定している場合だけ終端を固定する |
Output Divisions .divisions 📏
Output Divisions (出力の分割数) — 出力する面の細かさを決めます。分割数を増やすほどなめらかな面になります。
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .divisionsx |
横 (X) 方向の分割数 |
| Y | .divisionsy |
縦 (Y) 方向の分割数 |
出力形式 📤
Output Polygons .polys 📦
– Output Polygons (ポリゴンで出力) — メッシュではなく、ポリゴンの集合として強制的に出力します。
– 後段でポリゴンを前提に処理したいときに使います。
実践アイデア 💡
Example 1: 格子から曲面を作る 🌐
Grid SOP → Transform SOP (一部の点を移動) → Polypatch SOP (BSpline)
格子状に並んだ制御点を Polypatch SOP に通し、BSpline 基底でなめらかに補間して曲面を作る基本フロー。分割数を増やすほど滑らかな面になります。
- Grid SOP で格子状の制御点を用意する
- 一部の点を動かして起伏をつける
- Polypatch SOP に通し Basis を BSpline にしてなめらかに補間する
- Output Divisions を上げて面の細かさを調整する
Example 2: 筒状の面を閉じる 🛢️
Grid SOP → Polypatch SOP (U Wrap On)
U Wrap を On にして U方向の端どうしをつなぎ、開いた面を筒状に閉じる例。さらに V Wrap も On にすればドーナツ状のループ形状になります。
- 格子状の制御点を Polypatch SOP に入力する
- U Wrap を On にして U方向を輪状に閉じ筒形状にする
Example 3: 入力形状の接続を継承 🔗
Convert SOP → Polypatch SOP (Inherit from Source)
Connectivity を Inherit from Source にして、入力した形状のつなぎ方をそのまま出力面に引き継ぐ例。元のメッシュ構造を保ったまま面を張り直したいときに向いています。
- 前段で Convert SOP を使い形式をそろえる
- Connectivity を Inherit from Source にして元の接続を継承する
Example 4: 三角形で軽い面を出す 🔺
Grid SOP → Polypatch SOP (Connectivity=Triangles) → Facet SOP
Connectivity を Triangles にして三角形のみで面を構成し、後段の Facet SOP で法線を整えて表示や陰影をきれいにする例。レンダリングで扱いやすい軽量な面が得られます。
- Connectivity を Triangles にして三角形で面を構成する
- 後段で Facet SOP を使い法線をそろえる
関連オペレータ 🔗
類似機能OP 🔍
- Polyloft SOP — 複数の断面を縫い合わせて一枚のポリゴン面を張る SOP。面を補間して生成する点で役割が近い
- Skin SOP — 断面となる曲線群に滑らかな曲面 (skin) を張る SOP。Polypatch がポリゴンで張るのに対し曲面を生成
- Polyspline SOP — ポリゴンをスプライン曲線で補間してなめらかにする SOP。補間で形を整える点で機能が近い
組み合わせ推奨OP 🔄
- Grid SOP — 格子状の制御点を前段で生成し Polypatch に渡す土台にする
- Convert SOP — 入力の種類をそろえ、Polypatch が扱える形式に整える前処理
- Facet SOP — 生成した面の法線や頂点を整え、表示や陰影を整える後処理
- Subdivide SOP — 張った面をさらに細分化してなめらかさを高める後処理
前処理・後処理SOP 🎯
- 前処理: Grid SOP、Line SOP、Convert SOP、Transform SOP、Merge SOP
- 後処理: Facet SOP、Subdivide SOP、Polyreduce SOP、Convert SOP
Info情報 📊
Polypatch SOP は SOP 共通の情報チャンネルを通じて、ジオメトリの統計や状態を取得できます。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数num_vertices: 出力ジオメトリの総頂点数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
cook_time: 直近のクックに要した時間 (ミリ秒)total_cooks: このオペレータがクックされた累計回数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 面がカクカクして滑らかでない
✅ Solution:
Output Divisionsの X・Y を上げて分割数を増やすBasisをBSplineにしてなめらかに補間する- 後段で Subdivide SOP を使いさらに細分化する
❌ Problem: 面が閉じず端が開いてしまう
✅ Solution:
U Wrapを On にして U方向の端をつなぐV Wrapを On にして V方向の端をつなぐ- 端を制御点に合わせたいときは
U Clamp/V Clampを On にする
❌ Problem: 面の向き・陰影がおかしい
✅ Solution:
Connectivityが用途 (三角形か四角形か) に合っているか確認- 後段で Facet SOP を使い法線をそろえる
- 入力の接続を保ちたいときは
Inherit from Sourceを選ぶ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

