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

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

Extrude POP による面押し出し処理を示す図

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

概要 📖 – 面を指定方向に押し出す

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=法線) + 距離 + テーパー指定

出力: 押し出された立体ジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 軸方向に押し出して建築の壁・床板・タイル状の立体ジオメトリを生成する基本フロー。

  1. Grid POP で 2 次元ポイント配列を生成
  2. Connectivity POP の Connectivity を quads に設定して四角形サーフェスを構成
  3. Extrude POP の Axis を y に、Distance を 2.0 に設定
  4. Render TOP に接続してマテリアルを割当てレンダリング
  5. 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 点に収束する円錐・ピラミッド・スパイク形状を生成する用途。建築装飾の尖塔や植物の葉先・氷柱の表現に有効。

  1. Box POP で立方体プリミティブを生成
  2. Extrude POP の Axis を y、Distance を 3.0 に設定
  3. Taper を 0.0 に設定して先端が 1 点に収束するよう構成
  4. Render TOP に接続してシェーディングを適用
  5. 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 オンで一括押し出し、フェイス群を独立した立体ブロックではなく連結したファサード形状として生成する用途。

  1. Grid POP + Connectivity POP で 2 次元サーフェスを構成
  2. 上流で押し出し対象フェイスに facade グループを割当 (Attribute POP 等)
  3. Extrude POP の Group に facade を指定
  4. Per Edge をオンに、Distance を 1.5 に設定して連続押し出しを構成
  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 メモリを確保

参考資料 📚

その他 🔗

公式リソース 📖

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