
概要 📖 – 断面で立体を押し出す
Extrude SOPは、入力 0 の 2D 面・曲線を入力 1 の断面プロファイルに沿って押し出し、3D 立体メッシュを生成する SOPです。前面・背面・側面メッシュの生成方式と、断面の太さ・押し出し深さを個別に制御でき、テキストの 3D 立体化やリボン状の装飾押し出しまで幅広い造形に使えます。
主な用途 🎯
- テキストや 2D 図形の 3D 立体化 — Font SOP / Text SOP の出力を入力 0 に流して立体ロゴ・3D タイトルを生成
- 断面プロファイル指定による装飾的な側面形状 — 入力 1 の断面曲線でリボン状・面取り風・丸み付きの側面を制御
- 前面・背面・側面の独立した生成方式制御 — Front Face / Back Face / Side Mesh で各部位の有無や面タイプを個別指定
- 断面の太さと押し出し深さの微調整 — Thickness / Depth の Translate と Scale で断面サイズと押し出し量を別々に調整
- front / back / side ごとの出力グループ自動生成 — Create Output Groups で 3 グループに分け、後段で個別マテリアル割当やフィルタリングが可能
データフロー 🔄
入力 0: 2D 面・曲線 (Font SOP / Text SOP / Profile SOP 等) + 入力 1 (任意): 断面プロファイル曲線
↓
断面に沿って前面・背面・側面を生成
↓
(任意) Thickness / Depth で断面の太さ・押し出し深さを調整
↓
出力: 3D 立体ジオメトリ SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象グループ絞り込み 🎯
Source Group .sourcegrp 🎯
– Source Group (入力 0 のグループ指定) — 入力 0 にプリミティブグループが含まれている場合、ここで指定したグループのみを押し出し対象にします
– 空欄なら入力 0 の全プリミティブが対象
– * や [0-10] のパターンマッチングが使用可能
X-Section Group .xsectiongrp 🎯
– X-Section Group (入力 1 の断面グループ指定) — 入力 1 (断面プロファイル) にプリミティブグループが含まれている場合、ここで指定したグループのみを断面として使用
– 空欄なら入力 1 の全プリミティブが断面候補
– パターンマッチングが使用可能
Values Page 📁
ポイントの融合方式 .dofuse 🔗
断面を使用したときに重なる・交差するポイントをどのように統合するかを決めるメニューパラメータ。
| 項目 | 内部名 | 説明 |
|---|---|---|
| No fusion | .off |
ポイントの融合を行いません (生のジオメトリのまま出力) |
| Clamp all points | .all |
近接する全ポイントを 1 点に統合 (最も積極的な統合) |
| Clamp minimal set | .min |
最小限のポイント集合のみ統合 (必要な交差点だけ整える) |
| Clamp individual face | .on |
面単位でポイントを統合 (デフォルト相当、断面使用時の推奨) |
| Clamp straight | .straight |
直線部分のポイントを統合 (直線状エッジの不要な重複を削減) |
※ 注意: 断面 (入力 1) を使うときはほぼ常にオン推奨。オフのまま使うと、押し出し時に多角形ポイントが交差・重複したまま出力され、見た目の破綻や後段の Convert / Subdivide で異常が出やすくなります。
前面の生成方式 .fronttype ⬜
押し出しの前面 (input geometry 側の面) をどう生成するかを決めるメニュー。アニメーション時に見えない面は No Output にしてポリゴン数を節約できます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| No Output | .off |
前面を生成しません (見えない面のオーバーヘッド削減) |
| Output Face | .face |
通常の多角形面を生成 (標準) |
| Convex Face | .convex |
凸多角形に変換して面を生成。Twist SOP / Lattice SOP で変形させる前提のときに崩れにくい |
背面の生成方式 .backtype ⬛
押し出しの背面 (前面の反対側) をどう生成するかのメニュー。Front Face と同じ 3 選択肢で、用途も同様。
| 項目 | 内部名 | 説明 |
|---|---|---|
| No Output | .off |
背面を生成しません (片面のみ必要なときに節約) |
| Output Face | .face |
通常の多角形面を生成 |
| Convex Face | .convex |
凸多角形に変換して背面を生成 (後段で変形する場合の保険) |
側面メッシュの形状 .sidetype 🧱
前面と背面の間をつなぐ側面メッシュをどんなトポロジで構築するかのメニュー。入力 1 の断面が Bezier / NURBS 曲線のときは、そのパッチ型がそのまま反映されます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| No Output | .off |
側面メッシュを生成しません (前面・背面のみ出力) |
| Rows | .rows |
水平方向のラインのみで側面を構成 |
| Columns | .cols |
垂直方向のラインのみで側面を構成 |
| Rows and Columns | .rowcol |
縦横両方のラインで側面を構成 (ワイヤーフレーム時は四角形に見えるが、全ポリゴンは開いた状態) |
| Triangles | .triangles |
三角形ポリゴンで側面を構築 |
| Quadrilaterals | .quads |
四角形ポリゴンで側面を構築 (デフォルト) |
| Alternating triangles | .alttriangles |
向きを交互に変えた三角形で側面を構築 (Triangles の代替トポロジ) |
断面プロファイル調整 📐
Initialize Extrusion .initextrude 🔧
– Initialize Extrusion (断面の自動スケール・移動) — 入力 1 の断面が入力 0 のサイズ・位置と合っていないときに、自動でフィットさせるためのコマンドボタン
– Model モードでワールド軸からズレた断面を描いてしまった場合や、極端にスケールが違う場合に押す
– 押下後は thickxlate / thickscale 等の値が自動調整されます
Thickness Translate .thickxlate ↔️
– Thickness Translate (太さ方向の平行移動) — 入力 0 のジオメトリ法線に対して垂直方向 (断面プロファイルの X 軸) に断面を平行移動
– テキストの場合、文字を細く (narrower) または太く (bolder) する効果がある
– 数値はワールド単位
Thickness Scale .thickscale 📏
– Thickness Scale (太さ方向のスケール) — 法線に対し垂直方向 (断面プロファイルの X 軸) に断面をスケール
– デフォルト断面 (Y 軸方向の縦線) に対してはこのパラメータは効きません
– 負の値も指定可能
Depth Translate .depthxlate 🔼
– Depth Translate (押し出し方向の平行移動) — 入力 0 の法線方向 (断面プロファイルの Y 軸) に断面を平行移動
– 正値で法線と逆方向へ移動。出力ジオメトリ全体の押し出し位置をシフトしたいときに使用
– 数値はワールド単位
Depth Scale .depthscale 📏
– Depth Scale (押し出し深さ) — 入力 0 の法線方向 (断面プロファイルの Y 軸) に断面をスケール
– 押し出しの「厚み・深さ」そのものを決定する最重要パラメータ
– 1.0 でデフォルト深さ、値を大きくするほど厚く・深く
Vertex .vertex 📍
– Vertex (基準ポイント番号) — 指定したポイント番号が断面プロファイルの原点になるように断面を平行移動
– 押し出し方向に対する「基準点」を決めるときに使用
– 通常は 0 のままで OK
側面のシェーディング ✨
Cusp Polygonal Sides .docusp 🔺
– Cusp Polygonal Sides (側面の角張り処理) — オンにすると cuspangle の角度を超える隣接ポリゴンの境目で頂点を非共有化し、シャープなエッジに
– テキストの角や面取り部分をはっきりさせたいときにオン
– 滑らかなチューブ状にしたいときはオフ
Side Cusp Angle .cuspangle 📐
– Side Cusp Angle (角張り判定の閾値角度) — docusp がオンのとき、隣接ポリゴンの角度がこの値を超えるとシャープエッジ扱い
– デフォルトは 20 度
– 大きくするほど滑らか、小さくするほど面取り感が増す
ポイント共有設定 🔗
Consolidate Faces to Mesh .sharefaces 🧷
– Consolidate Faces to Mesh (前面・背面と側面の頂点共有) — オンにすると、前面と側面メッシュ第 1 列、および背面と側面メッシュ最終列でポイントを共有
– ポイント数削減・メッシュとしての連続性向上
– 共有によりエッジで法線が混ざるため、シャープな角を残したいときはオフ
Remove Shared Sides .removesharedsides 🚫
– Remove Shared Sides (側面の重複生成抑止) — 隣接プリミティブが共有するエッジで側面が二重生成されるのを防ぎます
– テキストなど多数の閉曲線が連なるジオメトリで重複ポリゴンを削減
– シャドウやノーマル計算の不具合回避にも有効
Groups Page 📁
出力グループ生成 🏷️
Create Output Groups .newg 🆕
– Create Output Groups (出力グループの自動生成) — オンにすると押し出し結果を 前面 / 背面 / 側面 の 3 プリミティブグループに分けて出力
– 後段で Group SOP / Material SOP を使って前後と側面に別マテリアルを割当てたいときに必須
– グループ名は下記 3 パラメータで指定
Front Group .frontgrp 🏷️
– Front Group (前面グループ名) — 前面プリミティブを格納するグループの名前
– 任意の文字列を指定可。後段でこの名前を使ってフィルタ
Back Group .backgrp 🏷️
– Back Group (背面グループ名) — 背面プリミティブを格納するグループの名前
Side Group .sidegrp 🏷️
– Side Group (側面グループ名) — 側面メッシュプリミティブを格納するグループの名前
実践アイデア 💡
Example 1: テキストの 3D 立体化 📝
Text SOP → Extrude SOP (Depth Scale で厚み) → Geometry COMP
Text SOP で平面テキストを生成し、Extrude SOP で奥行きを与えて立体ロゴ・3D タイトルを作る基本フロー。Depth Scale で厚みを、Front Face / Back Face を Output Face にして両面を閉じ、側面は Quadrilaterals で構築。Create Output Groups をオンにしておくと、後段で前面と側面に別マテリアルを割当てやすくなります。
- Text SOP に表示したい文字列を入力 (フォント・サイズも設定)
- Extrude SOP の入力 0 に Text SOP を接続 (入力 1 は未接続でデフォルト断面)
Front Face/Back FaceをどちらもOutput FaceにSide MeshをQuadrilateralsにDepth Scaleを 0.5〜1.0 に上げて立体感を付与Create Output Groupsをオンにして後段の Geometry COMP に流す
Example 2: 装飾的なリボン押出 🎀
Profile SOP / Curve 系 → 入力 1 (断面) + 入力 0 (押し出し元) → Extrude SOP → Convert SOP
入力 1 に Bezier / NURBS 曲線などの装飾的な断面プロファイルを与えると、側面の形状を自由に制御できます。たとえば波打つ断面を入力 1 に渡せば、リボン状やフリル状の立体表現に。Fuse Points を Clamp individual face に、Cusp Polygonal Sides をオフにして滑らかな側面に仕上げます。
- 入力 0 用に押し出し元の 2D 面 (Font SOP / Profile SOP 等) を準備
- 入力 1 用に装飾的な断面プロファイル (Bezier / NURBS 曲線) を準備
- Extrude SOP の入力 0 と入力 1 にそれぞれ接続
Fuse PointsをClamp individual faceにCusp Polygonal Sidesをオフにして滑らかな側面にThickness Scale/Depth Scaleで太さと深さを調整- 後段で Convert SOP でメッシュ形式を整え、レンダリングへ
Example 3: 面ごとに別マテリアル 🎨
Extrude SOP (Create Output Groups オン) → Material SOP × 複数 → Geometry COMP
Create Output Groups をオンにすると、押し出し結果が front / back / side の 3 グループに自動分割されます。後段の Material SOP / Group SOP を使い、前面だけ金色のメタル、側面だけマット仕上げ、背面は無効化、といった面ごとに違う質感を 1 個の Extrude 出力で実現できます。
- Extrude SOP で
Create Output Groupsをオン Front Group/Back Group/Side Groupにそれぞれ識別しやすい名前を設定- 後段に Material SOP を 3 個並べ、各 Material SOP の Group 欄に上で設定した名前を指定
- それぞれに別のマテリアル (例: 金属 / マット / 透明) を割当
- Geometry COMP に流してレンダリングし、面ごとに質感が分かれることを確認
関連オペレータ 🔗
類似機能OP 🔍
- Sweep SOP — 断面を曲線パスに沿ってスイープして 3D 形状を生成。Extrude は法線方向 1 軸の押し出し、Sweep は任意パスに沿ったスイープ
- Revolve SOP — 断面を軸まわりに回転させて 3D ソリッドを生成。直線的な押し出しではなく回転体を作りたいときの代替
組み合わせ推奨OP 🔄
- Text SOP — Extrude の入力 0 として最頻出。立体テキスト・3D ロゴ用の押し出し元
- Font SOP — TouchDesigner のフォントから平面文字ジオメトリを生成。Extrude と組合せて立体タイポグラフィを構築
- Profile SOP — サーフェスからプロファイル曲線を抽出。Extrude の入力 0 や入力 1 (断面) として活用可能
- Convert SOP — 押し出し後にメッシュタイプ (Polygon / Mesh / NURBS) を整える定番後段 SOP
- Group SOP — Create Output Groups で出力した front / back / side グループを再編集・絞り込みするとき使用
前処理・後処理SOP 🎯
- 前処理: Text SOP、Font SOP、Profile SOP、Polyspline SOP
- 後処理: Convert SOP、Group SOP、Transform SOP、Facet SOP、Null SOP
Info CHOP情報 📊
Extrude 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:
Front FaceとBack FaceのどちらかがNo Outputになっていないか確認 (両面が必要ならOutput Faceに)Side MeshがNo Outputになっていないか確認 (側面メッシュが無いと前面・背面の間が筒抜けに見える)- 後段で Convert SOP で Polygon / Mesh に変換し、レンダラ側で正しく面として認識されるか再確認
❌ Problem: テキスト押出時にエッジがガタつく・面が交差する
✅ Solution:
Fuse PointsをClamp individual faceまたはClamp all pointsにしてポイントの重複を解消Remove Shared Sidesをオンにして隣接プリミティブ間の側面二重生成を抑止- 前段で Facet SOP や Convert SOP で入力ジオメトリを clean してから Extrude に渡す
❌ Problem: 側面のシェーディングが角ばりすぎる・滑らかすぎる
✅ Solution:
Cusp Polygonal Sidesがオンになっているか確認 (オフだと全側面が滑らかシェーディングに)Side Cusp Angleを調整 (大きくすると滑らか、小さくするとシャープ。デフォルトは 20 度)Side MeshをQuadrilateralsやRows and Columnsに切替えてポリゴン分割数自体を変える
❌ Problem: 断面が入力 0 のサイズと合わずスケールが破綻する
✅ Solution:
Initialize Extrusionボタンを押して断面を入力 0 のサイズに自動フィットThickness Scale/Depth Scaleを手動で調整して断面の太さ・深さを揃える- 入力 1 (断面) を作る前段で Transform SOP でスケール・移動して整える
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Extrude SOP
- TouchDesigner公式ドキュメント – Sweep SOP
- TouchDesigner公式ドキュメント – Revolve SOP
- TouchDesigner公式ドキュメント – Text SOP

