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

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

Rails SOP で複数レール曲線間に skin surface を生成する図

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

概要 📖 – 断面をレールに沿わせる

Rails SOPは、複数のレール曲線に沿って断面プリミティブを掃引し、レール間に面 (skin surface) を生成する SOPです。Pairs / First-Last などのスイープ順序、Use Vertex / Connection Vertices による断面頂点のレール固定、Use Direction による法線方向制御で、接続のねじれや面の反転 (flip) を細かく調整します。

主な用途 🎯

  • 複数のレール曲線 (backbone) 間に skin surface を張るで、Cross-section 入力の断面プリミティブをレール (Rails) 入力の曲線群に沿わせ、レール間をつなぐ面を 1 ノードで生成
  • Pairs / First-Last によるスイープ順序の制御で、ペア掃引 (1&2, 3&4, …) や最初と最後のレールを結ぶ閉ループ掃引へ切替
  • Connection Vertices + Use Vertex による頂点固定で、断面ポリゴンの特定頂点をレール 1 / レール 2 に確実に貼り付け、ねじれの少ない面を生成
  • Use Direction + Direction による法線方向の固定で、レールが交差して法線が反転する場面でも掃引方向を一定に保ち、面の裏返り (flip) を抑止
  • Stretch to Rails による断面の自動伸縮で、レール間の距離に合わせて断面ジオメトリを引き伸ばし、隙間のない面を生成
  • Create Output Groups + Group Name による Skin SOP 連携用グループ生成で、各 backbone ごとに自動でグループを切り、後段の Skin SOP で複雑サーフェスを組み上げる準備

データフロー 🔄

入力 1: 断面 (cross-section) プリミティブ + 入力 2: 複数のレール (rails / backbones) 曲線

Cycle Type に従って断面をレール上に配置

Connection Vertices / Scale / Roll / Use Direction で頂点位置・回転・方向を調整

出力: 隣接レール間をつなぐ skin surface

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

グループ絞り込み 🎯

X-Section Groups .xsectgrp 🧩
X-Section Groups (断面グループ) — Cross-section 入力のプリミティブのうち、掃引に使う対象を Pattern Matching で絞り込み
– 空欄なら入力 1 の全プリミティブを断面として使用
– 例: group0front* のような Pattern Matching 文字列を指定

Rail Groups .railgrp 🛤️
Rail Groups (レールグループ) — Rails 入力のプリミティブのうち、レール (backbone) として使う対象を Pattern Matching で絞り込み
– 空欄なら入力 2 の全プリミティブをレールとして使用

サイクル種別 🔄

Cycle Type (循環方式) — 断面プリミティブをレール上に並べる順序ロジックを指定します。

項目 内部名 説明
Cycle Primitives .cycle 入力 1 の断面プリミティブを順番に循環させて各レール頂点に配置 (頂点 0 にプリミティブ 0、頂点 1 にプリミティブ 1、…)

スイープ動作 🌉

Sweep along Pairs of Rails .pairs 👯
Sweep along Pairs of Rails (ペア単位スイープ) — オンにするとレール 1&2、3&4、5&6 のように 排他的なペア単位で掃引
– オフだとレール 1&2、2&3、3&4 のように 連続的な隣接ペアで掃引 (一般的なリボン状の連結面)

Sweep along First and Last Rail .firstl 🔁
Sweep along First and Last Rail (最初と最後を結ぶ) — オンにすると最後のレールと最初のレールの間にも断面を掃引
– チューブ状や閉じたリング状のサーフェスを作る際に有効

Stretch to Rails .stretch 📐
Stretch to Rails (レールに合わせ伸縮) — オンにすると断面ジオメトリをレール間の距離に合わせて引き伸ばす
– レール間隔が不均一な場合でも隙間のない skin を作りたい場面で有効
– オフだと断面の形状はそのまま保たれ、レールの位置に断面の頂点だけが寄せられる

頂点固定の制御 📌

Use Vertex .usevtx 📌
Use Vertex (頂点指定モード) — オンにすると断面ポリゴンの特定 2 頂点を Connection Vertices で指定し、それぞれをレール 1 とレール 2 に固定
– 例: 「断面の 1 番目の頂点をレール 1 に、7 番目の頂点をレール 2 に貼り付けたい」のように、貼り付け位置をユーザが明示する用途で使用
– オフだと断面の自動マッピングに任せる (頂点固定なし)

