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

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

Field POP の 3D shape フィールド生成機能を示す図

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

概要 📖 – 形状領域から重みを生む

Field POPは、3D shape 領域内の各点に Weight 属性を付与し、point cloud の領域分離やフォースの局所適用に使う POPです。出力は Weight 属性 (shape 内 1 / 外 0) を持つジオメトリで、Specification POP を組み合わせれば 1 ノードで複数フィールドを同時生成・合成できます。

主な用途 🎯

  • 3D shape (sphere / box / torus 等) による point cloud のセクション分離・切り出し
  • パーティクル系のフォースを特定領域内に限定する Weight マスク生成
  • Signed Distance 属性による表面距離計算と下流ジオメトリ処理
  • Specification POP を介した複数フィールドの per-field Weights / Distances 出力
  • Transition Range / Type による Weight の滑らかなフェード制御

データフロー 🔄

入力: ポイントジオメトリ

Mode で選択した 3D shape 内外判定 + Transition による Weight 補間

出力: Weight (+ オプションで Signed Distance) 属性付きジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Field Page 📋

Attribute Class .attrclass 🎛️

Field POP の出力対象とする属性クラスの選択

項目 内部名 説明
Point .point ポイント属性として Weight / Distance を出力
Vertex .vertex 頂点属性として Weight / Distance を出力
Primitive .primitive プリミティブ属性として Weight / Distance を出力

Field Attribute Scope .fieldattrscope 🎯

Field Attribute Scope .fieldattrscope 🎯
– Weight を出力する際に使用する属性のスコープを指定
– 属性名パターン (例: P / Cd) で対象属性を絞り込み
– 空欄時はデフォルト動作 (位置属性 P が使用される)

Specification POP .specpop 🔗

Specification POP .specpop 🔗
– 各ポイントが 1 つのフィールド定義となる POP への参照パス
– 参照 POP のポイント属性 (sizex / radx / tx 等) が Field POP のパラメータを per-point で上書き
P 属性は特殊扱いで tx / ty / tz を上書きしフィールド中心位置として機能
– 空欄時は単一フィールド (Field POP 自身のパラメータ値) として動作

Mode .mode 🔷

フィールドの形状を決定するメニューパラメータ

項目 内部名 説明
Sphere .sphere 球体 (Radius で半径指定、楕円体にも対応)
Box .box 直方体 (Size XYZ で寸法指定)
Torus .torus トーラス (ドーナツ形状)
Tube Infinite .tubeinfinite 両端が無限に伸びる円柱
Tube Capped .tubecapped 両端が平面で閉じた有限長の円柱
Tube Rounded .tuberounded 両端が球状にラウンドした有限長の円柱
Capsule .capsule 両端が半球で閉じたカプセル形状
X-Plane .xplane X 軸に垂直な無限平面 (半空間判定)
Y-Plane .yplane Y 軸に垂直な無限平面 (半空間判定)
Z-Plane .zplane Z 軸に垂直な無限平面 (半空間判定)
Parabola .parabola 放物面 (Exponent で曲率指定)
Line Projection .lineprojection Point A から Point B への直線上への投影距離ベース

形状寸法パラメータ 📐

Size .size 📐
– Box / 一部 shape の 3D 寸法 (Size X / Size Y / Size Z)
– Mode が Box のときに主に使用

Radius .rad
– フィールドの半径 (Radius X / Y / Z) — Sphere では楕円体としても使える
– Sphere / Torus / Tube 系で使用

Height .height 📏
– Tube Capped / Tube Rounded / Capsule の長さ

Roundness .roundness 🔵
– Tube Rounded など丸み付き shape の丸み係数

Point A / Point B .pointa_pointb 📍
– Line Projection mode で使用する起点 (Point A) と終点 (Point B) の 3D 座標
– 各点は X / Y / Z 3 軸で指定

Strength .strength 💪
– フィールドの強度 (Strength X / Strength Y)
– 出力 Weight 値のスケーリングに使用

Exponent .exponent 📈
– Parabola モード時のフィールド曲率を制御する指数

