
概要 📖 – 曲面の境界を縫合
Stitch SOPは、NURBS / Bezier サーフェスの境界を U または V のパラメトリック方向で縫合し、隣接する曲面プリミティブを連続面として接続する SOPです。Stitch メニューで対象単位を選び、Tolerance と Bias で基準曲面を決め、Tangent オプションを併用すると、頂点だけでなく接線も揃った滑らかな連続サーフェスに仕上げられます。
主な用途 🎯
- NURBS / Bezier サーフェスプリミティブの境界を縫合し、U または V のパラメトリック方向で隣接する曲面を連続面として接続
- Stitch (縫合単位) メニューによる対象選択で、入力プリミティブ全体を 1 列で縫うか、N 個ずつのグループに区切って縫うかを切り替え
- Tolerance (許容誤差) と Bias (基準側) の制御により、どちらの曲面を基準として残し、もう一方をどこまで変形して合わせるかを微調整
- Stitch (dostitch) と Tangent (dotangent) の併用で、境界の頂点を一致させるだけでなく、接線の傾きも揃えて滑らかな連続面 (G1 連続) を作る
- Left UV / Right UV / LR Width による縫合範囲指定で、各サーフェスの端ではなく中間位置を縫い目に指定したり、縫合する幅を左右独立に設定
- Skin SOP / Sweep SOP などで生成した複数曲面の後段クリーンアップとして、独立した曲面パッチを 1 枚の連続サーフェスに統合
データフロー 🔄
入力: NURBS / Bezier サーフェスプリミティブ群
↓
Group で対象を限定
↓
Stitch (縫合単位) で All / Groups of N を選択
↓
Direction で U / V のいずれかを指定
↓
Tolerance と Bias で接合の挙動を調整
↓
Left UV / Right UV / LR Width で縫合位置を指定
↓
Tangent オプションで接線連続性を確保
↓
出力: 境界が縫合された連続曲面
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象指定 🎯
Group .group 🎯
– Group (縫合対象グループ) — 縫合対象とするプリミティブを指定する Pattern 文字列
– 空欄の場合は入力されたすべてのプリミティブを縫合対象とする
– 例: 0-5 でプリミティブ番号 0〜5 のみ、!group_a で group_a を除外
– Pattern Matching 構文に従い、グループ名や数値範囲を組み合わせ可能
縫合の単位 .stitchop 🔢
Stitch (縫合の単位) — 入力プリミティブを「すべてを 1 列で縫合する」か「N 個ずつグループに分けて縫合する」かを選択するメニューです。
| 項目 | 内部名 | 説明 |
|---|---|---|
| All Primitives | .all |
入力されたすべてのプリミティブを一連の列として連続的に縫合する |
| Groups of N Primitives | .group |
N で指定した個数ずつのサブグループを作り、各サブグループ内で縫合する |
縫合範囲の追加設定 ⚙️
N .inc 🔢
– N (グループサイズ) — Stitch が Groups of N Primitives のときに、何個ずつのサブグループで縫合するかを決める整数値
– 例: N = 2 なら入力プリミティブを 2 つずつのペアにして縫合
– Stitch が All Primitives のときは無視される
Wrap Last to First .loop 🔁
– Wrap Last to First (末尾を先頭に接続) — オンにすると、入力の最後のプリミティブの終端を最初のプリミティブの始端に縫合し、ループ状の閉じた曲面を作る
– 入力が 1 プリミティブしかない場合は、そのプリミティブの両端同士が縫合され単独でリング状になる
– 円筒・トーラスのような閉じたサーフェスを作る際に有効
縫合方向 .dir 🧭
Direction (縫合方向) — サーフェスプリミティブの U / V いずれのパラメトリック方向で境界を縫合するかを選択するメニューです。
| 項目 | 内部名 | 説明 |
|---|---|---|
| in U | .ujoin |
サーフェスの U 方向 (横方向) の境界エッジで縫合 |
| in V | .vjoin |
サーフェスの V 方向 (縦方向) の境界エッジで縫合 |
許容誤差と基準側 📏
Tolerance .tolerance 📐
– Tolerance (許容誤差) — 縫合の際に入力サーフェスをどこまで変形させてよいかを決める許容誤差
– 小さい値ほど入力曲面に対する変形が少なく、元形状を維持しやすい
– 大きい値ほど縫合先に合わせて曲面を強く変形し、確実に境界をつなぐが元形状は崩れやすい
– 単位はシーン空間。境界間の距離スケールに合わせて 0.001 ~ 0.1 程度から試すのが目安
Bias .bias ⚖️
– Bias (縫合の基準側) — 縫合する 2 つの曲面のうち、どちらを「動かさない側 (基準)」として残すかを決める 0 〜 1 のスライダ
– Bias = 0 で最初のプリミティブが基準 (動かない)、もう一方が変形してこちらに合わせる
– Bias = 1 で最後のプリミティブが基準
– 中間値で両方の曲面を比率に応じて歩み寄らせる
左右の縫合位置 📍
Left UV .leftuv ⬅️
– Left UV (左サーフェスの縫合開始点) — 左側プリミティブのパラメトリック座標 (U または V) のどの位置から縫合を始めるかを 0 〜 1 で指定
– 0 でサーフェスの一方の端、1 で反対端、0.5 で中央
– サーフェスの端ではなく中央付近を縫い目にしたい場合に活用
Right UV .rightuv ➡️
– Right UV (右サーフェスの縫合終了点) — 右側プリミティブのパラメトリック座標 (U または V) のどの位置で縫合を終えるかを 0 〜 1 で指定
– Left UV と対称に、右側サーフェスの縫合位置を独立に決められる
– 通常は Left UV = 1, Right UV = 0 で「左の終端」と「右の始端」を接続する
LR Width .lrwidth 📏
– LR Width (左右の縫合幅) — 縫合範囲の幅を左右独立に指定する 2 要素ベクトル
– 第 1 値が左サーフェスの縫合幅、第 2 値が右サーフェスの縫合幅
– 小さい値で境界線のみを縫い、大きい値で接合部周辺を広く融合させる
縫合動作の切替 🪡
Stitch .dostitch 🪡
– Stitch (頂点の縫合) — オンにすると、各プリミティブの境界に当たる 1 列の制御点を移動させて、隣接プリミティブの対応する 1 列と位置を一致させる
– 頂点位置を揃えるだけで接線は揃わないため、結果は G0 連続 (位置連続) になる
– デフォルトはオン。接合の基本動作
Tangent .dotangent 📈
– Tangent (接線の整合) — オンにすると、縫合点の隣の制御点列も移動させて、両側サーフェスの接線方向を揃える
– 結果は G1 連続 (位置 + 接線連続) となり、縫い目で曲面が滑らかにつながる
– 高品質なシェーディングを得たいときに有効
エッジ仕上げ ✂️
Sharp Partials .sharp 🔻
– Sharp Partials (部分縫合の角を鋭くする) — オンにすると、縫合範囲がサーフェス全体をカバーせず途中で終わる場合に、縫合の端を丸めずに鋭い角として残す
– 部分的に縫合した境界の終端形状をシャープに保ちたいときに有効
– オフだと、縫合範囲の端で曲面が緩やかに移行する
Fixed Intersection .fixed 🔒
– Fixed Intersection (交点を固定) — Tangent がオンのときに、両側サーフェスの接線が交わる交点をどちら側で固定するかを切り替えるオプション
– オフ: 両側の接線スロープが歩み寄って中間で接合 (交点が中間に動く)
– オン: 一方の接線を固定し、もう一方を寄せて接合 (交点が固定側に張り付く)
接線スケール 📐
LR Scale .lrscale 📐
– LR Scale (左右の接線スケール) — Tangent がオンのときに、両サーフェスの接線方向の伸び (スケール) を左右独立に調整する 2 要素ベクトル
– 第 1 値が左サーフェスの接線スケール、第 2 値が右サーフェスの接線スケール
– 値を大きくすると縫い目周辺の曲率が緩やかになり、小さくすると急峻な接合になる
– 接合付近の曲面の張り具合を微調整する仕上げパラメータ
実践アイデア 💡
Example 1: Skin 生成面の縫合 🧵
Curve 群 → Skin SOP (複数曲面パッチ生成) → Stitch SOP (Direction=U, Tangent=ON) → Convert SOP (Polygon 化)
Skin SOP は複数の曲線から独立した曲面パッチを生成しますが、隣接パッチの境界は別々のサーフェスのままになります。Stitch SOP を後段に挟むことで境界を縫合し、Tangent オプションで接線も揃えると、シェーディングが滑らかな連続サーフェスに仕上がります。最終的に Convert SOP でポリゴン化して下流レンダリングに渡すのが典型フロー。
- 複数本の Line SOP や NURBS Curve でプロファイル曲線群を用意
- Skin SOP で曲線群から複数の曲面パッチを生成
- Stitch SOP を接続し、
Directionをin Uに設定して U 方向の境界を縫合対象にする Tangentをオンにし、LR Scaleを(1, 1)程度に保ったまま接線連続を確保- 後段に Convert SOP を接続して Polygon 化、Geometry Viewer でシェーディングの破綻がないか確認
Example 2: 閉じたループ曲面 🔄
Profile 曲線 → Sweep SOP (部分弧で曲面生成) → Stitch SOP (Wrap Last to First=ON) → Material SOP
円筒やトーラス状の閉じたサーフェスを作る際、Sweep SOP の出力は通常両端が独立しています。Stitch SOP の Wrap Last to First オプションをオンにして末尾と先頭を縫合することで、シームレスに閉じたループ曲面が完成します。Direction は閉じる方向に合わせて U / V を選び、Bias で歪みの寄せ方を制御するのがコツ。
- Profile SOP でループの断面を作成
- Sweep SOP で断面を曲線に沿って掃引し曲面を生成
- Stitch SOP を接続し、
Wrap Last to Firstをオンに Directionを閉じたい方向 (U または V) に設定、Toleranceを境界誤差より大きくTangentをオンにして縫い目の継ぎ目を滑らかにし、Material SOP でシェーディングを確認
Example 3: 回転サーフェス連結 🎨
Curve A + Curve B → Revolve SOP (2 つの軸で曲面生成) → Merge SOP → Stitch SOP (Bias で基準調整) → Out SOP
Revolve SOP で異なる曲線から生成した 2 つの曲面を、Merge してから Stitch でつなげる用途。Bias を使ってどちらの曲面を基準として残すかを制御することで、デザイン上重要な曲面は変形させずに片側のみを寄せて接合できます。プロダクトデザインや建築モデルで「片方の形状を厳密に保つ」要件があるときに有効。
- 基準として残したい Line SOP の曲線 A を準備
- もう一方の接続側として曲線 B を準備
- それぞれ Revolve SOP で回転サーフェス化し、Merge SOP で 1 入力に統合
- Stitch SOP を接続し、基準として残したい側に応じて
Biasを0(最初の入力固定) または1(最後の入力固定) に Tangentをオンにして滑らかに接合し、Geometry Viewer で基準側が変形していないことを確認
関連オペレータ 🔗
類似機能OP 🔍
- Polystitch SOP — ポリゴンメッシュ専用の境界縫合 SOP (Stitch は NURBS / Bezier サーフェス専用、Polystitch はポリゴン専用で対象が分かれる)
- Join SOP — 曲線同士の端点を連結 (Stitch はサーフェス境界の縫合、Join は曲線の端点接続で次元が異なる)
組み合わせ推奨OP 🔄
- Skin SOP — 複数の曲線から曲面パッチ群を生成する前段。生成された独立パッチを Stitch で縫合し連続面化
- Sweep SOP — プロファイル曲線を別曲線に沿って掃引し曲面化する前段。Wrap Last to First で閉じたループ曲面に縫合可能
- Revolve SOP — 回転サーフェスを生成する前段。複数の回転曲面を Stitch で連結
- Convert SOP — 縫合後の連続サーフェスをポリゴン化して下流レンダリングへ渡す後段
- Refine SOP — 縫合前に制御点の解像度を増やしてより滑らかな縫合を可能にする前処理
- Group SOP — Group パラメータで参照するプリミティブグループを事前生成
前処理・後処理SOP 🎯
- 前処理: Skin SOP、Sweep SOP、Revolve SOP、Refine SOP
- 後処理: Convert SOP、Facet SOP、Primitive SOP、Transform SOP
Info CHOP情報 📊
Stitch 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— 直近のクック所要時間 (ミリ秒)。Toleranceや入力プリミティブ数が大きいほど時間が伸びるcook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 境界が縫合されない・隙間が残る
✅ Solution:
Toleranceを徐々に大きくして、境界間の実距離より大きい値に設定する (シーンスケールに依存)- 入力が本当に NURBS / Bezier サーフェスか確認 — ポリゴンの場合は Polystitch SOP を使う (Stitch はポリゴンに作用しない)
Directionが境界の向きと合っているか確認 — U で縫合したい境界を V に設定していると無反応
❌ Problem: 縫合後に曲面が歪んで元形状が崩れる
✅ Solution:
Toleranceを小さくして、入力サーフェスへの変形を最小化Biasを0または1に振り、基準として保持したい側を完全固定して片側のみ変形させるTangentをオフにし、まずStitch (dostitch)のみで位置だけ揃えて様子を見る
❌ Problem: 縫い目で接線が折れて見える (G0 連続)
✅ Solution:
Tangentをオンにして G1 連続 (接線も連続) になるよう設定LR Scaleを(1, 1)前後に保ち、左右の接線スケールを均等にして縫い目の張りを揃えるFixed Intersectionをオンにして接合点の挙動を安定させる、または逆にオフにして両側を中間で歩み寄らせる
❌ Problem: 閉じたループ曲面で継ぎ目が見える
✅ Solution:
Wrap Last to Firstをオンにして末尾と先頭を縫合対象に追加Tangentをオンにし接線連続を確保、Toleranceを継ぎ目位置の誤差より十分大きく- 前段で Refine SOP を使い制御点解像度を上げてから Stitch に渡すと縫い目が目立ちにくい
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Stitch SOP
- TouchDesigner公式ドキュメント – Polystitch SOP
- TouchDesigner公式ドキュメント – Skin SOP
- TouchDesigner公式ドキュメント – Pattern Matching