Connection Vertices .vertex 🔢
Connection Vertices (接続頂点) — 断面ポリゴンのうち、レール 1 / レール 2 に固定する 2 つの頂点インデックスを指定
Use Vertex がオンのときに有効
– インデックスは 0 始まり (例: 06)

形状の拡縮と回転 🎚️

Scale .scale 📏
Scale (拡縮率) — 掃引する断面に対して一律に適用される全体スケール
– レール間隔に対して断面が大きすぎる・小さすぎる場合の微調整に使用

Roll .roll 🔁
Roll (ロール角度) — 断面を backbone (レール) 軸まわりに回転させる角度 (度)
– 全ての断面に同じ回転量が適用 (累積回転ではない)
– 掃引後に面のテクスチャ方向や法線方向を回したい場合に使用

方向ベクトルの制御 🧭

Fix Flipping .noflip 🔃
Fix Flipping (反転補正) — Use Direction がオフでレール同士が交差し法線が反転 (flip) してしまう場面で、自動で反転を補正
– レール曲線がねじれる構図でも面の表裏が安定する

Use Direction .usedir 🧭
Use Direction (方向ベクトル使用) — オンにすると Direction で指定した固定ベクトルを掃引時の上方向 (up vector) として使用
– オフだとジオメトリの法線 (normals) を上方向として使用
– レールの法線が不安定な場面で 面のねじれを止める切り札

Direction .dir 📍
Direction (方向ベクトル) — Use Direction がオンのときに参照される固定方向ベクトル (X / Y / Z の 3 成分)
– 例: (0, 1, 0) を指定するとワールド Y 軸を一律 up vector に固定

出力グループ生成 🏷️

Create Output Groups .newg 🏷️
Create Output Groups (出力グループ生成) — オンにすると backbone (レール) 1 本ごとに出力プリミティブのグループを自動生成
– 後段の Skin SOP でグループ単位の skinning を行う前準備として有効

Group Name .railname 📝
Group Name (グループ名) — Create Output Groups で生成されるグループの名前を Pattern Matching で指定
– 例: rail* を指定すると rail0rail1、… のように番号付きグループが生成


実践アイデア 💡

Example 1: 2レール間にチューブ生成 🛢️

Circle SOP (断面) + Circle SOP × 2 (レール) → Merge SOP (レール側) → Rails SOP (Cross-section 入力 + Rails 入力) → Out SOP

断面に 1 つの円、レール側に 2 本のレール曲線を渡し、レール間をつなぐチューブ状サーフェスを生成する最小構成例です。Rails SOP は 2 入力で、入力 1 に断面、入力 2 にレール群を渡します。レール側は複数曲線を Merge SOP で 1 入力にまとめてから接続します。

  1. 断面用の Circle SOP を 1 個配置 (これが掃引される cross-section)
  2. レール用の Circle SOP / Line SOP などを 2 本作成し、X 軸方向に並べて配置
  3. レール側 2 本を Merge SOP で 1 入力にまとめる
  4. Rails SOP の入力 1 に断面用 Circle SOP を、入力 2 に Merge SOP をそれぞれ接続
  5. Sweep along Pairs of Rails はオフ (隣接ペア掃引) のまま、Geometry Viewer でレール間にチューブ状の面が生成されることを確認

Example 2: 頂点指定で断面を固定 📌

Rectangle SOP (断面) + Line SOP × 2 (レール) → Merge SOP → Rails SOP (Use Vertex=ON, Connection Vertices=0,2) → Material SOP

矩形 (4 頂点) の断面を 2 本のレール曲線に沿わせ、Use Vertex + Connection Vertices で「頂点 0 をレール 1 に、頂点 2 をレール 2 に」と明示的に固定して、断面の自動向き付けに任せずユーザが貼り付け方向を制御する用途です。リボン状の帯や、断面の特定エッジをレールに沿わせたい場合の基本テクニックです。

  1. Rectangle SOP を 1 個配置 (4 頂点の断面)
  2. Line SOP を 2 本作成して X 軸方向に並べる
  3. Rails SOP の入力 1 に Rectangle SOP、入力 2 に Merge SOP (2 本のレール) を接続
  4. Use Vertex をオンに切替
  5. Connection Vertices02 を指定 (向かい合う 2 頂点をそれぞれのレールに固定)
  6. Stretch to Rails をオンにしてレール間隔に合わせて断面が伸縮するように設定

