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

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

Polystitch SOP のポリゴン境界縫合機能を示す図

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

概要 📖 – ポリゴン境界を縫合

Polystitch SOPは、隣接ポリゴンの境界エッジ同士を許容距離内で自動的に縫合し、メッシュ表面の細い隙間を閉じる SOPです。Max Dist to Stitch で接続条件を制御し、Corner Points や Automatically Find Corners で本来の角を保持しながら、境界破綻のあるメッシュをクリーンな連続面に修復します。

主な用途 🎯

  • 隣接ポリゴン間の境界エッジを自動的に縫合し、メッシュ表面に空いた細い隙間 (ギャップ) を 1 ノードで閉じてシームレスな連続面を作る
  • Max Dist to Stitch (tol3d) による許容距離の制御で、どこまで離れたエッジを「同じ境界」とみなして縫うかを微調整し、想定外の縫合を防ぐ
  • Automatically Find Corners (findcorner) + Corner Angle (angle) によるコーナー保持で、本来折れ曲がるべき角を縫合で丸めないように境界形状の特徴を維持
  • Corner Points (corners) による任意点のコーナー指定で、自動検出に頼らず特定の境界ポイントを明示的に「折れ」として残し、デザイン上の重要な角を保護
  • Consolidate Points (consolidate) による重複点の統合で、縫合後に境界上で複数の点が同一位置に重なった場合を 1 点にまとめ、後段 SOP の処理効率を向上
  • Boolean SOP / Convert SOP などの前段クリーンアップとして、輸入メッシュや手続き生成メッシュの境界破綻を縫合で修復してから複雑な演算に渡す

データフロー 🔄

入力: 境界に隙間を持つポリゴンメッシュ

Polygons to Stitch で対象範囲を指定

Corner Points / Automatically Find Corners で保持したい角を確定

Max Dist to Stitch の距離内にあるエッジ同士を自動縫合

Consolidate Points で重複点を統合

出力: 境界が縫合され隙間が閉じたメッシュ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

対象ポリゴン 🎯

Polygons to Stitch .stitch 🎯
Polygons to Stitch (縫合対象ポリゴン) — 縫合の検討対象とするポリゴンを指定する Pattern 文字列
– 空欄の場合は入力メッシュ内の全ポリゴンを対象とする
– 例: 0-9 でポリゴン番号 0〜9 のみ、!*group_agroup_a 以外を対象とする
Pattern Matching 構文に従い、グループ名や数値範囲を組み合わせ可能

コーナー点指定 📍

Corner Points .corners 📍
Corner Points (コーナー点リスト) — 境界エッジを縫合する際に「折れ」(コーナー) として扱い、丸めずに保持したい点番号のリスト
– 例: 0 5 12 でポイント番号 0 / 5 / 12 をコーナーとして固定
– 自動検出 (Automatically Find Corners) と併用可能で、自動検出に加えてここで指定した点も強制的にコーナー扱いとなる
– デザイン上重要な角を縫合で丸められたくないときに明示指定する

縫合距離の指定 📏

Max Dist to Stitch .tol3d 📏
Max Dist to Stitch (最大縫合距離) — 2 本のエッジを「同じ境界」とみなして縫合する際に許容される、エッジ間の最大距離
– 小さいほど厳密に近接したエッジのみ縫合され、大きいほど離れたエッジも結合対象になる
– 単位はシーン空間 (ワールド単位)。デフォルトは小さな値で、まずは 0.010.1 程度から試して徐々に拡大するのが定石
– 大きすぎる値を入れると本来別の面同士が誤って結合され、意図しないトポロジー変化が起きる

点の統合 🔗

Consolidate Points .consolidate 🔗
Consolidate Points (重複点の統合) — オンにすると、縫合後に同一境界上で同じ位置にスナップされた複数の点を 1 つの点に統合する
– 統合は 境界エッジ沿いのみで行われ、境界を跨ぐ点同士は統合されない
– 後段の SOP (Convert SOP, Boolean SOP 等) の処理効率を上げる目的で使用し、重複点が残ったまま下流で扱うとトポロジー判定が乱れる原因になる
– デフォルトはオフ。縫合だけで足り、点の正規化が不要な場合はそのままでよい

自動コーナー検出 🧭

Automatically Find Corners .findcorner 🧭
Automatically Find Corners (コーナーの自動検出) — オンにすると、境界エッジが指定角度以上で方向転換する点を自動的にコーナーとして識別し、縫合で丸められないように保持する
– 自動検出されたコーナーは、Corner Points で手動指定された点リストに追加される形で扱われる
– 矩形や多角形のように明確な角を持つメッシュで角を維持したいときに有効

Corner Angle .angle 📐
Corner Angle (コーナー判定角) — 境界エッジが何度以上方向転換したらコーナーとみなすかの閾値 (度)
Automatically Find Corners がオンのときに使用され、この角度を超える折れがある点は強制的にコーナーとなる
– 小さく (例: 30) すると緩い曲がりでもコーナー扱いになり、大きく (例: 90) するとはっきりした角しかコーナーにならない


実践アイデア 💡

Example 1: メッシュ隙間の縫合修復 🧵

File In SOP (破損メッシュ) → Polystitch SOP (Max Dist=0.01, Consolidate=ON) → Facet SOP (法線再計算) → Out SOP

