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

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

Limit SOP のジオメトリ生成機能を示す図

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

概要 📖 – CHOPの値から形状を生成

Limit SOPは、CHOP のチャンネル値からポイントとジオメトリを作り、出力位置を境界で制限する SOPです。Output Type で Polygonal Line / Tubes / Strips から形状を選び、Radius や Rotate などのチャンネルでポイントごとの属性を決めます。Limit パラメータでは境界の外側に出たときの挙動 (Clamp / Loop / Zigzag) を指定します。

主な用途 🎯

  • CHOPのチャンネル値からポイント座標とジオメトリを直接生成
  • 音声波形やパーティクルを 3D 形状としてリアルタイムに可視化
  • TubeやStripの動的メッシュを CHOP データから構築するパイプライン
  • バウンディングボックスで出力位置を Clamp / Loop / Zigzag に制限
  • RotateやRadius、色チャンネルでポイントごとの属性を一括制御

データフロー 🔄

入力: CHOP のサンプル値 (位置・回転・色等)

ポイント生成と形状構築 (Output Type の選択)

Limit 範囲と Texture / Rotate を適用

出力: ポイントとポリゴンを持つ SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Channels Page 📡

CHOP 入力 .chop_input 🎚️

CHOP .chop 📥
CHOP (入力CHOP) — サンプルデータを取得する CHOP ネットワーク / CHOP のパス
– 指定された CHOP からチャンネルを参照し、ポイント座標と属性を構築

回転順 .rotate_order 🔄

Rotate Channel X / Y / Z を適用する順序を決定するメニューパラメータ

項目 内部名 説明
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 の順で回転を適用

位置・回転チャンネル .pos_rot_channels 📍

X Channel .chanx 📐
X Channel (X座標チャンネル) — ポイントの tx 位置として読込む CHOP チャンネル名

Y Channel .chany 📐
Y Channel (Y座標チャンネル) — ポイントの ty 位置として読込む CHOP チャンネル名

Z Channel .chanz 📐
Z Channel (Z座標チャンネル) — ポイントの tz 位置として読込む CHOP チャンネル名

Rotate Channel X .chanrx 🔁
Rotate Channel X (X軸回転チャンネル) — 各ポイントに作られるジオメトリの X 軸回転データ
– Output Type が Polygon at Each Point または Primitive Circle at Each Point のときのみ有効

Rotate Channel Y .chanry 🔁
Rotate Channel Y (Y軸回転チャンネル) — 各ポイントに作られるジオメトリの Y 軸回転データ
– Polygon at Each Point / Primitive Circle at Each Point のみ有効

Rotate Channel Z .chanrz 🔁
Rotate Channel Z (Z軸回転チャンネル) — 各ポイントに作られるジオメトリの Z 軸回転データ
– Polygon at Each Point / Primitive Circle at Each Point のみ有効

半径チャンネル .radius_channels

Radius Channel .chanrad 🔘
Radius Channel (半径チャンネル) — 各ポイントに作られるジオメトリの半径を一律に制御する CHOP チャンネル
– Output Page の Radius パラメータと掛け合わされる

Radius Channel X .chanradx 🔘
Radius Channel X (X軸半径チャンネル) — X 軸方向の半径を個別に制御する CHOP チャンネル

Radius Channel Y .chanrady 🔘
Radius Channel Y (Y軸半径チャンネル) — Y 軸方向の半径を個別に制御する CHOP チャンネル

Radius Channel Z .chanradz 🔘
Radius Channel Z (Z軸半径チャンネル) — Z 軸方向の半径を個別に制御する CHOP チャンネル

色とテクスチャ .color_texture_channels 🎨

Alpha Channel .chanalpha 🪞
Alpha Channel (アルファチャンネル) — ポイントのアルファ値 (透明度) を制御する CHOP チャンネル

Red Channel .chanr 🔴
Red Channel (赤チャンネル) — ポイントの赤色成分 (Cd.r) を制御する CHOP チャンネル

Green Channel .chang 🟢
Green Channel (緑チャンネル) — ポイントの緑色成分 (Cd.g) を制御する CHOP チャンネル

Blue Channel .chanb 🔵
Blue Channel (青チャンネル) — ポイントの青色成分 (Cd.b) を制御する CHOP チャンネル

Texture W .texturew 🖼️
Texture W (テクスチャWオフセット) — ポイントの W テクスチャ座標オフセット
– 画像シーケンスのフレーム指定やタイムオフセットとして利用されることが多い


Custom Page 🧩

カスタム属性定義 .custom_attribute 🏷️

Custom Attribute .customattr 📝
Custom Attribute (カスタム属性シーケンス) — 生成されるジオメトリに付与する独自属性のシーケンス
– シーケンス内の各エントリで「属性名」と「割り当てるチャンネル」を定義

Name .customattr0name 🏷️
Name (属性名) — カスタム属性の名前 (例: pscale / age など)

