Resample SOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Resample SOP の均等長リサンプル機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – ポリゴンの均等長セグメント再分割

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) に従って均等セグメント化

出力: 均等長セグメントに再分割されたポリゴン

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 LengthMaximum 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 結果がムラなく仕上がります。

  1. Add SOP / Line SOP / もしくは外部入力で任意のポリラインを準備
  2. Resample SOP に接続し、MethodEven Length SegmentsMeasureAlong Arc に設定
  3. Maximum Segment Length をオン、Length を 0.05 程度に設定して均等密度を確保
  4. 出力を Sweep SOP のバックボーンとして接続し、断面プロファイル SOP と組み合わせて押し出し形状を生成
  5. 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 軸方向に均等にスライスし、輪切りジオメトリとして可視化するパターンです。MethodEven Y Segments にすることで、Y 座標が等間隔の位置でセグメントが切り出され、Maximum Segments でスライス枚数を制御できます。

  1. Sphere SOP を配置し、必要に応じて Convert SOP でポリゴンへ変換
  2. Resample SOP に接続し、MethodEven Y Segments に設定
  3. Maximum Segments をオンにし、Segments24 程度に設定してスライス枚数を制御
  4. Skin SOP / Sweep SOP 等の後段で輪切りエッジから面を再構築
  5. 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 も厳密に維持されます。

  1. Rectangle SOP / Sort SOP / もしくはコーナーのある任意のカーブを準備
  2. Resample SOP に接続し、Resample by Polygon Edge をオン
  3. Maximum Segment Length をオン、Length を 0.1 程度に設定してエッジを密に分割
  4. Maintain Last Vertex をオンにして終端頂点の脱落を防止
  5. 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 🎯


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 に渡す
  • MeasureAlong Arc に設定 — Along Chord は高速だが曲線部での均等性が落ちる

❌ Problem: Maximum Segments を設定したのに出力ポリゴン長がバラバラになる
✅ Solution:

  • Maximum Segment LengthMaximum Segments を同時にオンにしていないか確認 — 両方併用時は長さ上限優先で結果が元入力より短くなる
  • 均等数のセグメントだけが必要なら Maximum Segment Length をオフにして Maximum Segments 単独で使用 — 入力カーブ全長を均等数に分割
  • MethodEven X/Y/Z Segments になっていないか確認 — 軸方向均等は弧長均等とは結果が異なる

❌ Problem: 出力のポイント数が爆発的に増えて後段の処理が重い
✅ Solution:

  • Length を大きくして 1 セグメントあたりの長さを伸ばす、または Maximum Segment Length をオフにする
  • Maximum Segments をオンにして上限を明示的に低めの値で固定
  • Level of Detail を下げ、NURBS / Bezier 入力時の内部ポリゴン変換の解像度を抑える

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました