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

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

Cap SOP で開いた端面をキャップで閉じる図

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

概要 📖 – 開口部を平面か曲面で塞ぐ

Cap SOPは、開いた端面を平面または丸みのある形状で閉じて、チューブやサーフェスの開口部を塞ぐ SOPです。U 方向と V 方向のそれぞれで始端・終端のキャップ形状を選び、none(なし)/facet(面)/share(共有面)/round(丸み)/tangent(接線) の 5 種類から自由に組み合わせできます。

主な用途 🎯

  • NURBS チューブやメッシュの開いた端面を平面または丸みのある形状で塞ぐ
  • U 方向と V 方向のそれぞれで個別にキャップを有効化し、始端と終端を別形状に切替
  • 5 種類のキャップ形状(none/facet/share/round/tangent) からプリミティブの見た目を選択
  • Divisions と Scale で丸みキャップの解像度と高さを調整し、後段のレンダリング品質を確保
  • Preserve NURB Shape で元の NURBS サーフェスを変形させずに端面だけ閉じる

データフロー 🔄

入力: 開いた端を持つ SOP (Tube / Sweep / Revolve / Skin など)

Group で対象プリミティブを絞込

U/V それぞれの始端・終端にキャップ形状を割当

出力: 端面が閉じたポリゴンまたは NURBS サーフェス

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📋

対象グループ .group 🎯

キャップを適用する対象プリミティブを指定

項目 内部名 説明
Group .group Group (対象グループ) — キャップを適用したい Group SOP で作成済みのプリミティブグループ名を指定します。空欄の場合は入力 SOP の全プリミティブが対象になります。

U Caps Page 📐

U方向の形状保持 .pshapeu 🛡️

Preserve NURB Shape U .pshapeu 🛡️
Preserve NURB Shape U (U方向の形状保持) をオンにすると、NURBS サーフェスをキャップする際に、キャップ位置でクランプ処理を行って元のサーフェス形状を保ったまま閉じます
– オフの場合はキャップ追加によって元の NURBS 制御点配置が変わり、サーフェスがわずかに変形する可能性があります

U方向の始端キャップ .firstu 🔹

U 方向の始端に適用するキャップ形状を選択

項目 内部名 説明
No End Cap .none この端は閉じずに開いたまま (キャップなし)
End Cap Faceted .facet 新しい面 (フェース) を作って閉じる。元プリミティブとは独立した点を使う
End Cap Shared .share 新しい面 (フェース) を作って閉じる。元プリミティブの点を共有する
End Cap Rounded .round 丸い (ドーム状) のキャップを作る。同心円メッシュで弾丸形状になる
End Cap Tangential .tangent 元サーフェスの接線方向に沿うように丸みキャップを作る

U始端の分割と高さ .divsu1_scaleu1 📏

Divisions .divsu1 🔢
Divisions (分割数) — U 方向始端の丸みキャップを構成する同心円の本数を指定
– 値を増やすほどキャップ表面の滑らかさが向上しますが、ポリゴン数も増えます

Scale .scaleu1 📐
Scale (高さ倍率) — 丸みキャップのドーム高さを正負の値で調整
– 正の値で外側に膨らみ、負の値で内側にへこみます

U方向の終端キャップ .lastu 🔸

U 方向の終端に適用するキャップ形状を選択

項目 内部名 説明
No End Cap .none 終端は閉じずに開いたまま (キャップなし)
End Cap Faceted .facet 終端側に独立した点で構成される面を作って閉じる
End Cap Shared .share 終端側に元プリミティブと点を共有する面を作って閉じる
End Cap Rounded .round 終端側に丸い (ドーム状) のキャップを作る
End Cap Tangential .tangent 終端側で接線方向に沿う丸みキャップを作る

U終端の分割と高さ .divsu2_scaleu2 📏

Divisions .divsu2 🔢
Divisions (分割数) — U 方向終端の丸みキャップを構成する同心円の本数を指定
– 始端と独立して値を設定でき、片側だけ高解像度にすることも可能

Scale .scaleu2 📐
Scale (高さ倍率) — 終端の丸みキャップのドーム高さを正負の値で調整
– 正で外側に膨らみ、負で内側にへこむ挙動は始端と同じ


V Caps Page 📐

V方向の形状保持 .pshapev 🛡️

Preserve NURB Shape V .pshapev 🛡️
Preserve NURB Shape V (V方向の形状保持) をオンにすると、V 方向のキャップ位置でクランプ処理を行って元の NURBS サーフェス形状を保ちます
– U 方向の Preserve NURB Shape U と独立して設定でき、片方向だけ形状保持することも可能

V方向の始端キャップ .firstv 🔹

V 方向の始端に適用するキャップ形状を選択

項目 内部名 説明
No End Cap .none V 方向の始端を閉じずに開いたまま (キャップなし)
End Cap Faceted .facet V 始端側に独立した点で構成される面を作って閉じる
End Cap Shared .share V 始端側に元プリミティブと点を共有する面を作って閉じる
End Cap Rounded .round V 始端側に丸い (ドーム状) のキャップを作る
End Cap Tangential .tangent V 始端側で接線方向に沿う丸みキャップを作る

V始端の分割と高さ .divsv1_scalev1 📏

Divisions .divsv1 🔢
Divisions (分割数) — V 方向始端の丸みキャップを構成する同心円の本数を指定
– 値を増やすほどキャップ表面が滑らかになる代わりにポリゴン数が増えます

Scale .scalev1 📐
Scale (高さ倍率) — V 始端の丸みキャップのドーム高さを正負の値で調整
– 正で外側へ、負で内側へ凹む挙動

V方向の終端キャップ .lastv 🔸

V 方向の終端に適用するキャップ形状を選択

項目 内部名 説明
No End Cap .none V 方向の終端を閉じずに開いたまま (キャップなし)
End Cap Faceted .facet V 終端側に独立した点で構成される面を作って閉じる
End Cap Shared .share V 終端側に元プリミティブと点を共有する面を作って閉じる
End Cap Rounded .round V 終端側に丸い (ドーム状) のキャップを作る
End Cap Tangential .tangent V 終端側で接線方向に沿う丸みキャップを作る

V終端の分割と高さ .divsv2_scalev2 📏

Divisions .divsv2 🔢
Divisions (分割数) — V 方向終端の丸みキャップを構成する同心円の本数を指定
– 始端と独立して設定可能

Scale .scalev2 📐
Scale (高さ倍率) — V 終端の丸みキャップのドーム高さを正負の値で調整
– 始端の Scale と独立


実践アイデア 💡

Example 1: チューブの両端を塞ぐ 🥫

Tube SOP → Cap SOP (First U=facet, Last U=facet) → Render TOP

Tube SOP で生成した開いた円柱の両端を Cap SOP の U 方向 facet モードで閉じて、密閉された円筒モデルを 1 ノードで完成させる基本フロー。

  1. Tube SOP を配置し、Height と Radius で円筒の寸法を指定
  2. Cap SOP を接続し、First U CapLast U Cap をどちらも facet に設定
  3. 両端が平面で閉じた密閉円柱が出力される

Example 2: ドーム形状を作る 🏔️

Tube SOP → Cap SOP (First U=round, Divisions=8) → Material

Tube SOP の片端だけを Cap SOP の rounded モードで丸めて、ドーム形状のモニュメントや弾丸風のオブジェクトを生成する。Divisions を調整して滑らかさを制御する。

  1. Tube SOP を配置 (Radius は均一、Height は適度に)
  2. Cap SOP を接続、First U Capround に、Last U Capfacet
  3. Divisions を 8〜16 に上げてドームを滑らかに
  4. Scale でドームの高さを調整してプロポーションを決定

Example 3: 回転体の端面を閉じる 🍶

Profile SOP → Revolve SOP (部分回転) → Cap SOP → Convert SOP

Revolve SOP で 360 度未満の部分回転を行うと両端が開いたサーフェスが生成される。Cap SOP の V 方向 facet で開口部を閉じて、半割の壺やシェルのような形状を仕上げる。

  1. Profile SOP で輪郭曲線を作成
  2. Revolve SOP で 180 度や 270 度の部分回転を行い、両端が開いた状態にする
  3. Cap SOP を接続し、First V CapLast V Capfacet
  4. Convert SOP で NURBS をポリゴンに変換して後段のレンダリングへ渡す

関連オペレータ 🔗

類似機能OP 🔍

組み合わせ推奨OP 🔄

  • Tube SOP — 両端が開いた円筒の生成元として最頻出の組合せ
  • Sweep SOP — スイープ生成サーフェスの両端処理
  • Revolve SOP — 部分回転で生じる開口部の蓋
  • Skin SOP — 曲線群から張ったスキンの端面処理
  • Convert SOP — キャップ済み NURBS をポリゴンに変換して後段へ
  • Group SOPGroup パラメータで対象プリミティブを絞込

前処理・後処理SOP 🎯


Info CHOP情報 📊

Cap 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 — 直近のクック所要時間 (ミリ秒)。Divisions を上げると増加
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

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

よくある問題と解決策 🔧

❌ Problem: キャップが追加されない
✅ Solution:

  • First U Cap / Last U Cap / First V Cap / Last V Cap がすべて none になっていないか確認
  • Group パラメータで指定したプリミティブグループが入力 SOP に存在するか確認 (タイプミスや空グループでは何も処理されない)
  • 入力 SOP のサーフェスが本当に開いた端を持っているか確認 (既に閉じているメッシュには追加の面は作られない)

❌ Problem: NURBS サーフェスの形が変わってしまう
✅ Solution:

  • Preserve NURB Shape U / Preserve NURB Shape V をオンにして、キャップ位置でクランプ処理を有効化
  • roundtangent モードはサーフェス末端を変形させるため、形状維持優先なら facet または share を選択
  • 上流で Refine SOP 等を使い NURBS の制御点密度を整えてから Cap SOP を適用

❌ Problem: 丸みキャップがカクついて見える
✅ Solution:

  • Divisions を 8 以上に増やして同心円の本数を上げ、表面を滑らかにする
  • Scale の値が小さすぎるとドームがほぼ平面になるため、適切な高さに調整
  • 後段で Subdivide SOP を併用してメッシュ全体の滑らかさを底上げする

❌ Problem: パフォーマンスが重い
✅ Solution:

  • round / tangent モードは Divisions が大きいほどポリゴン数が増えるため、必要最低限の分割数に抑える
  • ビジュアル上で重要でない端は facetshare に切替えて、丸みキャップを使う箇所を限定する
  • 後段で Polyreduce SOP を適用してポリゴン数を最適化

参考資料 📚

その他 🔗

公式リソース 📖

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