Channel Zero .customattr0chan0 0️⃣
Channel Zero (要素0) — 属性の [0] 要素に割り当てる CHOP チャンネル (例: pscale[0])

Channel One .customattr0chan1 1️⃣
Channel One (要素1) — 属性の [1] 要素に割り当てる CHOP チャンネル

Channel Two .customattr0chan2 2️⃣
Channel Two (要素2) — 属性の [2] 要素に割り当てる CHOP チャンネル

Channel Three .customattr0chan3 3️⃣
Channel Three (要素3) — 属性の [3] 要素に割り当てる CHOP チャンネル


Output Page 📤

出力タイプ .output_type 🎛️

Limit SOP が生成する形状の種類を決めるメニューパラメータ

項目 内部名 説明
Polygonal Line .line 各サンプルをポイントとし、それらを順番につないだ折れ線ポリゴンを生成
Tubes .tubes パスに沿った中空のチューブを生成 (断面分割数は Divisions)
Strips .strips パスに沿った帯状のストリップを生成 (帯の幅方向ポイント数は Divisions)

ジオメトリ寸法 .geometry_dimensions 📏

Divisions .divisions 🔢
Divisions (分割数) — 生成形状の分割数を指定
– Tubes ではチューブ断面のポイント数、Strips ではストリップ断面のポイント数として作用

Radius .rad
Radius (半径) — 生成ジオメトリの基本半径
– Channels Page の Radius Channel と掛け合わされた最終半径が適用される

Smooth Flip .flipsmooth 🌀
Smooth Flip (回転反転の平滑化) — パスに沿って配置されるジオメトリの捻れを動的に補正
– フレームごとに発生する急な反転 (flip) を抑え、滑らかな回転推移にする

出力範囲の制限 .limit_mode 🚧

出力ジオメトリの位置を境界 (バウンディング領域) で制限する方法を指定するメニューパラメータ

項目 内部名 説明
Off .off 境界制限なし (CHOP の値をそのまま出力)
Clamp .clamp 境界に達した時点で値を境界値に固定 (はみ出し防止)
Loop .loop 境界を越えた値を反対側へラップ (周期的に折り返し)
Zigzag .zigzag 境界に当たるたびに方向を反転 (ジグザグに往復)

範囲の境界 .axis_limits 📦

X Limit .xlimit ↔️
X Limit (X軸境界) — Limit が有効なときの X 軸方向の最小値・最大値

Y Limit .ylimit ↕️
Y Limit (Y軸境界) — Limit が有効なときの Y 軸方向の最小値・最大値

Z Limit .zlimit 🔄
Z Limit (Z軸境界) — Limit が有効なときの Z 軸方向の最小値・最大値

テクスチャ適用 .texture_apply 🖼️

Apply Texture .texture
Apply Texture (テクスチャ適用) — 生成ジオメトリに u / v / w テクスチャ座標を割り当てる

Scale .texscale 🔍
Scale (テクスチャスケール) — 割り当てたテクスチャ座標をスケーリングする倍率

Offset .texoffset ↗️
Offset (テクスチャオフセット) — 割り当てたテクスチャ座標を平行移動するオフセット値

パスへの向き合わせ .orient_to_path 🧭

Orient to Path .orient 🧭
Orient to Path (パスに沿った向き) — 各ジオメトリをパス方向に揃える
– Polygon / Primitive Circle at Each Point では Z+ 方向がパス進行方向となる
– Tubes / Strips では断面がパス進行方向を向く

Lookat Object .lookat 👀
Lookat Object (注視対象) — 各ジオメトリの向きを揃えるターゲット OP のパス
– 各ジオメトリは指定オブジェクトの原点を向き続ける

ポリゴン回転モード .rotate_polys_mode 🔁

Polygon / Primitive Circle at Each Point モードで、各ポリゴンを Rotate パラメータでどう回転させるかを指定するメニュー

項目 内部名 説明
Off .off 回転を行わない (Rotate パラメータはグレーアウト)
On .on すべてのポリゴンに Rotate の値を一律に加算
Cumulative .cum Rotate の値をポリゴンごとに累積的に加算 (連続回転)

※ 注意: Rotate Polys は Output Type が「Polygon at Each Point」または「Primitive Circle at Each Point」のときのみ作用します。

引用元: 公式 docs

回転値・法線計算 .rotation_and_normals 📐

Rotate .rotate 🔁
Rotate (回転値) — Rotate Polys が ON / Cumulative のときに使用される X / Y / Z 軸の回転量

Compute Normals .normals 📏
Compute Normals (法線計算) — 生成ジオメトリに法線を自動で計算してアタッチする


実践アイデア 💡

Example 1: 音声波形を3Dライン化 🎵

Audio Device In CHOP → Math CHOP (正規化) → Limit SOP (Output Type: Polygonal Line) → Geometry COMP

