
概要 📖 – 属性値を範囲内に制限
Limit POPは、入力ジオメトリの属性値を最小値と最大値で挟み、範囲外を Clamp / Loop / Zig Zag でラッピングしたり Quantize で量子化したりして出力する POPです。入力と同じトポロジを保ったまま、指定範囲に収められた属性値を持つジオメトリが出力されます。
主な用途 🎯
- ポイント・頂点・プリミティブ属性の値を最小値・最大値で制限
- 範囲を超えた値の処理方法 (Clamp / Loop / Zig Zag) を選択して挙動を切替
- Quantize で属性値を離散ステップに量子化してデジタル的な表現を作成
- Positive Only で負値を絶対値に変換し符号を反転
- Cast to / Override Automatic Attribute で出力属性の型・成分数をカスタマイズ
データフロー 🔄
入力: 属性付きジオメトリ
↓
最小値・最大値で値を制限 + Wrap モード適用 + Quantize 量子化
↓
出力: 範囲内に収められた属性を持つジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Limit Page 📋
Attribute Class .attrclass 🎛️
処理対象とする属性クラス (Attribute Class) を選択するメニューパラメータ
Attribute Class .attrclass 🎛️
– Attribute Class (属性クラス) — ポイント属性・頂点属性・プリミティブ属性のうち、どのクラスに対して制限を適用するかを選択するメニュー
– 選択したクラスの属性のみが Limit POP の影響を受け、他クラスはそのまま出力に通過
Group 設定 🎯
Group .group 🎯
– Group (グループ) — 入力にグループが存在する場合、指定したグループ名に属する要素のみを処理対象に絞り込む
– 空欄の場合は全要素が処理対象になる
Input Attribute Scope .inputattrscope 🔤
Input Attribute Scope .inputattrscope 🔤
– Input Attribute Scope (入力属性スコープ) — 処理対象とする入力属性名・成分のパターンを指定 (例: P, P.y, Cd)
– 選択した Attribute Class 内で、どの属性・どの成分に対して制限を適用するかを絞り込む
Parameter Size .parsize 🔢
独立に設定できるパラメータ値の数 (Parameter Size) を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラ 1 成分を独立設定 (全成分共通) |
| 2 | .2 |
2 成分を独立設定 (2D ベクトル属性向け) |
| 3 | .3 |
3 成分を独立設定 (位置 P や法線 N 等の 3D ベクトル向け) |
| 4 | .4 |
4 成分を独立設定 (色 Cd 等の RGBA 4 成分向け) |
Limit Type .limittype 🔒
範囲外の値の処理方式 (Limit Type) を最小側・最大側それぞれ独立に選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
下限による制限を無効化し、Minimum Value 以下の値もそのまま通過 |
| Clamp | .clamp |
Minimum Value 未満の値を Minimum Value に固定 (一般的なクランプ) |
| Loop | .loop |
範囲を超えた量だけ最大側から折り返すモジュロ動作 (周期的ラッピング) |
| Zig Zag | .zigzag |
範囲を超えると反射して折り返す動作 (三角波状ラッピング) |
Min/Max 値 📏
Minimum Value .min ⬇️
– Minimum Value (最小値) — 出力属性が取りうる下限値
– Limit Type Minimum が off の場合は無視される
Maximum Value .max ⬆️
– Maximum Value (最大値) — 出力属性が取りうる上限値
– Limit Type Maximum が off の場合は無視される
Positive Only .positive ➕
– Positive Only (正値のみ) — 出力を絶対値化するトグルで、負値が来ると符号を反転して正値として出力
– 距離・大きさのように負値を許容しない属性で活用
Cast to .castto 🔄
出力属性の型を別の型 (Cast to) にキャストする設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Automatic | .auto |
入力属性の型をそのまま継承 (キャストなし) |
| Float | .float |
出力属性を浮動小数点型に変換 |
| Int | .int |
出力属性を整数型に変換 |
Output Attribute Scope .outputattrscope 🎯
出力先となる属性名 (Output Attribute Scope) と成分を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
ポイント位置属性 (P) に出力 |
| N | .N |
法線属性 (N) に出力 |
| Color | .Color |
色属性 (Color) 全成分に出力 |
| Color.rgb | .Color.rgb |
色属性の RGB 成分のみに出力 (アルファを除く) |
| Tex | .Tex |
テクスチャ座標属性 (Tex) に出力 |
| PointScale | .PointScale |
ポイントスケール属性に出力 (ポイントスプライト等で使用) |
| LineWidth | .LineWidth |
ライン幅属性に出力 (Line POP 系の太さ制御で使用) |
属性型 Override .overrideautoattr ⚙️
Override Automatic Attribute .overrideautoattr ⚙️
– Override Automatic Attribute (自動属性オーバーライド) — 入力と Limit POP の設定から自動決定される出力属性の型・成分数を、手動で上書きするトグル
– オンにすると下記 Attribute Type / Components / Default Value が有効化される
Attribute Type .attrtype 🔤
Override Automatic Attribute がオンのとき、出力属性のデータ型 (Attribute Type) を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
32bit 浮動小数点 (一般用途) |
| double | .double |
64bit 倍精度浮動小数点 (高精度用途) |
| int | .int |
32bit 符号付き整数 |
| uint | .uint |
32bit 符号なし整数 |
| Color | .color |
色型 (float ベース) |
| Color (double) | .dcolor |
倍精度色型 (double ベース) |
| Direction | .dir |
方向ベクトル型 (float ベース) |
| Direction (double) | .ddir |
倍精度方向ベクトル型 (double ベース) |
Components .attrnumcomps 🔢
Override Automatic Attribute がオンのとき、出力属性の成分数 (Components) を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラ 1 成分 |
| 2 | .2 |
2D ベクトル |
| 3 | .3 |
3D ベクトル |
| 4 | .4 |
4 成分 (RGBA など) |
Default Value .attrdefaultval 📌
Default Value .attrdefaultval 📌
– Default Value (デフォルト値) — 計算できなかったときに使われる出力属性のデフォルト値
– Components で指定した成分数に応じて attrdefaultval0 – attrdefaultval3 までの 4 成分まで個別に指定可能
Quantize Page 🎚️
Quantize .quantize 🎚️
属性値を有限の離散ステップに量子化する方式 (Quantize) を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
量子化を無効化 |
| Floor | .floor |
ステップに対して切り捨て (下方向に丸め) |
| Round | .round |
最も近いステップに丸める (四捨五入) |
| Ceiling | .ceiling |
ステップに対して切り上げ (上方向に丸め) |
| > 0 | .gt0 |
正値なら 1、それ以外は 0 にする閾値量子化 |
| >= 0 | .gteq0 |
ゼロ以上なら 1、負なら 0 にする閾値量子化 |
| == 0 | .eq0 |
ゼロのみ 1、それ以外は 0 |
| != 0 | .neq0 |
ゼロ以外を 1、ゼロを 0 |
| <= 0 | .lteq0 |
ゼロ以下なら 1、正なら 0 |
| < 0 | .lt0 |
負値なら 1、それ以外は 0 |
Value Step / Offset 📐
Value Step .quantstep 📐
– Value Step (量子化ステップ幅) — Floor / Round / Ceiling 量子化で使われる刻み幅
– 例えば 0.1 に設定すると属性値が 0.1 刻みのステップに量子化される
Value Offset .quantoffset 📍
– Value Offset (量子化オフセット) — 量子化の基準点をずらすオフセット値
– デフォルトはゼロ。例えばオフセット 0.05 で 0.05 / 0.15 / 0.25 のような中間刻みに量子化
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: 値クランプの基本 🔒
入力 POP → Limit POP (Limit Type=clamp, Min=0, Max=100) → Geometry COMP
ポイント位置属性 P の Y 成分を 0–100 の範囲に Clamp で固定し、ジオメトリの高さが特定範囲を超えないよう物理的に制約する基本フロー。
- 入力 POP のポイント属性
Pを Limit POP に渡す Attribute Classをpoint、Input Attribute ScopeをP.yに設定Limit Type Minimum/Limit Type Maximumをclampに、Minimum Value=0/Maximum Value=100を設定- 範囲外の Y 値が
0または100に固定された出力を確認 - 下流の Geometry COMP / Render TOP で描画して効果を視認
Example 2: 周期的に折り返し 🔁
Noise POP → Limit POP (Limit Type=loop, Min=0, Max=1) → Render TOP
Noise POP で生成した連続的な属性値を Loop モードの Limit POP に渡し、範囲を超えた値が反対側に折り返すモジュロ的ラッピングで周期的なパターンを作る用途。
- Noise POP で時間変化する属性 (例:
noise_val) を生成 Attribute ClassとInput Attribute Scopeを Noise の出力属性に合わせて設定Limit Type Minimum/Limit Type Maximumをloop、Minimum Value=0/Maximum Value=1を設定- 範囲を超えた値が反対側から再開する周期波形になることを確認
- Render TOP の uniform 入力として渡し、シェーダで周期的なテクスチャ表現に活用
Example 3: 値の量子化 🎚️
Attribute POP → Limit POP (Quantize=round, Value Step=0.1) → Geometry COMP
連続的な属性値を Quantize の Round モードで 0.1 刻みに離散化し、ステップ状の値変化でデジタル的・ローポリ的な表現を作る用途。
- Attribute POP で量子化したい連続属性を生成
Quantizeをroundに設定Value Stepを0.1に設定し、量子化の刻み幅を決定- 必要に応じて
Value Offsetで量子化基準点を調整 - 出力を Geometry COMP / Render TOP で確認し、ステップ状の変化を視認
関連オペレータ 🔗
類似機能OP 🔍
- Math POP — 属性値に対する一般的な数値演算 (加減乗除・スケーリング) を行う POP
- ReRange POP — 入力範囲から出力範囲への線形マッピングを行う POP (Limit が制限なのに対し ReRange は再写像)
- Trig POP — 三角関数や周期関数を属性に適用する POP (Loop モードと併用可能)
組み合わせ推奨OP 🔄
- Analyze POP — 解析で取得した最小値・最大値を Limit POP の Minimum / Maximum 入力として参照
- Math POP — Limit で制限した後にスケーリングやオフセットを適用して後処理
- Lookup Attribute POP — Limit の出力属性を参照テーブルとして他の POP の属性に流し込む
- Attribute POP — Limit の前段で属性の作成・名前変更・型変換を行ってから制限を適用
前処理・後処理POP 🎯
Info POP情報 📊
Limit 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 汎用情報 📊
num_points: 出力ジオメトリのポイント数num_point_attribs: 出力ジオメトリのポイント属性数num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数num_prims: 出力ジオメトリのプリミティブ数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 範囲指定したのに値が制限されない
✅ Solution:
Limit Type Minimum/Limit Type Maximumがoffになっていないか確認 (offでは制限が無効)Input Attribute Scopeが制限したい属性・成分にマッチしているか確認Attribute Class(point / vertex / primitive) が処理対象の属性クラスと一致しているか確認
❌ Problem: Loop / Zig Zag の挙動が想定と違う
✅ Solution:
- Loop は範囲を超えると反対側に折り返すモジュロ動作、Zig Zag は反射動作で挙動が異なるため、目的に合った方式を選択
Minimum ValueとMaximum Valueの大小が逆転していないか確認Parameter Sizeが想定成分数 (例: P なら 3) と一致しているか確認
❌ Problem: Quantize で値の刻みが期待通りにならない
✅ Solution:
Value Stepが量子化したい刻み幅と一致しているか確認Value Offsetで量子化の基準点をずらしている場合は意図通りか確認Quantizeモード (Floor / Round / Ceiling) の選択が目的の丸め方向と一致しているか確認
❌ Problem: 出力属性の型・成分数が期待と違う
✅ Solution:
Cast toがautoのままだと入力型に追従するため、明示的にFloat/Intを指定Override Automatic AttributeをオンにしてAttribute Type/Componentsで型と成分数を上書きDefault Value(attrdefaultval0–attrdefaultval3) で各成分の初期値を必要に応じ設定
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Limit POP
- POP 概要 (Points, Vertices and Primitives in POPs)
- 属性 (Attribute) の基礎
- Math POP (属性に対する数値演算)