Transition Range .transitionrange 🌊

Transition Range .transitionrange 🌊
– Weight が 1 から 0 へ遷移する距離レンジ
– 0 のときは shape 境界で硬く 1 / 0 が切り替わる
– 大きい値ほど境界が滑らかにフェード

Transition Align .transitionalign 🎚️
– Transition Range > 0 のときに遷移の中心を shape 境界からどれだけずらすかを制御
– デフォルト 0: Weight = 0.5 が Radius 位置
– -0.5: Radius 位置で Weight = 0 (境界の内側で遷移完了)
– 0.5: Radius 位置で Weight = 1 (境界の外側へ遷移が広がる)

Transition Type .transitiontype 🔄
– Weight 遷移の補間関数を選択:

  • Linear (線形)
  • Smooth Step (3 次平滑)
  • Ease In Ease Out (両端緩急)

Weight 出力調整 ⚖️

Absolute Value .absvalue
– Transition 適用後の Weight 値を絶対値化するトグル

Invert .invert 🔃
– フィールド結果の Weight を反転 (shape 内側を 0、外側を 1 に)

To Range .torange 📊
– 出力 Weight の最終レンジを再マッピング (To Range Min / To Range Max)
– デフォルト [0, 1] を任意の範囲へ線形変換

Delete Zeros .deletezeros 🗑️
– Weight = 0 のポイントを出力から削除するトグル
– point cloud の領域切り出し用途で便利

Line Strip Behavior .linestripbehavior 📐
– Line Strip 構造のポイントが削除された際の挙動を指定


Transform Page 🔄

Transform Order .xord 🔁

Scale / Rotate / Translate の適用順序

項目 内部名 説明
Scale Rotate Translate .srt スケール → 回転 → 平行移動 の順
Scale Translate Rotate .str スケール → 平行移動 → 回転 の順
Rotate Scale Translate .rst 回転 → スケール → 平行移動 の順
Rotate Translate Scale .rts 回転 → 平行移動 → スケール の順
Translate Scale Rotate .tsr 平行移動 → スケール → 回転 の順
Translate Rotate Scale .trs 平行移動 → 回転 → スケール の順

Rotate Order .rord 🌀

回転の軸順序

項目 内部名 説明
Rx Ry Rz .xyz X → Y → Z の順で回転適用
Rx Rz Ry .xzy X → Z → Y の順で回転適用
Ry Rx Rz .yxz Y → X → Z の順で回転適用
Ry Rz Rx .yzx Y → Z → X の順で回転適用
Rz Rx Ry .zxy Z → X → Y の順で回転適用
Rz Ry Rx .zyx Z → Y → X の順で回転適用

Translate / Rotate / Scale / Pivot 📐

Translate .t ↔️
– フィールドを XYZ 3 軸方向に平行移動 (Translate X / Y / Z)

Rotate .r 🔁
– XYZ 各軸周りに回転 (Rotate X / Y / Z、単位は度)

Scale .s 📏
– XYZ 3 軸方向のスケール (Scale X / Y / Z)

Pivot .p 📍
– 回転・スケールの基準点となるピボット座標 (Pivot X / Y / Z)


Output Page 📤

Weight / Signed Distance 📊

Weight .weight ⚖️
– Weight 属性 (shape 内 1 / 外 0、Transition 適用済み) を出力するトグル

Signed Distance .signeddistance 📐
– 各ポイントの shape 表面までの符号付き距離を Dist 属性として出力
– shape 外側で正、内側で負の値

Per-Field Weights / Distances 🗂️

Per-Field Weights .perfieldweights 🗂️
– Specification POP 使用時、各フィールドごとの Weight を配列属性として出力するトグル
– 出力属性スコープは Weights (perfieldweightsoutputattr) で指定

Per-Field Distances .perfielddistances 🗃️
– Specification POP 使用時、各フィールドごとの Distance を配列属性として出力するトグル
– 出力属性スコープは Distances (perfielddistancesoutputattr) で指定

Combine Operation .combineop 🔀