Example 3: グループ生成で一括スキン 🏷️

Circle SOP (断面) + 複数 Line SOP (レール群) → Merge SOP → Rails SOP (Create Output Groups=ON, Group Name=rail*) → Skin SOP

複数の backbone (レール) ごとに自動でグループを切り、後段の Skin SOP でグループ単位の skinning を行う一括処理パターンです。Create Output Groups と Group Name を組み合わせると、レール本数が増えても後段で扱いやすいプリミティブグループ構造のままサーフェスを生成します。

  1. 断面用の Circle SOP を 1 個配置
  2. Line SOP を 3 本以上作成し、Merge SOP でレール群としてまとめる
  3. Rails SOP に断面 / レールを接続し、Create Output Groups をオンに
  4. Group Namerail* を指定 (rail0、rail1、… のように自動命名)
  5. 後段に Skin SOP を接続し、グループ単位での skinning を有効化
  6. Geometry Viewer で各 backbone 単位にサーフェスが識別されることを確認

関連オペレータ 🔗

類似機能OP 🔍

  • Sweep SOP — 断面 (cross-section) を単一の backbone (パス) に沿って掃引してサーフェスを生成 (Rails は複数レール間を結ぶ、Sweep は単一パス追従)
  • Skin SOP — 並べられた複数の face / curve から skin surface を生成 (Rails の出力 backbone 群を後段で skinning する典型構成)
  • Bridge SOP — プロファイル曲線・面の間に補間サーフェス (フィレットや遷移面) を生成 (Rails はレールに沿わせる、Bridge は端点間補間)

組み合わせ推奨OP 🔄

  • Skin SOP — Rails で生成した backbone 群 + 出力グループを後段で skinning して複雑サーフェスを構築
  • Merge SOP — Rails の入力 2 に渡すレール曲線群を 1 入力にまとめる前処理
  • Carve SOP — 既存サーフェスからレールとなる曲線を切り出して Rails の入力に渡す
  • Refine SOP — Rails で生成された高密度サーフェスを Unrefine オプションで簡素化

前処理・後処理SOP 🎯


Info CHOP情報 📊

Rails 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: 生成された skin surface が想定外にねじれる・面が裏返る
✅ Solution:

  • Use Direction をオンにして Direction ベクトル (例: (0, 1, 0)) で up vector を固定し、レールの法線に依存しない掃引にする
  • Use Direction を使えない構図 (レールが上下に曲がる等) では Fix Flipping をオンにして自動反転補正に任せる
  • 断面ポリゴンの頂点順序が逆向きの場合は前段に Convert SOPSort SOP を入れて頂点順序を揃える

❌ Problem: 断面が想定の頂点でレールに固定されない
✅ Solution:

  • Use Vertex をオンに切替
  • Connection Vertices に断面ポリゴンの実際の頂点インデックス (0 始まり) を指定 — 例: 4 頂点ポリゴンで対辺を固定したいなら 02
  • 断面の頂点数を Info CHOP の num_points で事前に確認し、指定インデックスが範囲内に収まることを確認

❌ Problem: レールが多数のときに面の組み合わせが想定と違う
✅ Solution:

  • Sweep along Pairs of Rails をオンにするとレール 1&2、3&4 のようなペア単位掃引、オフだと 1&2、2&3 のような連続隣接掃引になる仕様を確認
  • 閉じたリング状サーフェスを作りたい場合は Sweep along First and Last Rail をオンにして最初と最後のレールを結ぶ
  • 入力 2 のレール順序が想定どおりかを確認 (Merge SOP の入力順がそのまま掃引順になる)

❌ Problem: レール間隔が不均一で skin に隙間ができる
✅ Solution:

  • Stretch to Rails をオンにして断面ジオメトリをレール間距離に合わせて伸縮させる
  • 断面ジオメトリの解像度が低い場合は前段で Refine SOP をかけて頂点数を増やす
  • Use Vertex + Connection Vertices で固定頂点を明示し、自動マッピングのズレを排除

❌ Problem: 後段の Skin SOP でグループ単位の skinning ができない
✅ Solution:

  • Create Output Groups をオンにして backbone ごとのプリミティブグループを生成
  • Group Namerail* のように Pattern Matching 文字列を指定し、後段で参照しやすい命名にする
  • 後段の Skin SOP の Group パラメータで Rails が生成したグループ名を指定する

参考資料 📚

その他 🔗

公式リソース 📖

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