
概要 📖 – 形状領域から重みを生む
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) 属性付きジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 で球外の点を削除して、必要部分だけを下流レンダリングへ渡す典型フロー。
- Point Cloud ソース (例:
kinectpointcloud1) を Field POP の input に接続 - Mode を
Sphere、Radius を関心領域サイズに設定 - Transform Page の Translate で球の中心位置を切り出したい場所へ移動
- Output Page の Weight をオン、Delete Zeros をオンにして球外ポイントを削除
- 下流の 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 で境界をソフトにすることで力が滑らかに減衰する自然な挙動を実現する。
- Particle POP の中流に Field POP を挿入
- Mode を
Boxに設定し Size XYZ で力場の領域を定義 - Transition Range を 0 以上に設定してフェード幅を確保
- Combine Operation を
Multiply、Combine Entity をWeight、Combine Output Attribute をPartForce系に指定 - 後段の 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 を同時合成する応用フロー。
- Generator POP で per-field spec ジオメトリを作成 (各ポイントが
P= フィールド中心、radx= 半径 等を保持) - Field POP の Specification POP に Generator POP のパスを指定
- Field POP の Mode は spec ポイントの attribute から per-field で上書きされる
- Output Page の Per-Field Weights をオンにすれば配列属性として個別 Weight も取得可能
- 出力 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 を
smoothstepやeaseinoutに変更してより滑らかな曲線にする
❌ 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 を後段で挟んで合成前の属性をバックアップすることも検討
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Field POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- 属性 (Attribute) の基礎
- TouchDesigner公式ドキュメント – FieldPOP Class