マイクや楽曲入力を Audio Device In CHOP で取り込み、Math CHOP で振幅を ±1 の範囲に正規化してから Limit SOP の Polygonal Line モードに通すと、波形がリアルタイムで 3D の折れ線として可視化されます。VJ や音楽ビジュアライザの基本フローです。

  1. Audio Device In CHOP でマイクまたは楽曲ファイルから音声を取得
  2. Math CHOP の Pre-Add / Multiply で振幅を ±1 程度に正規化し、サンプル数を Resample CHOP で適切に間引く
  3. Limit SOP の Channels Page で X Channel に時間軸ダミー (Pattern CHOP 等)、Y Channel に正規化済み音声振幅を設定
  4. Output Page で Output TypePolygonal Line に、Limit パラメータは Off または Clamp に設定
  5. Geometry COMP に接続して Render TOP で表示、Wireframe MAT を使うと波形が線で描画される

Example 2: CHOPでチューブを生成 🌀

Pattern CHOP (sine 波 × 3 channels) → Limit SOP (Output Type: Tubes, Radius Channel) → Geometry COMP

Pattern CHOP で X / Y / Z 用の sine 波と半径用のチャンネルを生成し、Limit SOP の Tubes モードに通すと、CHOP データに沿った 3D チューブが動的に構築されます。Radius Channel を割り当てればポイントごとに太さも変化させられます。

  1. Pattern CHOP で X / Y / Z 座標用の sine 波チャンネルと半径制御用のチャンネル (合計 4 ch) を生成
  2. Limit SOP の Channels Page で X Channel / Y Channel / Z Channel / Radius Channel をそれぞれ対応するチャンネル名に設定
  3. Output Page で Output TypeTubes に、Divisions でチューブ断面の解像度 (例: 8) を指定
  4. Compute Normals をオンにしてシェーディング用法線を計算
  5. Geometry COMP と Render TOP に繋いで CHOP の値変化に応じてチューブがうねるアニメーションを確認

関連オペレータ 🔗

類似機能OP 🔍

  • Copy SOP — テンプレート形状をポイントに沿って複製
  • CHOP to SOP — CHOP データを直接 SOP ポイント属性に変換

組み合わせ推奨OP 🔄

  • Math CHOP — Limit に渡す前に値域を正規化・スケーリング
  • Trail CHOP — CHOP 値の時間履歴を蓄積して軌跡形状の元データに
  • Particle SOP — パーティクル運動から得たデータを Limit SOP で可視化
  • Sweep SOP — Limit SOP のラインに別の SOP 断面を沿わせて掃引

前処理・後処理SOP 🎯


Info CHOP情報 📊

Limit SOP は Info CHOP による詳細情報取得に対応しています。

ジオメトリ統計 📐

  • num_points: この SOP に含まれるポイント数
  • num_prims: この SOP に含まれるプリミティブ数
  • num_particles: この SOP に含まれるパーティクル数

GPU 転送タイミング 🎮

  • last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)
  • last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: 直近のクック所要時間 (ミリ秒)
  • cook_frame: このオペレータが最後にクックされたフレーム番号
  • warnings: このオペレータの警告数
  • errors: このオペレータのエラー数

クック統計 ⏱️

  • total_cooks: total_cooks — プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: cook_time — 直近のクック所要時間 (ミリ秒)
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

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

よくある問題と解決策 🔧

❌ Problem: ジオメトリが出力されない / ポイントが見えない
✅ Solution:

  • CHOP パラメータに正しい CHOP のパスが指定されているか確認 (相対パスのスコープに注意)
  • X Channel / Y Channel / Z Channel に指定したチャンネル名が、入力 CHOP に実在するチャンネル名と一致しているか確認
  • Output Type が想定どおりか確認 — Polygonal Line ではポイント数が 1 以下だと線にならない

❌ Problem: 形状が小さすぎる / 巨大すぎる / 画面外に出てしまう
✅ Solution:

  • 入力 CHOP の値域を確認し、前段の Math CHOP で世界座標スケールに合わせて正規化
  • Output Page の Radius を調整するか、Radius Channel でポイントごとに半径を制御
  • LimitClamp に設定し X / Y / Z Limit で出力範囲を明示的に絞り込む

❌ Problem: Tubes / Strips の表面が捻れる / 法線が乱れる
✅ Solution:

  • Compute Normals をオンにして法線を再計算
  • Smooth Flip をオンにしてフレーム単位の急な回転反転を抑制
  • Orient to Path を併用してチューブ断面をパスに沿わせ、必要に応じて Lookat Object で参照オブジェクトを指定

❌ Problem: 色やアルファが反映されない
✅ Solution:

  • Red Channel / Green Channel / Blue Channel / Alpha Channel に CHOP のチャンネル名が正しく入っているか確認
  • 後段で Copy SOP を使う場合、Copy SOP の Attributes Page で Use Template Point Attributes をオンにする
  • シェーダ側 (MAT) でポイントカラー / アルファを参照する設定になっているか確認

参考資料 📚

その他 🔗

公式リソース 📖

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