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

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

Sweep SOP で断面プリミティブをパスに沿って掃引する図

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

概要 📖 – パスに沿って断面を掃引

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 で向き制御

出力: パスに沿った掃引サーフェス

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Sweep Page 📁

グループ絞り込み 🎯

X-Section Group .xgrp 🧩
X-Section Group (断面グループ) — Cross-section 入力 (入力 1) のプリミティブのうち、掃引に使う対象を Pattern Matching で絞り込み
– 空欄なら入力 1 の全プリミティブを断面として使用
– 例: group0front* のような 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* を指定すると sweep0sweep1、… のように番号付きグループが生成

スキン出力モード .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 にすると断面間が面でつながり、チューブ状の閉じたサーフェスになります。

  1. 断面用の Circle SOP を 1 個配置 (これが掃引される cross-section)
  2. backbone 用の Line SOP を 1 本配置し、X 軸方向にライン形状を作る
  3. Sweep SOP の入力 1 に Circle SOP、入力 2 に Line SOP をそれぞれ接続
  4. Skin OutputOn に切替
  5. Geometry Viewer でラインに沿った円形チューブが生成されることを確認

Example 2: Twistでらせんリボン 🌀

Rectangle SOP (断面) + Line SOP (Backbone) → Sweep SOP (Twist=10) → Material SOP

矩形 (4 頂点) の断面を 1 本のラインに沿って掃引し、Twist パラメータを使って累積回転を加えることで、らせん状のねじれリボンを生成する用途です。Twist は累積するため、backbone の長さに応じて捻り角度が線形に増加し、DNA らせんやスパイラル装飾のような形状作成に向きます。

  1. 断面用の Rectangle SOP を 1 個配置 (4 頂点の矩形)
  2. backbone 用の Line SOP を 1 本配置し、Y 軸方向に長く伸ばす
  3. Sweep SOP に断面 / backbone を接続
  4. Twist10 程度を指定 (各頂点ごとに 10 度ずつ累積回転)
  5. Skin OutputOn に切替
  6. 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 をオンにすることで、断面プロファイルの向きを参照点へ向ける線で決定でき、ねじれや裏返りを防止しながら狙った姿勢の掃引を実現します。

  1. 断面用の Rectangle SOP を 1 個配置
  2. backbone 用に湾曲した曲線 (Bezier や NURBS の Curve) を 1 本配置
  3. Reference Points 用に、backbone と同じ点数の参照点群を別途準備 (例: 同じ backbone をコピーして位置をオフセット)
  4. Sweep SOP の入力 1 に断面、入力 2 に backbone、入力 3 に参照点群を接続
  5. Aim at Reference Points をオンに切替
  6. 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 🎯


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 CHOPnum_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 SOPConvert SOP で頂点数を揃える
  • 入力トポロジーがクック間で変化していないか確認 (動的に変わるなら Fast Sweep をオフ)
  • 条件を満たせない場合は Fast Sweep をオフにして通常 skinning に戻す

参考資料 📚

その他 🔗

公式リソース 📖

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