
概要 📖 – 曲面の輪郭曲線を抽出
Profile SOPは、NURBS スプライン曲面上のプロファイル曲線を、独立した 3D 曲線または XY 平面ファセットとして抽出する SOPです。抽出方法は Extract(位置と形状を保ったまま 3D 曲線として取り出す)と Remap(XY 平面のパラメトリック平面ファセットとして展開する)の 2 種類から選択でき、Divisions per Span や Tolerance 等のフィッティングパラメータで抽出曲線の精度を調整します。
主な用途 🎯
- NURBS スプライン曲面上のプロファイル曲線を独立した 3D 曲線として取り出す用途で、曲面に貼り付いた輪郭ラインを単体ジオメトリとして扱えるようにする
- Surfsect SOP のブール演算結果として得られたプロファイルの抽出に使い、曲面同士の交差線をスタンドアロン曲線として後段に流す
- プロファイルを XY 平面の平面ファセットとして展開(Remap モード)することで、パラメトリック空間での形状解析や 2D 加工データとして扱えるようにする
- Divisions per Span / Tolerance / Order によるフィッティング精度の調整で、抽出曲線のポイント密度と平滑性を曲面の複雑さに合わせて制御する
- U Range / V Range によるマッピング領域の指定で、曲面パラメトリック空間の特定範囲だけを対象にプロファイルを再配置する
- 抽出後の親曲面と元プロファイルの保持・削除制御で、抽出した曲線だけを残すか元の曲面と一緒に下流に渡すかを使い分ける
データフロー 🔄
入力: プロファイル曲線を持つ NURBS スプライン曲面
↓
Method(Extract で 3D 曲線化 / Remap で XY 平面ファセット化)を選択
↓
Mapping Type(Uniform / Chord Length)と U/V Range で領域決定
↓
Smooth Curve / Tolerance / Order でフィッティング精度を調整
↓
出力: 独立した 3D 曲線または XY 平面ファセット
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象プロファイルの選択 🎯
Group .group 🎯
– 抽出対象とするプロファイル曲線を、曲面プリミティブの中から指定するためのパターン入力
– プリミティブグループ名や、*.3(全スプライン曲面の 4 番目のプロファイル)のようなプロファイルパターンを記述可能
– Pattern Matching 記法に従ったパターンを受け付け、空欄時は対象プロファイルが処理されない
抽出方法 .method 🧭
プロファイルを 3D 曲線として取り出すか、XY 平面のパラメトリック表現として展開するかを選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Extract | .extract |
曲面上のプロファイルを、位置と形状をそのまま保った独立 3D 曲線として取り出す(下記の抽出パラメータでフィッティング精度を制御) |
| Remap | .remap |
プロファイルを XY 平面上のパラメトリックファセット(平面顔)として展開する(U Range / V Range と Mapping Type で領域を再配置) |
抽出精度の設定 🎚️
Parametrically to X Y .parametric 🗺️
– オフ(Fitted): プロファイルは位置と形状が曲面上の元曲線と同一の 3D NURBS 曲線として抽出される(非平面になることもある)
– オン(Extracted Parametrically): プロファイルのパラメトリック画像が XY 平面上の 3D ファセットとして抽出され、ファセットの型(polygon / Bezier / NURBS)と頂点はプロファイルの制御点と一致する
– パラメトリック抽出はあくまで解析用途で、空間的な一致は保証されない(再投影には Project SOP を Parametric オプションで併用)
Smooth Curve .smooth 🪶
– 有効時、抽出ポイントを通るようスプラインをフィットして滑らかな曲線にする
– パラメトリック抽出(Parametrically to X Y がオン)時は無効化される
– Surfsect SOP のブール演算で生成されたプロファイルなど、フィッティングが重く不要な場合はオフにして処理を高速化
Divisions per Span .sdivs 🔢
– プロファイル上で計算する 1 スパンあたりのポイント数を指定する
– スパンは、ポリゴンでは隣接 CV 間のライン、スプラインでは隣接ブレークポイント間の弧
– 値が大きいほど抽出精度が高くなる(その分計算コストも増加)
Tolerance .tolerance 📐
– 抽出した 3D データに対するフィッティング処理の許容誤差(精度)を指定する
– 通常は 0.01 未満の値を使用
– 値を小さくするほど元プロファイルへの忠実度が上がるが、計算負荷も上昇
Order .order 🎚️
– 抽出後の 3D 曲線のスプライン次数を指定する
– 曲線の型(Bezier / NURBS)は元の空間曲線から継承されるが、次数はフィット品質を制御するために独立指定
– 元プロファイルがポリゴンの場合、抽出曲線は NURBS 曲線として生成される
Preserve Sharp Corners .csharp 📍
– プロファイル曲線中の鋭角コーナーが補間されるときの精度を制御する
– 曲率が急変する領域があるプロファイルではオンにする
– コーナー位置で曲線の特徴が丸まらないよう、ブレークポイントとして扱う
曲面と元曲線の保持 💾
Keep Surface .keepsurf 💾
– 抽出後に親曲面(プロファイルを乗せていた NURBS スプライン曲面)を出力に残すかどうかを指定する
– オフ: 抽出曲線のみを出力(親曲面は破棄される)
– オン: 親曲面も出力に残り、抽出曲線と一緒に下流へ流せる
Delete Original Profile .delprof 🗑️
– Keep Surface がオンのときに有効
– オン: 親曲面に貼り付いていた元のプロファイルを削除する
– オフ: 親曲面上のプロファイルもそのまま保持され、抽出した独立曲線と元曲面プロファイルが並存する
マッピング方式 .maptype 🗺️
既存のプロファイルを指定領域に再配置・スケーリングする方法を選択するメニューパラメータ(Remap 抽出時に主に効く)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Uniform | .unif |
曲面のパラメータ化を考慮せず、プロファイルの空間座標を (U,V) 領域上の点へ一様に変換する(実装が単純で軽量) |
| Chord Length | .chordlen |
曲面のパラメータ化を考慮し、空間的特徴とパラメトリック特徴の両方に整合したプロファイルを再計算する(モデル形状を尊重した高品質マッピング) |
UV 範囲指定 📏
U Range .urange 📏
– 曲面の U パラメトリック方向のうち、マッピング対象とする領域をパーセンテージで指定する
– 0-1 のフルレンジ指定で U 方向全域にマッピング
– 0-1 の範囲に制限されず、外側の値も指定可能(曲面ドメイン外に出たプロファイルは不可視になるが破棄はされない)
V Range .vrange 📏
– 曲面の V パラメトリック方向のうち、マッピング対象とする領域をパーセンテージで指定する
– 0-1 のフルレンジ指定で V 方向全域にマッピング
– U Range と同様、0-1 範囲外も指定可(範囲外プロファイルは表示されないが、Primitive SOP で再調整可能)
実践アイデア 💡
Example 1: ブール演算結果を曲線化 ✂️
Sphere SOP(NURBS)→ Surfsect SOP(ブール演算でプロファイル生成)→ Profile SOP(Method=Extract, Smooth Curve=OFF)→ Sweep SOP → Material SOP → Geometry COMP
Surfsect SOP の曲面同士のブール演算結果として、交差曲面のプロファイル曲線が親曲面に貼り付いた状態で出力されるパターンです。そのままでは独立した曲線として下流に流せないため、Profile SOP の Extract モードで取り出して 3D 曲線化し、Sweep SOP のバックボーンや Material SOP の輪郭表示に使います。Surfsect は既にきれいなプロファイルを生成しているため Smooth Curve をオフにして再フィッティングを省略します。
- 2 つの Sphere SOP / Polypatch SOP 等の曲面を準備し、Surfsect SOP に入力してブール演算結果のプロファイル曲線を生成
- Profile SOP に接続し、
MethodをExtract、Groupを空欄または抽出対象プロファイルパターンに設定 Smooth Curveをオフにして Surfsect 生成プロファイルをそのまま取り出す(重いフィッティングを省略)Keep Surfaceをオフにして親曲面を破棄、抽出曲線のみを出力- Sweep SOP のバックボーン入力に流して断面プロファイルを押し出し、Material SOP で外観を整える
Example 2: 曲面の文字をXY平面展開 🗺️
Profile-bearing NURBS Surface → Profile SOP(Method=Remap, Mapping Type=Chord Length, U Range=0-1, V Range=0-1)→ Convert SOP → Material SOP → Geometry COMP
曲面に貼り付いたロゴや文字プロファイルを、パラメトリック空間(XY 平面)に展開して 2D の加工データとして扱うパターンです。Profile SOP の Remap モードで Mapping Type に Chord Length を指定すると、曲面のパラメータ化を考慮した整合性の高い 2D 展開ファセットが得られます。レーザー加工データやテクスチャ転写のソースとして後段で使えます。
- プロファイル曲線が貼り付いた NURBS スプライン曲面を準備(Trim SOP や Surfsect SOP の結果でも可)
- Profile SOP に接続し、
MethodをRemap、Parametrically to X Yをオンに設定 Mapping TypeをChord Lengthに設定して曲面パラメータ化を尊重したマッピングに切り替えU Range/V Rangeを0-1のフルレンジに指定して曲面全域からプロファイルを抽出- 出力された XY 平面ファセットを Convert SOP でポリゴン化し、2D 加工データ用途のジオメトリとして下流に流す
Example 3: 抽出曲線を別曲面に再投影 🔄
Original NURBS Surface → Profile SOP(Method=Extract, Parametrically to X Y=ON)→ Edit / Transform → Project SOP(Parametric option)→ Target NURBS Surface
プロファイルをパラメトリック展開で取り出し、XY 平面で頂点編集や Transform SOP による位置調整をかけた後、Project SOP の Parametric オプションで元の曲面上の同じ位置に再投影するワークフローです。曲面に貼り付いたままでは編集しづらいプロファイルを、いったん 2D で編集してから元の場所に正確に戻したい場合に使います。
- プロファイル付きの NURBS 曲面を Profile SOP に入力
MethodをExtract、Parametrically to X Yをオンに設定して XY 平面のパラメトリック表現として抽出- 得られた 2D ファセットの頂点を直接編集、または Transform SOP で位置・回転・スケーリングを調整
- 編集後のファセットを Project SOP に流し、
Parametricオプションをオン、Mapping to Rangeをオフに設定 - 元の NURBS 曲面に投影することで、編集結果が元プロファイルと同じ位置・パラメトリック関係で曲面に再貼付される
関連オペレータ 🔗
類似機能OP 🔍
- Project SOP — Profile SOP の逆方向操作: 独立した 3D 曲線を NURBS 曲面に貼り付けてプロファイル化する
組み合わせ推奨OP 🔄
- Surfsect SOP — 曲面同士のブール演算でプロファイル曲線を生成 — Profile SOP の前段として組み合わせるとブール結果を独立曲線化できる
- Project SOP — Profile SOP(Remap + Parametric)で取り出した 2D ファセットを編集してから元の曲面に同位置で再投影する用途
- Primitive SOP — 曲面上に存在するプロファイルの位置・スケール等を変更してから Profile SOP で抽出
- Convert SOP — 抽出した NURBS / Bezier 曲線をポリゴン化して下流のポリゴンベース処理に渡す
- Sweep SOP — 抽出した 3D 曲線をバックボーンとして、断面プロファイルを押し出して立体形状を生成
前処理・後処理SOP 🎯
- 前処理: Surfsect SOP、Primitive SOP、Trim SOP
- 後処理: Project SOP、Convert SOP、Sweep SOP、Skin SOP、Carve SOP、Refine SOP
Info CHOP情報 📊
Profile 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— 直近のクック所要時間(ミリ秒)。フィッティング処理が走る Extract モードでは値が大きくなりやすいcook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 抽出した 3D 曲線が元プロファイルと位置や形状でズレる
✅ Solution:
Toleranceを小さくして(0.001 等)フィッティング精度を上げ、元プロファイルへの忠実度を高めるDivisions per Spanを大きくしてスパンあたりのサンプリング数を増やし、形状の細部を取りこぼさないようにするSmooth Curveがオンの場合、スプラインフィッティングで形状が均されている可能性 — オフにして抽出ポイント列を直接使う
❌ Problem: Remap モードの XY 平面展開が期待した形状にならない
✅ Solution:
Mapping TypeをUniformからChord Lengthに変更し、曲面パラメータ化を考慮したマッピングに切り替えParametrically to X Yをオンにしてパラメトリック抽出を有効化し、ファセット型を元プロファイルと一致させるU Range/V Rangeがプロファイル位置を含む領域に設定されているか確認 — 範囲外指定だと結果が不可視になる
❌ Problem: 鋭角コーナーが丸まって特徴が失われる
✅ Solution:
Preserve Sharp Cornersをオンにして、曲率変化が大きい部分をブレークポイントとして扱わせるOrderを下げて低次スプラインで抽出し、コーナー位置でのスムージングを抑えるSmooth Curveをオフにしてフィッティング自体をバイパスし、コーナー位置を抽出ポイントとして直接保持
❌ Problem: 抽出処理が重くフレームレートが落ちる
✅ Solution:
Smooth Curveをオフにしてスプラインフィッティング処理を省略(特に Surfsect SOP 生成のクリーンなプロファイル相手では不要)Divisions per Spanを下げてスパンあたりのサンプリング数を減らす(精度とのトレードオフ)Toleranceを緩めて(0.01 程度)フィッティング許容誤差を拡大、収束計算を早める
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Profile SOP
- TouchDesigner公式ドキュメント – Pattern Matching
- TouchDesigner公式ドキュメント – Project SOP
- TouchDesigner公式ドキュメント – Convert SOP