計算した値を既存属性と合成する方法

項目 内部名 説明
None .none 合成せず Field POP 単独の出力をそのまま使用
Add .add Combine Attribute 値に Weight / Distance を加算
Multiply .mult Combine Attribute 値に Weight / Distance を乗算

Combine Entity .combineentity 🎚️

合成に使用する計算値の選択

項目 内部名 説明
Weight .weight Weight 値を Combine Operation の入力に使用
Signed Distance .signeddistance Signed Distance 値を Combine Operation の入力に使用

Combine Attribute / Output Attribute 🔗

Combine Attribute .combineattr 🔤
– 合成入力として読み込む既存属性のスコープ (属性名パターン)

Combine Output Attribute .combineoutputattr 📤

合成結果を書き込む出力属性

項目 内部名 説明
P .P ポイント位置属性へ書き込み
N .N ノーマル属性へ書き込み
Color .Color カラー属性 (RGBA) へ書き込み
Color.rgb .Color.rgb カラー属性の RGB 成分のみへ書き込み
Tex .Tex テクスチャ座標属性へ書き込み
PointScale .PointScale ポイントスケール属性へ書き込み
LineWidth .LineWidth ラインウィズス属性へ書き込み

Override Automatic Attribute .combineoverrideautoattr ⚙️

Override Automatic Attribute .combineoverrideautoattr ⚙️
– POP 入力とパラメータから自動決定される属性タイプを上書きするトグル
– オン時は Attribute Type / Components / Default Value を手動指定可能

Attribute Type .combineattrtype 🏷️

合成出力属性のデータ型

項目 内部名 説明
float .float 単精度浮動小数点 (デフォルト)
double .double 倍精度浮動小数点
int .int 符号付き整数
uint .uint 符号なし整数
Color .color カラー型 (単精度)
Color (double) .dcolor カラー型 (倍精度)
Direction .dir 方向ベクトル型 (単精度)
Direction (double) .ddir 方向ベクトル型 (倍精度)

Components .combineattrnumcomps 🔢

出力属性の成分数

項目 内部名 説明
1 .1 スカラー (1 成分)
2 .2 2 成分ベクトル
3 .3 3 成分ベクトル (XYZ / RGB)
4 .4 4 成分ベクトル (XYZW / RGBA)

Default Value 🎯

Default Value .combineattrdefaultval 🎯
– 合成出力属性の成分が計算不能だった場合のデフォルト値 (Default Value 0 / 1 / 2 / 3)
– Components で指定した成分数ぶんが使用される


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: 球領域でポイントクラウドを切り出す 🔮

Source Point Cloud POP → Field POP (Mode=Sphere, Delete Zeros=on) → Render TOP

Kinect や LiDAR から取得した広範囲の point cloud に対し、Field POP の Sphere モードで関心領域 (ROI) の球を定義し、Delete Zeros で球外の点を削除して、必要部分だけを下流レンダリングへ渡す典型フロー。

  1. Point Cloud ソース (例: kinectpointcloud1) を Field POP の input に接続
  2. Mode を Sphere、Radius を関心領域サイズに設定
  3. Transform Page の Translate で球の中心位置を切り出したい場所へ移動
  4. Output Page の Weight をオン、Delete Zeros をオンにして球外ポイントを削除
  5. 下流の Render TOP / Geometry COMP で切り出したセクションだけを描画

Example 2: パーティクル力場の局所適用 (PartForce マスク) 💨

Particle POP → Field POP (Mode=Box, Transition Range>0, Combine=Multiply, Combine Output=PartForce) → Particle POP

Particle POP のフォース属性 (PartForce 等) に対して Field POP の Box フィールドを乗算合成し、特定の直方体内でだけ力が効くように制限する用途。Transition Range で境界をソフトにすることで力が滑らかに減衰する自然な挙動を実現する。

  1. Particle POP の中流に Field POP を挿入
  2. Mode を Box に設定し Size XYZ で力場の領域を定義
  3. Transition Range を 0 以上に設定してフェード幅を確保
  4. Combine Operation を Multiply、Combine Entity を Weight、Combine Output Attribute を PartForce 系に指定
  5. 後段の Particle POP が領域内のみフォースを受けるようになる

