
概要 📖 – 面を指定方向に押し出す
Extrude POPは、入力ジオメトリのフェイスを指定軸または法線方向に押し出して、平面サーフェスから立体ボリュームジオメトリを生成する POPです。Box / Grid POP 等の平面サーフェスから壁・柱・建築ファサード・スパイク等の立体形状を生成する基本オペレータで、Distance / Taper / Per Edge / Normal パラメータの組合せで多様な押し出し表現を構成できます。
主な用途 🎯
- Box / Grid POP のサーフェスを Y 軸方向に押し出して壁・柱・タワー状ジオメトリを生成
- Distance パラメータで押し出し量をアニメーション制御し、動的な隆起・成長表現を作る
- Taper を併用して先端が細くなる円錐・スパイク・建築装飾を生成
- Per Edge をオンにして入力グループ全体を 1 つの面として押し出し、建築ファサード等の連続押し出しを実現
- Normal パラメータでフェイス法線方向に押し出し、任意形状サーフェスの厚み付け (シェル化) を実行
データフロー 🔄
入力: 押し出し対象の面 (Triangles / Quads / Line Strips 等を持つジオメトリ)
↓
軸 (X/Y/Z または None=法線) + 距離 + テーパー指定
↓
出力: 押し出された立体ジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Extrude Page 📋
Group .group 🏷️
押し出し対象グループの絞り込み:
- Group パターン: 入力ジオメトリに名前付きグループがある場合、グループ名を指定するとそのグループに含まれるプリミティブのみが押し出し対象になる
- 用途: 建築ファサード等で特定パネル群のみを押し出し、他は平面のまま残す部分加工に使用
Axis .axis 🧭
押し出し方向を決定するメニューパラメータ。X/Y/Z のいずれかを選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| X | .x |
ワールド X 軸方向に押し出し (横方向の押し出し) |
| Y | .y |
ワールド Y 軸方向に押し出し (上方向への壁・柱生成で最頻出) |
| Z | .z |
ワールド Z 軸方向に押し出し (奥行き方向の押し出し) |
Distance .distance 📏
押し出し量の制御:
- Distance 値: 押し出し量をワールド単位で指定。負の値で逆方向への押し出しも可能
- 用途: アニメーション CHOP / Constant CHOP を
op('constant1')['v1']参照で接続し、動的な成長・伸縮表現に活用
Taper .taper 🔻
テーパー (先端スケール) の制御:
- Taper 値: 押し出し先 (頂上面) に適用されるスケール倍率。1.0 = 平行押し出し / 0.0 = 先端が 1 点に収束 (円錐・ピラミッド化) / 1.0 超 = 先端が広がる逆テーパー
- 用途: スパイク・ピラミッド・建築装飾の尖塔・先細りの植物的フォルム生成
Per Edge .peredge 🔗
フェイス押し出しのグループ化:
- オン: フェイス群をグループとしてまとめて押し出す (入力グループ押し出し時に特に有用)
- オフ: 各フェイスを個別に押し出し (デフォルト、独立した立体ブロックが並ぶ結果)
Max Primitives per Point .maxprimsperpoint 🔢
GPU 一時バッファサイズの制御:
- Max Primitives per Point 値: 入力ジオメトリ内で 1 ポイントが属するプリミティブの最大数を指定。Keep Faces Connected がオンの場合の GPU 一時バッファサイズ確保に使用
- 用途: 複雑なメッシュ (多くのフェイスが 1 頂点を共有する場合) で内部バッファ不足が発生したときに値を増やす
Normal .normal 📐
フェイス法線方向への押し出し設定を行うメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
法線参照なし (Axis パラメータで指定した X/Y/Z 軸方向を使用) |
Copy Topology Info Back to CPU .cpureadback 🔁
CPU 読み戻しの制御:
- オン: 出力ジオメトリのポイント数・トポロジ情報を CPU メモリにコピー (Info CHOP 等で値を参照する場合に必要)
- オフ: GPU 側のみで処理を完結 (パフォーマンス重視、Info CHOP 経由の参照が不要なケース)
Map Page 🗺️
Mapping .map 🔗
属性マッピングエントリ数:
- Mapping 数: 属性 → パラメータマッピングのエントリ数を指定。各エントリで OP / Element / Target Parameter / Combine Operation を構成
- 用途: Texture POP 等から属性値を読み取って Distance / Taper をポイント別に変化させ、ノイズマップ・テクスチャ駆動の押し出しを実現
OP .map0op 🎯
属性参照 OP の指定:
- OP 参照: 属性値を読み取る対象 OP のパスを指定 (Texture POP / Math POP 等)
- 用途: ノイズパターン・テクスチャ画像からのサンプリング値を押し出しパラメータに反映
Element .map0element 🔣
参照する属性名の指定:
- Element 名: 参照する属性のチャンネル名・属性名 (例:
r/P/noise) - 用途: テクスチャマップの R/G/B チャンネルや属性 POP の追加属性を選択的に押し出しパラメータへ流す
Target Parameter .map0parm 🎯
マッピング先となる本 POP のパラメータを選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| distance | .distance |
Distance (押し出し距離) パラメータに属性値を反映 |
| taper | .taper |
Taper (先端スケール) パラメータに属性値を反映 |
Combine Operation .map0combineop 🧮
属性値をターゲットパラメータに反映する際の合成方法を決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Set | .set |
パラメータ値を属性値で置換 (上書き) |
| Multiply | .mult |
パラメータ値に属性値を乗算 |
| Add | .add |
パラメータ値に属性値を加算 |
Common Page 🔧
Bypass .bypass 🚫
POP の処理をスキップして入力をパススルーする設定:
- オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
- 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用
Free Extra GPU Memory .freeextragpumem 🧠
蓄積した GPU メモリの解放:
- Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
- 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約
Delete Input Attributes .delinputattrs 🗑️
出力属性の絞り込みパターン:
- Delete Input Attributes パターン: 出力に残したい属性名のパターン (例:
P N Cd) を指定。指定外の属性は破棄される - 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約
実践アイデア 💡
Example 1: Grid POPをY軸に押出し壁を生成 🧱
Grid POP → Connectivity POP (Connectivity=quads) → Extrude POP (Axis=y, Distance=2.0) → Render TOP
Grid POP で生成した 2 次元サーフェスを Connectivity POP で Quads に構成した後、Extrude POP で Y 軸方向に押し出して建築の壁・床板・タイル状の立体ジオメトリを生成する基本フロー。
- Grid POP で 2 次元ポイント配列を生成
- Connectivity POP の Connectivity を
quadsに設定して四角形サーフェスを構成 - Extrude POP の Axis を
yに、Distance を2.0に設定 - Render TOP に接続してマテリアルを割当てレンダリング
- Render TOP で押し出された壁状ジオメトリが描画されることを確認
Example 2: Taper でピラミッド・スパイク形状を作る 🔻
Box POP → Extrude POP (Axis=y, Distance=3.0, Taper=0.0) → Render TOP
Box POP のトップフェイスを Extrude POP で Y 軸に押し出しつつ、Taper を 0.0 に設定することで先端が 1 点に収束する円錐・ピラミッド・スパイク形状を生成する用途。建築装飾の尖塔や植物の葉先・氷柱の表現に有効。
- Box POP で立方体プリミティブを生成
- Extrude POP の Axis を
y、Distance を3.0に設定 - Taper を
0.0に設定して先端が 1 点に収束するよう構成 - Render TOP に接続してシェーディングを適用
- Render TOP でピラミッド状の形状が描画されることを確認
Example 3: Per Edge で建築ファサードの連続押し出しを実現 🏛️
Grid POP → Connectivity POP → Extrude POP (Group=facade, Per Edge=on, Distance=1.5) → Render TOP
Grid POP + Connectivity POP で構成したサーフェスのうち、特定グループ facade のみを Per Edge オンで一括押し出し、フェイス群を独立した立体ブロックではなく連結したファサード形状として生成する用途。
- Grid POP + Connectivity POP で 2 次元サーフェスを構成
- 上流で押し出し対象フェイスに
facadeグループを割当 (Attribute POP 等) - Extrude POP の Group に
facadeを指定 - Per Edge をオンに、Distance を
1.5に設定して連続押し出しを構成 - Render TOP で建築ファサード状の連結ジオメトリが描画されることを確認
関連オペレータ 🔗
類似機能OP 🔍
- Extrude SOP — SOP 系の同等オペレータ。CPU 側 SOP ワークフローでのフェイス押し出しを担う (GPU 側 POP は Extrude POP)
組み合わせ推奨OP 🔄
- Box POP — 立方体プリミティブの生成元。Extrude のトップフェイスを押し出してピラミッド・タワー化する基本入力
- Grid POP — 2 次元サーフェスの生成元。Connectivity 経由で Quads 化してから Extrude で壁・床板化する典型フロー
- Connectivity POP — ポイントからプリミティブを構成。Extrude が押し出す対象フェイスを上流で確実に作る前処理として頻出
- Transform POP — 押し出し前後にポイントを移動・回転・スケール。押し出し方向の調整 (法線揃え等) で頻用
前処理・後処理POP 🎯
Info POP情報 📊
Extrude POP は Info CHOP 経由で押し出し後ジオメトリの統計情報を取得できます。
POP固有情報 ✨
num_verts: POP に含まれる頂点 (vertex) 数num_points: POP に含まれるポイント数num_prims: POP に含まれるプリミティブ数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)cook_start_time: 最後のクック開始時刻 (ミリ秒)cook_end_time: 最後のクック終了時刻 (ミリ秒)cooked_this_frame: 現フレームでクックされたか (0 / 1)warnings: 警告数errors: エラー数
POP 汎用情報 (Info CHOP 経由) 📊
num_points: 押し出し後の総ポイント数 (押し出しにより元の倍以上に増加)num_prims: 押し出し後の総プリミティブ数 (側面フェイス + 頂上フェイスが追加され増加)num_point_attribs: 出力ジオメトリのポイント属性数num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Distance を設定しても押し出しが視認できない / 出力が平面のまま
✅ Solution:
- 入力ジオメトリに押し出し可能なフェイス (Triangles / Quads / Line Strips) が存在するか Info CHOP の
num_primsで確認 - Axis 設定がカメラの視線方向と一致して見た目上潰れていないか、別軸 (Y → X) に切り替えて確認
- 前段に Connectivity POP を挟んでプリミティブが確実に構成されているか検証
❌ Problem: Taper を 0 にすると先端が崩れる / フェイスが反転する
✅ Solution:
- Taper が完全に 0 だと頂上面が 1 点に縮退するため、わずかに 0 を超える値 (例:
0.001) で代替し縮退を回避 - Render TOP の両面描画 (Both Sides) を有効化してフェイス法線反転による描画消失を回避
- 下流に Attribute POP で法線を再計算し向きを揃える
❌ Problem: Per Edge オンで意図しない箇所が連結押し出しされる
✅ Solution:
- Group パラメータで押し出し対象のグループ名を明示し、対象外フェイスを除外
- 上流の Attribute POP / グループ設定でフェイスごとのグループ割当が正しく行われているか確認
- Per Edge をオフに戻して個別フェイス押し出しでの挙動と比較し、グループ構造の不整合を切り分け
❌ Problem: Max Primitives per Point 不足でジオメトリの一部が欠ける / クラッシュする
✅ Solution:
- 入力メッシュ内で 1 ポイントが属するプリミティブの最大数を確認し、その値以上に Max Primitives per Point を増やす
- Convert POP で
quadstotriangles等の事前変換を行い、1 ポイントあたりのプリミティブ参照数を抑える - Common Page の Delete Input Attributes で不要な属性を削減し GPU メモリを確保
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Extrude POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- Connectivity POP (Extrude の前段で頻用)
- Extrude SOP (SOP 系の同等オペレータ)

