
概要 📖 – 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
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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」のときのみ作用します。
回転値・法線計算 .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 や音楽ビジュアライザの基本フローです。
- Audio Device In CHOP でマイクまたは楽曲ファイルから音声を取得
- Math CHOP の Pre-Add / Multiply で振幅を ±1 程度に正規化し、サンプル数を Resample CHOP で適切に間引く
- Limit SOP の Channels Page で
X Channelに時間軸ダミー (Pattern CHOP 等)、Y Channelに正規化済み音声振幅を設定 - Output Page で
Output TypeをPolygonal Lineに、Limit パラメータはOffまたはClampに設定 - 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 を割り当てればポイントごとに太さも変化させられます。
- Pattern CHOP で X / Y / Z 座標用の sine 波チャンネルと半径制御用のチャンネル (合計 4 ch) を生成
- Limit SOP の Channels Page で
X Channel/Y Channel/Z Channel/Radius Channelをそれぞれ対応するチャンネル名に設定 - Output Page で
Output TypeをTubesに、Divisionsでチューブ断面の解像度 (例: 8) を指定 Compute Normalsをオンにしてシェーディング用法線を計算- 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 でポイントごとに半径を制御 LimitをClampに設定し 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) でポイントカラー / アルファを参照する設定になっているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