外部から読み込んだポリゴンメッシュの境界に開いた小さな隙間を Polystitch SOP で自動的に縫合し、後段の Facet SOP で法線を再計算してクリーンな連続面に整える基本フローです。読み込んだメッシュは頂点の精度誤差で境界が微妙にズレることがあり、Polystitch でその誤差吸収を行ってから下流処理に渡すのが定石。

  1. File In SOP で OBJ / FBX 等の外部メッシュを読み込む
  2. Polystitch SOP を接続し、Max Dist to Stitch0.01 程度から試す
  3. Consolidate Points をオンにして、縫合後の境界上重複点を統合
  4. 後段に Facet SOP を接続し法線を再計算してシェーディングを安定化
  5. Geometry Viewer で境界の隙間が閉じているか、トポロジーが破綻していないかを確認

Example 2: 演算前の境界整形 🧹

Sphere SOP + Box SOP (各々を Convert で Polygon 化) → Merge SOP → Polystitch SOP → Boolean SOP

Boolean SOP は入力メッシュの境界に隙間や重複点があると Union / Intersect が安定しません。前段に Polystitch SOP を挟んで境界を整えてから Boolean に渡すことで、ブール演算の失敗や穴あきの発生を防げます。Corner Angle を 90 度近くに設定して箱型の角を保持するのがポイント。

  1. Convert SOP で入力メッシュを Polygon 種別に統一
  2. Merge SOP で複数メッシュを 1 入力にまとめる
  3. Polystitch SOP を接続し、Automatically Find Corners をオン、Corner Angle85 度程度に設定
  4. Max Dist to Stitch を入力スケールに合わせて調整 (世界座標で 1.0 単位のメッシュなら 0.0010.01)
  5. 後段の Boolean SOP で Union / Intersect を実行し、結果に穴や破綻が出ないか確認

Example 3: 手続き生成メッシュの境界整形 🛠️

Grid SOP + 変形処理 → Carve SOP (一部削除) → Polystitch SOP (Corner Points で角指定) → Material SOP

Grid SOP を Carve や Delete で一部削り取った手続きメッシュは境界がギザギザになりがちです。Polystitch SOP に Corner Points を明示指定して残したい角を保護しつつ、自然な縫合で境界を整形する用途。デザイン上重要な特定ポイントを手動でコーナー登録できるのが Polystitch の強み。

  1. Carve SOP や Delete SOP でメッシュの一部を削除し、境界に意図的な切れ目を作る
  2. 保持したいデザイン上の角に該当するポイント番号を Group SOP 等で特定
  3. Polystitch SOPCorner Points に該当点番号を入力 (例: 0 8 16 24)
  4. Max Dist to Stitch を境界誤差より少し大きい値に設定して縫合
  5. Consolidate Points をオンにして仕上げ、Material SOP に渡してシェーディングを確認

関連オペレータ 🔗

類似機能OP 🔍

  • Stitch SOP — NURBS / Bezier サーフェスの境界を縫合する spline 版 (Polystitch はポリゴン専用、Stitch はスプライン専用)
  • Facet SOP — 重複点・極小プリミティブの整理 (Polystitch は境界縫合、Facet は法線・点の正規化)

組み合わせ推奨OP 🔄

  • Convert SOP — 前段で NURBS / Bezier をポリゴンに変換し Polystitch の入力対象にする
  • Merge SOP — 複数の独立メッシュを 1 入力にまとめてから Polystitch で境界を縫合
  • Boolean SOP — 後段の Union / Intersect 演算が不安定にならないよう前段で境界を整える
  • Group SOP — Polygons to Stitch / Corner Points で参照するグループや点リストを事前生成
  • Facet SOP — 縫合後に法線を再計算しシェーディング破綻を防ぐ後処理

前処理・後処理SOP 🎯


Info CHOP情報 📊

Polystitch 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 — 直近のクック所要時間 (ミリ秒)。Max Dist to Stitch や入力点数が大きいほど時間が伸びる
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 境界が縫合されない・隙間が残る
✅ Solution:

  • Max Dist to Stitch の値を徐々に大きくして、隙間の実寸を超える許容距離に設定する (シーンスケールに依存)
  • 入力メッシュが本当にポリゴンか確認 — NURBS / Bezier の場合は前段で Convert SOP で Polygon に変換
  • Polygons to Stitch の Pattern を確認 — 対象範囲が狭すぎると縫合対象のエッジ自体が選ばれていない可能性がある

❌ Problem: 意図しない場所まで縫合されてしまう
✅ Solution:

  • Max Dist to Stitch を小さくして、近接エッジのみが縫合対象になるよう絞り込む
  • Polygons to Stitch の Pattern で対象ポリゴンを限定し、別パーツのメッシュが結合されないようにする
  • メッシュを Group SOP で分けて、それぞれ別の Polystitch SOP で個別に縫合してから Merge SOP で再合流

❌ Problem: 本来の角 (コーナー) が丸まってしまう
✅ Solution:

  • Automatically Find Corners をオンにし、Corner Angle3060 度程度に下げて緩い折れもコーナーとして保持する
  • Corner Points に明示的に保持したい点番号を列挙 (例: 0 8 16 24) して自動検出を補完する
  • 前段の Group SOP で重要な角の点を Point Group として作成し、その番号を Corner Points に流す方法が再利用しやすい

❌ Problem: 縫合後にシェーディングがおかしい
✅ Solution:

  • 後段に Facet SOP を追加し法線を再計算 (Compute Normals オン)
  • Consolidate Points をオンにして境界上の重複点を統合し、法線計算の不安定要因を取り除く
  • Geometry Viewer の Wireframe / Normals 表示で、縫合部に法線の反転や歪みが起きていないか確認

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました