
概要 📖 – サーフェスの切断と等値曲線抽出
Carve SOPは、NURBS / メッシュ サーフェスから指定した U/V 範囲を切り出す (Cut) または等値曲線として抽出する (Extract) SOPです。Carve Page で U/V 範囲を、Method Page で Cut / Extract モードを選択することで、曲面の部分切出し・等値曲線の取得・Breakpoint 単位の細分割を 1 ノードで実現します。
主な用途 🎯
- NURBS / メッシュ サーフェスの一部切り出し (Cut モード、U/V 範囲指定で帯状領域を抜き出す)
- サーフェスからの等値曲線抽出 (Extract モード + 3D Isoparametric Curve で立体曲線を生成)
- 2D アイソパラメトリック プロファイルの生成 (Extract Type = 2D Profile で UV 平面上の曲線取得)
- Breakpoint 単位でのサーフェス分割 (Location = Breakpoints と Cut at All Internal U/V Breakpoints による多分割)
- U/V Divisions による複数同時切断 (divsu / divsv で範囲内に均等な切断面を追加生成)
データフロー 🔄
入力: NURBS / メッシュ / ポリゴン SOP
↓
Carve Page で First U/V・Second U/V の範囲を指定
↓
Method Page で Carve Method (Cut / Extract) と Location (Divisions / Breakpoints) を選択
↓
出力: 切り出されたサブ サーフェス (Cut) または抽出された等値曲線 (Extract)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Carve Page 📁
Group 関連パラメータ 🏷️
Group .group 🏷️
– 入力にグループがある場合、ここで指定したグループ名のプリミティブのみを Carve の対象にする
– * / [1-10] 等のパターンマッチングが利用可能 (Scripting Guide の Pattern Matching 参照)
U 範囲指定パラメータ 📏
First U .firstu ✅
– First U 位置を有効化するトグル
– オンにすると下記 domainu1 で指定した U 値が Cut / Extract の開始位置として使われる
First U (位置) .domainu1 📍
– Cut / Extract の開始位置をパラメトリック U 座標 (0 〜 1) で指定
– 0 がサーフェス始端、1 が終端
Second U .secondu ✅
– Second U 位置を有効化するトグル
– オンにすると下記 domainu2 で指定した U 値が Cut / Extract の終了位置として使われる
Second U (位置) .domainu2 📍
– Cut / Extract の終了位置をパラメトリック U 座標 (0 〜 1) で指定
– First U と組み合わせて U 方向の範囲を確定させる
V 範囲指定パラメータ 📐
First V .firstv ✅
– First V 位置を有効化するトグル
– サーフェス入力のときのみ有効 (カーブ入力では無効)
First V (位置) .domainv1 📍
– Cut / Extract の V 方向開始位置を 0 〜 1 で指定
– サーフェス入力にのみ適用される
Second V .secondv ✅
– Second V 位置を有効化するトグル
– サーフェス入力のときのみ有効
Second V (位置) .domainv2 📍
– Cut / Extract の V 方向終了位置を 0 〜 1 で指定
– サーフェス入力にのみ適用される
Method Page ⚙️
Carve Method .method 🎛️
Cut と Extract のどちらの動作モードで処理するかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Cut | .cut |
Carve Page で指定した範囲で元のジオメトリをスライス (切り出し) する |
| Extract | .extract |
Carve Page で指定した範囲で 3D 曲線・ポイント・2D プロファイルを生成する (抽出されるものは Extract Type で決定) |
Cut 用保持範囲指定パラメータ ✂️
Keep Inside .keepin ✅
– First U/V と Second U/V の間 (内側) のプリミティブを保持する
– Cut モード時に内側を残したい場合にオンにする
Keep Outside .keepout ✅
– First U/V と Second U/V の外側のプリミティブを保持する
– Keep Inside と組み合わせれば内外両方を保持することも可能
Extract Type .extractop 🧬
Extract モード時に抽出する形状の種類を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Extract 3D Isoparametric Curve(s) | .xisoparm |
指定した U / V 位置でサーフェスにぴったり一致する 3D の自由浮遊曲線を生成する |
| Extract 2D Isoparametric Profile(s) | .xprofile |
指定した U / V 位置でサーフェスにぴったり一致する 2D 曲線 (プロファイル) を生成する |
※ 注意: 入力がフェース (face) の場合、抽出可能なのはポイントのみで V パラメータは効きません。
Extract 関連パラメータ 📦
Keep Original .keeporiginal 🗂️
– オンにすると元のプリミティブを削除せず、抽出曲線と一緒に出力する
– 元サーフェスと抽出結果を同時に後段へ流したい場合に使用
Location .location 🎯
Cut / Extract をどの境界で実施するかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Divisions | .div |
Carve Page で指定した位置でちょうど Cut / Extract を行う。下記 U/V Divisions パラメータで追加分割を均等配置可能 |
| Breakpoints | .break |
カーブ・サーフェスは breakpoint で、ポリゴンは頂点で、メッシュは isoparm に沿って Cut / Extract を行う |
分割数関連パラメータ 🔢
U Divisions .divsu 🔢
– First U と Second U の間で実施する Cut / Extract の回数
– 範囲内に均等間隔で複数の切断面を生成したい場合に増やす
V Divisions .divsv 🔢
– First V と Second V の間で実施する Cut / Extract の回数
– サーフェス入力時のみ意味を持つ
Cut at All Internal U Breakpoints .allubreakpoints 🧷
– Location = Breakpoints 使用時、U 方向の全 breakpoint で結果プリミティブを個別プリミティブに分割する
Cut at All Internal V Breakpoints .allvbreakpoints 🧷
– Location = Breakpoints 使用時、V 方向の全 breakpoint で結果プリミティブを個別プリミティブに分割する
実践アイデア 💡
Example 1: NURBS サーフェスから帯状領域を切り出す (Cut) ✂️
Sphere SOP (Primitive Type=NURBS) → Carve SOP (Method=Cut, First U=ON 0.3, Second U=ON 0.7, Keep Inside=ON) → Geometry COMP → Render TOP
NURBS の球サーフェスを Carve SOP の Cut モードで U 方向 0.3〜0.7 の帯状領域だけ切り出す基本フロー。Sphere SOP の Primitive Type を NURBS にすることでパラメトリック U/V が利用可能になり、Keep Inside で内側帯を保持する。
- Sphere SOP を配置し
Primitive TypeをNURBSに設定 - Carve SOP を後段に接続し
Carve MethodをCutに First Uをオンにしてdomainu1を 0.3、Second Uをオンにしてdomainu2を 0.7 に設定Keep Insideをオンにして範囲内の帯状サーフェスを保持- Geometry COMP に接続して Render TOP で帯状の切り出し結果を確認
Example 2: 等値曲線を抽出しSweepの経路に 🧬
Sphere SOP (NURBS) → Carve SOP (Method=Extract, Extract Type=3D Isoparametric Curve, First U=ON 0.5) → Sweep SOP → Geometry COMP
Carve SOP の Extract モードで 3D アイソパラメトリック曲線を取得し、それを Sweep SOP の経路に流すパターン。曲面上を走る等値曲線をベースにチューブやリボン状の形状を生成する用途に向く。
- Sphere SOP の
Primitive TypeをNURBSに設定 - Carve SOP を後段に接続し
Carve MethodをExtract、Extract TypeをExtract 3D Isoparametric Curve(s)に変更 First Uをオンにしてdomainu1を 0.5 に設定 (赤道に相当する等値曲線が抽出される)- 後段に Sweep SOP を接続し、別の Circle SOP 等を断面プロファイルとして指定
- Geometry COMP に接続して赤道に沿った筒状ジオメトリを確認
Example 3: Breakpointsで曲面を全点分割 🪚
Grid SOP → Carve SOP (Method=Cut, Location=Breakpoints, Cut at All Internal U/V Breakpoints=ON) → Convert SOP → Geometry COMP
Carve SOP の Location を Breakpoints に切替え、Cut at All Internal U/V Breakpoints をオンにすることで、サーフェスの全 breakpoint で個別プリミティブに分割するパターン。後段で各セルを個別に Transform / Copy したいときの下準備として有効。
- NURBS サーフェス (Sphere SOP / Grid SOP の NURBS 出力等) を Carve SOP に接続
Carve MethodをCut、LocationをBreakpointsに設定Cut at All Internal U BreakpointsとCut at All Internal V BreakpointsをオンKeep Insideをオンにして分割結果を保持- Convert SOP で必要ならポリゴンに変換し、Geometry COMP に接続して各分割プリミティブを確認
関連オペレータ 🔗
類似機能OP 🔍
- Trim SOP — NURBS サーフェスを Profile 曲線でトリムする (Carve の自由曲線版に相当)
- Profile SOP — サーフェスから 2D プロファイル曲線を抽出・操作 (Carve Extract 2D に近い役割)
- Refine SOP — サーフェスを細分化 (分割せず CV / breakpoint を増やす)
組み合わせ推奨OP 🔄
- Sphere SOP — Carve の入力に使う NURBS サーフェスの代表的なソース
- Skin SOP — Carve で Extract した複数の等値曲線にサーフェスを張る
- Sweep SOP — Carve で抽出した曲線を経路に断面プロファイルを掃引
- Convert SOP — Carve の結果 (NURBS / Mesh) をポリゴンに変換して後段に流す
- Transform SOP — Carve で分割したプリミティブを移動・回転・スケール
前処理・後処理SOP 🎯
- 前処理: Sphere SOP、Grid SOP、File In SOP、Refine SOP
- 後処理: Skin SOP、Sweep SOP、Convert SOP、Transform SOP、Copy SOP
Info CHOP情報 📊
Carve 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: Carve の出力が空 / 何も切り出されない
✅ Solution:
First U/Second Uのトグルがオフだと範囲指定が無視されるため、両方オンになっているか確認Keep Inside/Keep Outsideが両方オフだと何も保持されない (Cut モードでは必ずどちらかをオンにする)- 入力 SOP がパラメトリック U/V を持たない (例: 完全閉じたポリゴン) 場合は期待した位置で切れないため、上流に Convert SOP で NURBS / Mesh に変換するなど構造を見直す
❌ Problem: V パラメータ (First V / Second V) が効かない
✅ Solution:
- V パラメータはサーフェス入力にのみ有効で、カーブ入力では無視される仕様 — 入力がカーブになっていないか確認
Extract Type設定や face 入力時には V パラメータが効かないケースがある (公式注記参照)、入力がフェースになっていないか上流の SOP を確認- サーフェスを使いたいときは Sphere SOP 等で
Primitive TypeをNURBSまたはMeshに設定して入力する
❌ Problem: Extract Type を 2D Profile にしても見た目が変わらない
✅ Solution:
- 2D Isoparametric Profile は UV パラメータ空間上の曲線として生成されるため、3D ビューポートでは見えにくい — Geometry Viewer の UV 表示モードで確認
- 後段に Convert SOP や Profile 系 SOP を置いて利用する前提のパラメータであることを意識する
- 3D で曲線を視認したい場合は
Extract TypeをExtract 3D Isoparametric Curve(s)に切替
❌ Problem: Cut at All Internal U/V Breakpoints が無視される
✅ Solution:
- このパラメータは
Location = Breakpointsのときのみ有効 — Location がDivisionsになっていないか確認 - 入力サーフェスが breakpoint を内部に持たない (例: 単純な NURBS で内部 knot がない) 場合は分割されない、上流で Refine SOP で breakpoint を増やす
- Cut 結果は
Keep Inside/Keep Outsideの保持設定にも依存するため、組み合わせて確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Carve SOP
- TouchDesigner公式ドキュメント – Trim SOP
- TouchDesigner公式ドキュメント – Profile SOP
- TouchDesigner公式ドキュメント – Convert SOP

