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

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

Limit POP の属性値制限機能を示す図

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

概要 📖 – 属性値を範囲内に制限

Limit POPは、入力ジオメトリの属性値を最小値と最大値で挟み、範囲外を Clamp / Loop / Zig Zag でラッピングしたり Quantize で量子化したりして出力する POPです。入力と同じトポロジを保ったまま、指定範囲に収められた属性値を持つジオメトリが出力されます。

主な用途 🎯

  • ポイント・頂点・プリミティブ属性の値を最小値・最大値で制限
  • 範囲を超えた値の処理方法 (Clamp / Loop / Zig Zag) を選択して挙動を切替
  • Quantize で属性値を離散ステップに量子化してデジタル的な表現を作成
  • Positive Only で負値を絶対値に変換し符号を反転
  • Cast to / Override Automatic Attribute で出力属性の型・成分数をカスタマイズ

データフロー 🔄

入力: 属性付きジオメトリ

最小値・最大値で値を制限 + Wrap モード適用 + Quantize 量子化

出力: 範囲内に収められた属性を持つジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 Minimumoff の場合は無視される

Maximum Value .max ⬆️
Maximum Value (最大値) — 出力属性が取りうる上限値
Limit Type Maximumoff の場合は無視される

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 で指定した成分数に応じて attrdefaultval0attrdefaultval3 までの 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 で固定し、ジオメトリの高さが特定範囲を超えないよう物理的に制約する基本フロー。

  1. 入力 POP のポイント属性 P を Limit POP に渡す
  2. Attribute ClasspointInput Attribute ScopeP.y に設定
  3. Limit Type Minimum / Limit Type Maximumclamp に、Minimum Value=0 / Maximum Value=100 を設定
  4. 範囲外の Y 値が 0 または 100 に固定された出力を確認
  5. 下流の Geometry COMP / Render TOP で描画して効果を視認

Example 2: 周期的に折り返し 🔁

Noise POP → Limit POP (Limit Type=loop, Min=0, Max=1) → Render TOP

Noise POP で生成した連続的な属性値を Loop モードの Limit POP に渡し、範囲を超えた値が反対側に折り返すモジュロ的ラッピングで周期的なパターンを作る用途。

  1. Noise POP で時間変化する属性 (例: noise_val) を生成
  2. Attribute ClassInput Attribute Scope を Noise の出力属性に合わせて設定
  3. Limit Type Minimum / Limit Type MaximumloopMinimum Value=0 / Maximum Value=1 を設定
  4. 範囲を超えた値が反対側から再開する周期波形になることを確認
  5. Render TOP の uniform 入力として渡し、シェーダで周期的なテクスチャ表現に活用

Example 3: 値の量子化 🎚️

Attribute POP → Limit POP (Quantize=round, Value Step=0.1) → Geometry COMP

連続的な属性値を Quantize の Round モードで 0.1 刻みに離散化し、ステップ状の値変化でデジタル的・ローポリ的な表現を作る用途。

  1. Attribute POP で量子化したい連続属性を生成
  2. Quantizeround に設定
  3. Value Step0.1 に設定し、量子化の刻み幅を決定
  4. 必要に応じて Value Offset で量子化基準点を調整
  5. 出力を 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 Maximumoff になっていないか確認 (off では制限が無効)
  • Input Attribute Scope が制限したい属性・成分にマッチしているか確認
  • Attribute Class (point / vertex / primitive) が処理対象の属性クラスと一致しているか確認

❌ Problem: Loop / Zig Zag の挙動が想定と違う
✅ Solution:

  • Loop は範囲を超えると反対側に折り返すモジュロ動作、Zig Zag は反射動作で挙動が異なるため、目的に合った方式を選択
  • Minimum ValueMaximum Value の大小が逆転していないか確認
  • Parameter Size が想定成分数 (例: P なら 3) と一致しているか確認

❌ Problem: Quantize で値の刻みが期待通りにならない
✅ Solution:

  • Value Step が量子化したい刻み幅と一致しているか確認
  • Value Offset で量子化の基準点をずらしている場合は意図通りか確認
  • Quantize モード (Floor / Round / Ceiling) の選択が目的の丸め方向と一致しているか確認

❌ Problem: 出力属性の型・成分数が期待と違う
✅ Solution:

  • Cast toauto のままだと入力型に追従するため、明示的に Float / Int を指定
  • Override Automatic Attribute をオンにして Attribute Type / Components で型と成分数を上書き
  • Default Value (attrdefaultval0attrdefaultval3) で各成分の初期値を必要に応じ設定

参考資料 📚

その他 🔗

公式リソース 📖

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