Example 3: Specification POPで複数場を合成 🌐

Generator POP (per-field spec) → Field POP (specpop=...) → Render TOP (Weight 属性をシェーダ入力)

Generator 系 POP で 1 ポイント = 1 フィールド定義となるポイント属性 (sizex / radx / P 等) を持つジオメトリを作成し、Field POP の Specification POP に渡すことで、1 つの Field POP ノードで複数の球・箱フィールドの Weight を同時合成する応用フロー。

  1. Generator POP で per-field spec ジオメトリを作成 (各ポイントが P = フィールド中心、radx = 半径 等を保持)
  2. Field POP の Specification POP に Generator POP のパスを指定
  3. Field POP の Mode は spec ポイントの attribute から per-field で上書きされる
  4. Output Page の Per-Field Weights をオンにすれば配列属性として個別 Weight も取得可能
  5. 出力 Weight 属性を Render TOP / GLSL POP のシェーダ uniform として参照

関連オペレータ 🔗

類似機能OP 🔍

  • Group POP — POP family における点グループの選択・分離 (Field POP の Weight 出力と組み合わせて領域選択用途で機能近接)
  • Attribute POP — 属性自体の作成・編集オペレータ (Field POP が生成する Weight / Dist 属性を後段で整形するのに頻用)

組み合わせ推奨OP 🔄

  • Particle POP — Field POP の Weight を PartForce 属性に乗算してフォース局所化
  • Math POP — Field POP 出力 Weight を後段で正規化・スケーリング
  • Lookup Attribute POP — Field POP の Weight 属性をルックアップキーとして他属性に値マッピング

前処理・後処理POP 🎯


Info POP情報 📊

Field 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: 出力ジオメトリのポイント数 (Delete Zeros オン時は shape 内に残ったポイント数)
  • num_point_attribs: 出力ジオメトリのポイント属性数 (Weight / Dist 等の追加分を含む)
  • num_vertex_attribs: 出力ジオメトリの頂点属性数
  • num_prim_attribs: 出力ジオメトリのプリミティブ属性数
  • num_prims: 出力ジオメトリのプリミティブ数
  • gpu_memory_used: この POP が使用している GPU メモリ量

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: Weight が全ポイントで 0 / 1 のままで shape 形状が反映されない
✅ Solution:

  • Mode が想定した shape (Sphere / Box 等) になっているか確認
  • Size / Radius / Height がジオメトリのスケールに対して適切な値か確認 (小さすぎると全外、大きすぎると全内)
  • Transform Page の Translate でフィールド中心がジオメトリ範囲内に配置されているか確認

❌ Problem: 境界が硬すぎる / フェードが効かない
✅ Solution:

  • Transition Range を 0 より大きい値に設定して遷移幅を確保
  • Transition Align を調整して遷移の中心を内側 / 外側にずらす
  • Transition Type を smoothstepeaseinout に変更してより滑らかな曲線にする

❌ Problem: Specification POP の per-point 上書きが効かない
✅ Solution:

  • Specification POP のポイント属性名が Field POP のパラメータ内部名 (例: radx / sizex) と完全一致しているか確認
  • Menu / Toggle 系パラメータを上書きする場合は 0 始まりの整数属性値で指定
  • P 属性が Specification POP のポイントに存在すれば自動的に tx / ty / tz を上書きする仕様を活用

❌ Problem: Combine Operation で属性が上書きされ既存値が失われる
✅ Solution:

  • Combine Operation を None 以外にする場合、Combine Output Attribute が意図した属性 (PartForce 等) になっているか確認
  • Combine Attribute / Output Attribute を別属性に分けて出力するか、Override Automatic Attribute をオンにして専用属性を新規作成
  • Attribute POP を後段で挟んで合成前の属性をバックアップすることも検討

参考資料 📚

その他 🔗

公式リソース 📖

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