
概要 📖 – パスに沿って断面を掃引
Sweep SOPは、断面プリミティブを単一の backbone パスに沿って掃引し、リボン状やチューブ状のサーフェスを生成する SOPです。Cycle Type で配置順序、Use Vertex / Connection Vertex で頂点固定、Twist / Roll で回転制御を行い、面のねじれや反転 (flip) を細かく調整します。
主な用途 🎯
- 断面プリミティブをパス (backbone) に沿って掃引しサーフェスを生成する用途で、入力 1 の Cross-section と入力 2 の Backbone を組み合わせ、リボン状やチューブ状の面を 1 ノードで作成
- Cycle Type による配置順序の切替で、All Primitives at Each Point / One Primitive at a Time / Cycle Primitives の 3 方式から、断面プリミティブを backbone 上に並べるロジックを選択
- Use Vertex + Connection Vertex による頂点固定で、断面ポリゴンの特定頂点を backbone に貼り付け、ねじれの少ない面を生成
- Twist / Roll / Scale による形状の動的制御で、累積回転 (Twist)、一律回転 (Roll)、全体スケール (Scale) を切り分け、面のテクスチャ方向や断面サイズを微調整
- Skin Output モードによる面生成の有無切替で、Off / On / On with Auto Close から選び、閉じたパスでチューブの両端を塞ぐかどうかを制御
- Aim at Reference Points による参照点アライメントで、第 3 入力に渡した参照点群を使って断面の向きを明示的に制御し、自動法線では狙えない方向制御を実現
データフロー 🔄
入力 1: 断面 (Cross-section) プリミティブ + 入力 2: 単一の Backbone パス曲線 + 入力 3 (任意): 参照点 (Reference Points)
↓
Cycle Type に従い断面を backbone 上に配置
↓
Twist / Roll / Scale で形状調整、Use Vertex で頂点固定、Aim at Reference Points で向き制御
↓
出力: パスに沿った掃引サーフェス
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Sweep Page 📁
グループ絞り込み 🎯
X-Section Group .xgrp 🧩
– X-Section Group (断面グループ) — Cross-section 入力 (入力 1) のプリミティブのうち、掃引に使う対象を Pattern Matching で絞り込み
– 空欄なら入力 1 の全プリミティブを断面として使用
– 例: group0 や front* のような Pattern Matching 文字列を指定
Path Group .pathgrp 🛤️
– Path Group (パスグループ) — Backbone 入力 (入力 2) のプリミティブのうち、掃引パスとして使う対象を Pattern Matching で絞り込み
– 空欄なら入力 2 の全プリミティブを backbone として使用
Reference Group .refgrp 📍
– Reference Group (参照点グループ) — Reference 入力 (入力 3) のプリミティブのうち、参照点として使う対象を Pattern Matching で絞り込み
– Aim at Reference Points オン時に有効
– 空欄なら入力 3 の全プリミティブを参照点として使用
サイクル種別 .cycle 🔄
Cycle Type (循環方式) — 断面プリミティブを backbone 上に並べる順序ロジックを指定するメニューパラメータ。
| 項目 | 内部名 | 説明 |
|---|---|---|
| All Primitives at Each Point | .all |
Cross-section 入力のすべての断面プリミティブを、backbone の各頂点に重ねて配置 |
| One Primitive at a Time | .each |
上記と類似だが、変形が個別のプリミティブごとに適用される (全体ではなく単位ごと) |
| Cycle Primitives | .cycle |
入力 1 の断面プリミティブを順番に循環させて backbone の各頂点に配置 (頂点 0 にプリミティブ 0、頂点 1 にプリミティブ 1、…) |
反転と整合の補正 🔃
Angle Fix .angle 📐
– Angle Fix (角度補正) — 掃引時に発生し得る座屈状のねじれ (buckling twist) を自動補正
– backbone が急角度で曲がる箇所で断面が裏返るのを抑制
Fix Flipping .noflip 🔃
– Fix Flipping (反転補正) — 法線反転 (flip) によるねじれを補正
– backbone の法線が不安定な場面で面の表裏を安定させる
Remove Coincident Points on Path .skipcoin 🧹
– Remove Coincident Points on Path (重複点除去) — オンにすると backbone 上で重なっている点 (一致点) を無視
– 重複点が原因の掃引アーティファクトを抑制
参照点と頂点固定 📌
Aim at Reference Points .aimatref 🎯
– Aim at Reference Points (参照点アライメント) — オンにすると入力 3 の参照点を使って断面の向きを制御
– 各参照点と対応する backbone 頂点を結ぶ線で角度ベクトルを求め、断面プロファイルの方向を決定
– 入力 3 の参照点数と backbone の頂点数が 完全に一致している必要あり
Use Vertex .usevtx 📌
– Use Vertex (頂点指定モード) — オンにすると、Cross-section 側の特定頂点を backbone に固定するために Connection Vertex を有効化
– 「断面の n 番目の頂点を backbone に貼り付けたい」のように、貼り付け位置を明示する用途で使用
– オフだと断面の自動マッピングに任せる
Connection Vertex .vertex 🔢
– Connection Vertex (接続頂点) — 断面ポリゴンのうち、backbone に固定する頂点のインデックスを指定
– Use Vertex がオンのときに有効
– インデックスは 0 始まり
拡縮と回転 🎚️
Scale .scale 📏
– Scale (拡縮率) — 掃引する断面に対して一律に適用される全体スケール
– backbone の長さや断面サイズに対する微調整に使用
– scale 属性を持つ点を入力した場合、点属性で動的制御可能
Twist .twist 🌀
– Twist (累積ねじり角度) — 各断面を backbone 軸まわりに 累積的に回転させる角度 (度)
– 例: 5 を指定すると、頂点 0 の断面は 5 度、頂点 1 は 10 度、頂点 2 は 15 度…と進行に応じて累積
– らせん状やねじれリボンを作るのに有効
– twist 属性を持つ点を入力した場合、点属性で動的制御可能
Roll .roll 🔁
– Roll (一律ロール角度) — 全ての断面を backbone 軸まわりに同じ角度だけ回転 (累積しない)
– 掃引後にテクスチャ方向や法線方向を一括で回したい場合に使用
– roll 属性を持つ点を入力した場合、点属性で動的制御可能
Output Page 📤
グループ出力 🏷️
Create Groups .newg 🏷️
– Create Groups (グループ生成) — オンにすると backbone ごとに出力プリミティブのグループを自動生成
– 後段の Skin SOP でグループ単位の skinning を行う前準備として有効
Sweep Groups .sweepgrp 📝
– Sweep Groups (出力グループ名) — Create Groups で生成されるグループの名前パターンを指定
– 例: sweep* を指定すると sweep0、sweep1、… のように番号付きグループが生成
スキン出力モード .skin 🧥
Skin Output (スキン出力) — 掃引結果に skinning (面張り) を適用するかどうかを切替えるメニューパラメータ。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
出力に skinning を適用しない (断面プリミティブのみ配置) |
| On | .on |
出力に skinning を適用しサーフェスを生成 |
| On with Auto Close | .auto |
backbone のパス曲線が閉じている場合に、スキン後のメッシュも自動で閉じる (チューブの両端を塞ぐ用途) |
高速モード ⚡
Fast Sweep .fast ⚡
– Fast Sweep (高速掃引) — オンにすると最適化された skinning を使用し、出力速度を 2〜4 倍に高速化
– 引き換えに精度がやや低下
– 入力トポロジーがクック間で 一貫していること、各断面が 同じ頂点数であることが正しい動作の条件
実践アイデア 💡
Example 1: 円形断面でチューブ生成 🛢️
Circle SOP (断面) + Line SOP (Backbone) → Sweep SOP (Skin Output=On) → Out SOP
断面に小さな円、backbone に 1 本のラインを渡し、ラインに沿った円形チューブを生成する最小構成例です。Sweep SOP は 2 入力で、入力 1 に断面プリミティブ、入力 2 に backbone パスを渡します。Skin Output を On にすると断面間が面でつながり、チューブ状の閉じたサーフェスになります。
- 断面用の Circle SOP を 1 個配置 (これが掃引される cross-section)
- backbone 用の Line SOP を 1 本配置し、X 軸方向にライン形状を作る
- Sweep SOP の入力 1 に Circle SOP、入力 2 に Line SOP をそれぞれ接続
Skin OutputをOnに切替- Geometry Viewer でラインに沿った円形チューブが生成されることを確認
Example 2: Twistでらせんリボン 🌀
Rectangle SOP (断面) + Line SOP (Backbone) → Sweep SOP (Twist=10) → Material SOP
矩形 (4 頂点) の断面を 1 本のラインに沿って掃引し、Twist パラメータを使って累積回転を加えることで、らせん状のねじれリボンを生成する用途です。Twist は累積するため、backbone の長さに応じて捻り角度が線形に増加し、DNA らせんやスパイラル装飾のような形状作成に向きます。
- 断面用の Rectangle SOP を 1 個配置 (4 頂点の矩形)
- backbone 用の Line SOP を 1 本配置し、Y 軸方向に長く伸ばす
- Sweep SOP に断面 / backbone を接続
Twistに10程度を指定 (各頂点ごとに 10 度ずつ累積回転)Skin OutputをOnに切替- Geometry Viewer でラインに沿ったらせんリボンが生成されることを確認
Example 3: 参照点で断面の向き固定 🎯
Rectangle SOP (断面) + Line SOP (Backbone) + Point SOP (Reference Points) → Sweep SOP (Aim at Reference Points=ON) → Out SOP
backbone のカーブが大きく湾曲する構図で、断面の向きを自動法線ではなく参照点 (Reference Points) で明示的に制御する用途です。第 3 入力に backbone と同じ点数の参照点群を渡し、Aim at Reference Points をオンにすることで、断面プロファイルの向きを参照点へ向ける線で決定でき、ねじれや裏返りを防止しながら狙った姿勢の掃引を実現します。
- 断面用の Rectangle SOP を 1 個配置
- backbone 用に湾曲した曲線 (Bezier や NURBS の Curve) を 1 本配置
- Reference Points 用に、backbone と同じ点数の参照点群を別途準備 (例: 同じ backbone をコピーして位置をオフセット)
- Sweep SOP の入力 1 に断面、入力 2 に backbone、入力 3 に参照点群を接続
Aim at Reference Pointsをオンに切替- backbone の各頂点と参照点を結ぶ方向ベクトルで、断面の向きが決定されることを Geometry Viewer で確認
関連オペレータ 🔗
類似機能OP 🔍
- Rails SOP — 断面を 複数のレール曲線間に沿わせて面を生成 (Sweep は単一 backbone 追従、Rails は複数レール間の skin)
- Skin SOP — 並べられた複数の face / curve から skin surface を生成 (Sweep は単一パス追従の掃引、Skin はプリミティブ群間の面張り)
- Bridge SOP — プロファイル曲線・面の間に補間サーフェスを生成 (Sweep は backbone 追従、Bridge は端点間の補間面)
組み合わせ推奨OP 🔄
- Skin SOP — Create Groups で生成した backbone 単位のグループを後段で skinning し、より複雑なサーフェスを構築
- Merge SOP — 複数の断面プリミティブを 1 入力にまとめて Cycle Primitives モードで使用する前処理
- Carve SOP — 既存サーフェスから backbone となる曲線を切り出して Sweep の入力 2 に渡す
- Refine SOP — Sweep が生成した高密度サーフェスを後段で簡素化、または前段で backbone の頂点数を調整
- Material SOP — Sweep で生成したサーフェスにマテリアルを割り当てる後段処理
前処理・後処理SOP 🎯
- 前処理: Circle SOP、Line SOP、Profile SOP、Carve SOP、Refine SOP、Merge SOP
- 後処理: Skin SOP、Refine SOP、Transform SOP、Material SOP、Convert SOP、Out SOP
Info CHOP情報 📊
Sweep 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— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 生成されたサーフェスがねじれる・面が裏返る
✅ Solution:
Angle Fixをオンにして座屈状のねじれを自動補正Fix Flippingをオンにして法線反転による表裏の崩れを補正- それでも安定しない場合は
Aim at Reference Pointsをオンにし、入力 3 の参照点で断面の向きを明示的に制御
❌ Problem: Aim at Reference Points が効かない
✅ Solution:
- 第 3 入力に参照点群が接続されているか確認 (空欄では機能しない)
- 参照点の数が backbone の頂点数と完全一致しているか Info CHOP の
num_pointsで確認 Reference Groupで参照点グループを絞り込んでいないか、または絞り込み後の数が backbone と一致するか確認
❌ Problem: 断面が想定の頂点で backbone に固定されない
✅ Solution:
Use Vertexをオンに切替Connection Vertexに断面ポリゴンの実際の頂点インデックス (0 始まり) を指定- 断面の頂点数を Info CHOP の
num_pointsで事前確認し、指定インデックスが範囲内に収まることを確認
❌ Problem: Skin Output On with Auto Close でチューブの両端が塞がらない
✅ Solution:
- backbone のパス曲線が 閉じている (closed) ことを確認 — 開いたパスでは Auto Close は両端を塞がない仕様
- 前段で Convert SOP 等を使い backbone を閉じた形に変換
- 断面側 (Cross-section) も閉じたプリミティブを使用しているか確認
❌ Problem: Fast Sweep オンで出力が壊れる
✅ Solution:
- Cross-section 入力の各断面が 同じ頂点数を持つよう、前段で Refine SOP や Convert SOP で頂点数を揃える
- 入力トポロジーがクック間で変化していないか確認 (動的に変わるなら Fast Sweep をオフ)
- 条件を満たせない場合は
Fast Sweepをオフにして通常 skinning に戻す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Sweep SOP
- TouchDesigner公式ドキュメント – Rails SOP
- TouchDesigner公式ドキュメント – Skin SOP
- TouchDesigner公式ドキュメント – Bridge SOP

