
概要 📖 – ポリゴンの均等長セグメント再分割
Resample SOPは、1 つ以上のプリミティブを均等長セグメントに再分割するジオメトリリサンプリング SOPです。ポリゴンのみを対象とするため、NURBS や Bezier 曲線が入力された場合は Level of Detail パラメータでポリゴンに変換してからリサンプリングを実行します。
主な用途 🎯
- 曲線・ポリラインの均等長セグメント化で、入力プリミティブを
Length/Segmentsに従って一定間隔のポイント列に再構築 - NURBS / Bezier カーブのポリゴン変換 + 均等再サンプルで、
Level of Detailによりまずポリゴン化してから Method に従って再分割 - Even X / Even Y / Even Z 軸方向の均等スライスで、特定軸に沿ったストライプ状の均等ポイント分布を生成
- Resample by Polygon Edge によるエッジ単位リサンプルで、ポリゴン全体ではなく各エッジ単位に均等分割しコーナー特徴を保持
- Maximum Segment Length と Maximum Segments の併用で、長さ上限と分割数上限の両方を同時に制約しサンプリング密度を細かく調整
- Group パターンマッチによる選択的リサンプルで、入力ジオメトリ内の特定プリミティブ群だけを対象に再分割
データフロー 🔄
入力: ポリゴン / NURBS / Bezier カーブ
↓
NURBS/Bezier 入力は Level of Detail に従いポリゴンへ変換
↓
Method (Even Length / Even X / Even Y / Even Z) と Measure (Arc / Chord) に従って均等セグメント化
↓
出力: 均等長セグメントに再分割されたポリゴン
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
リサンプル対象の選択 🎯
Group .group 🎯
– リサンプルを適用するプリミティブ (またはプリミティブグループ) を指定
– Pattern Matching に従ったパターン記述を受け付ける
– 空欄の場合は入力ジオメトリ内の全プリミティブが対象
曲線→ポリゴン変換の精度 📏
Level of Detail .lod 📏
– 入力ジオメトリがポリゴン以外 (例: NURBS サークル等) のときに使用される、ポリゴン変換時の詳細度
– 値が高いほどポリゴン変換が緻密になり、後続のリサンプル精度も向上
– Resample SOP はポリゴンのみを対象とするため、NURBS / Bezier 入力時には必ずこの値で内部変換が走る
エッジ単位リサンプルモード 🪡
Resample by Polygon Edge .edge 🪡
– オンにすると、ポリゴン全体ではなく各エッジ単位でリサンプルが行われ、コーナー (頂点) が保持される
– このパラメータが有効な間は Measure パラメータは無効化される
– Maximum Segment Length が指定されているとき、その長さより長いエッジだけが分割対象になる
– Maximum Segments が指定されているときは、各エッジの分割数がその上限を超えない
– 長さ指定がオフの場合は、各エッジが指定したセグメント数で均等に分割される
セグメンテーション方式 .method 🧭
ジオメトリをどの方向に沿って均等分割するかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Even Length Segments | .dist |
元の入力カーブに沿った均等長セグメントで分割 |
| Even X Segments | .x |
X 軸方向に等間隔のセグメントで分割 |
| Even Y Segments | .y |
Y 軸方向に等間隔のセグメントで分割 |
| Even Z Segments | .z |
Z 軸方向に等間隔のセグメントで分割 |
曲線セクションの計測方式 .measure 📐
スプライン系セクションの長さをどのように測るかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Along Arc | .arc |
曲線自体に沿った弧長で均等長セグメントを切り出す。精度が高い |
| Along Chord | .chord |
プリミティブ上で評価されたポイント間を直線弦長で均等分割。Along Arc より高速だが精度は低い |
セグメント長による分割制約 📏
Maximum Segment Length .dolength 📏
– オンにすると、Arc / Chord 長を直接指定して各セグメントの長さを制限
– 値が小さいほど補間が滑らかになり、ポイント密度が高くなる
– 有効時は Length パラメータの値が実際の分割長として使用される
Length .length 🔢
– リサンプル後のジオメトリにおける Arc / Chord セグメント長を指定
– Maximum Segment Length がオフのときは値が無視される
– 値を小さくすると密に、大きくすると粗く分割される
セグメント数による分割制約 🔢
Maximum Segments .dosegs 🔢
– オンにすると、リサンプル後のジオメトリで使用される最大セグメント数を上限として制限
– Maximum Segment Length と併用すると、長さ上限と数上限の両方を満たす結果になる (元入力より短い場合あり)
– 単独で使うと入力カーブ全体をその数で均等分割
Segments .segs 🔢
– 弧長に沿って計測する際に使用するセグメント数を指定
– Maximum Segment Length と Maximum Segments 両方をオンにすると、結果のポリゴンは長さ上限で制約され元入力より短くなる場合がある
– Maximum Segments のみがオンの場合は、各セグメントが元の入力カーブ全長にまたがるよう均等配置される
– どちらの制約もオフの場合は、入力カーブが単に均等数のポリゴンに変換される
終端頂点の保持 📍
Maintain Last Vertex .last 📍
– オンにすると、プリミティブの最終 CV (制御点) がリサンプル後のポリゴンに必ず含まれる
– 最終セグメントが指定セグメント長より短くなっても、終端頂点は欠落しない
– カーブの両端を厳密に保持したいケースで活用
実践アイデア 💡
Example 1: 雑なポリラインを均等間隔でリサンプルして滑らかに走査 🪢
Add SOP (任意の頂点列で描いたカーブ) → Resample SOP (Method=Even Length, Maximum Segment Length=ON, Length=0.05) → Sweep SOP → Material SOP → Geometry COMP
ユーザがフリーハンドや LFO で生成した不均一なポリラインを、均等間隔の頂点列に揃えてから Sweep SOP のレールに使うパターンです。Maximum Segment Length をオンにして Length に小さい値 (例: 0.05) を入れることで、入力カーブの密度に関わらず一定間隔のポイントが得られ、後段の Sweep 結果がムラなく仕上がります。
- Add SOP / Line SOP / もしくは外部入力で任意のポリラインを準備
- Resample SOP に接続し、
MethodをEven Length Segments、MeasureをAlong Arcに設定 Maximum Segment Lengthをオン、Lengthを 0.05 程度に設定して均等密度を確保- 出力を Sweep SOP のバックボーンとして接続し、断面プロファイル SOP と組み合わせて押し出し形状を生成
Length値を変動させながらリアルタイムにポイント密度を確認
Example 2: Even Y Segmentsで水平スライス化 🥖
Sphere SOP → Convert SOP (Polygons) → Resample SOP (Method=Even Y Segments, Maximum Segments=ON, Segments=24) → Skin SOP → Material SOP
球やトーラスといった立体ジオメトリを Y 軸方向に均等にスライスし、輪切りジオメトリとして可視化するパターンです。Method を Even Y Segments にすることで、Y 座標が等間隔の位置でセグメントが切り出され、Maximum Segments でスライス枚数を制御できます。
- Sphere SOP を配置し、必要に応じて Convert SOP でポリゴンへ変換
- Resample SOP に接続し、
MethodをEven Y Segmentsに設定 Maximum Segmentsをオンにし、Segmentsを24程度に設定してスライス枚数を制御- Skin SOP / Sweep SOP 等の後段で輪切りエッジから面を再構築
- Sphere の Y スケールを変動させ、スライス間隔の振る舞いを確認
Example 3: Polygon Edgeで角を保ち密度調整 🪟
Rectangle SOP → Resample SOP (Resample by Polygon Edge=ON, Maximum Segment Length=ON, Length=0.1, Maintain Last Vertex=ON) → Transform SOP → Material SOP
矩形や多角形のようなコーナーが重要なジオメトリで、コーナー位置を維持しつつエッジの分割密度だけを上げたい場合のパターンです。Resample by Polygon Edge をオンにするとリサンプルがエッジ単位で行われ、頂点がそのまま保持されます。Maintain Last Vertex も併用するとカーブ末端の CV も厳密に維持されます。
- Rectangle SOP / Sort SOP / もしくはコーナーのある任意のカーブを準備
- Resample SOP に接続し、
Resample by Polygon Edgeをオン Maximum Segment Lengthをオン、Lengthを 0.1 程度に設定してエッジを密に分割Maintain Last Vertexをオンにして終端頂点の脱落を防止- Transform SOP で位置を動かしながら、コーナーが滑らかにならず角ばったまま密に再サンプルされていることを確認
関連オペレータ 🔗
類似機能OP 🔍
- Subdivide SOP — ポリゴンを細分割してより滑らかな形状に整える (Resample が均等長セグメント化なのに対し、Subdivide は再帰的サブディビジョン)
- Refine SOP — プリミティブ (曲線含む) を追加コントロールポイントで細分化 (Resample が均等長を優先するのに対し、Refine は元の形状を変えずに精度を上げる)
組み合わせ推奨OP 🔄
- Convert SOP — 前段で NURBS / Bezier 等を明示的にポリゴン化して、Resample の Level of Detail に頼らず細密度を制御
- Carve SOP — 曲線の一部区間を切り出してから Resample で均等密度に整える
- Sweep SOP — 均等にリサンプルされたカーブをバックボーンに使って、断面プロファイルをムラなく押し出す
- Skin SOP — 複数の均等リサンプル済みカーブから面を張って滑らかなサーフェスを生成
前処理・後処理SOP 🎯
- 前処理: Convert SOP、Carve SOP、Add SOP、Line SOP
- 後処理: Sweep SOP、Skin SOP、Transform SOP、Material SOP、Out SOP
Info CHOP情報 📊
Resample 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— 直近のクック所要時間 (ミリ秒)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: リサンプル結果のコーナーが滑らかに丸まってしまい元の角が消える
✅ Solution:
Resample by Polygon Edgeをオンにして、ポリゴン全体ではなくエッジ単位でリサンプル — 頂点 (コーナー) が保持されるMaintain Last Vertexをオンにしてカーブ末端の CV を必ず維持- 前段に Convert SOP を入れて、コーナー周辺のポイント密度を高めてから Resample にかけ、コーナー特徴の損失を抑える
❌ Problem: NURBS / Bezier 曲線入力で期待した均等密度にならない
✅ Solution:
Level of Detailを高めて、内部ポリゴン変換時の元解像度を上げる- 前段で明示的に Convert SOP を入れて NURBS / Bezier をポリゴン化し、自分で密度を制御してから Resample に渡す
MeasureをAlong Arcに設定 —Along Chordは高速だが曲線部での均等性が落ちる
❌ Problem: Maximum Segments を設定したのに出力ポリゴン長がバラバラになる
✅ Solution:
Maximum Segment LengthとMaximum Segmentsを同時にオンにしていないか確認 — 両方併用時は長さ上限優先で結果が元入力より短くなる- 均等数のセグメントだけが必要なら
Maximum Segment LengthをオフにしてMaximum Segments単独で使用 — 入力カーブ全長を均等数に分割 MethodがEven X/Y/Z Segmentsになっていないか確認 — 軸方向均等は弧長均等とは結果が異なる
❌ Problem: 出力のポイント数が爆発的に増えて後段の処理が重い
✅ Solution:
Lengthを大きくして 1 セグメントあたりの長さを伸ばす、またはMaximum Segment LengthをオフにするMaximum Segmentsをオンにして上限を明示的に低めの値で固定Level of Detailを下げ、NURBS / Bezier 入力時の内部ポリゴン変換の解像度を抑える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Resample SOP
- TouchDesigner公式ドキュメント – Pattern Matching
- TouchDesigner公式ドキュメント – Convert SOP
- TouchDesigner公式ドキュメント – Subdivide SOP

