
概要 📖 – 平面格子メッシュ・NURBS・Bezier サーフェスの生成
Grid SOPは、平面格子状のメッシュ・NURBS・Bezier サーフェスを Rows / Cols 分割と Primitive Type で生成する SOPです。入力 SOP がある場合は Modify Bounds でバウンディング Box にフィットさせ、Rows / Cols で頂点密度を、Texture Coordinates で UV を制御できます。
主な用途 🎯
- 平面格子ポリゴンメッシュの生成 (XY / YZ / ZX のいずれかの平面に Size と Rows / Cols で展開)
- Rows / Cols による頂点密度制御で、後段 Noise SOP / Deform 系の変形解像度を確保
- 入力 SOP のバウンディングに沿った Grid 配置 (Modify Bounds で入力ジオメトリの範囲に自動フィット)
- NURBS / Bezier サーフェスの生成 (Primitive Type で切替、U Order / V Order でスプライン次数を指定)
- Connectivity と Texture Coordinates の切替で頂点接続方式 (Rows / Cols / Triangles / Quads 等) と UV 生成方式を選択
データフロー 🔄
入力 (オプション): バウンディング元 SOP
↓
Size / Center / Anchor でジオメトリ配置を決定
↓
Rows / Cols でメッシュ分割密度を指定
↓
Primitive Type と Connectivity で表現方式を選択
↓
出力: 平面格子の Mesh / NURBS / Line SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
Primitive Type .type 🧱
Grid を生成する際のプリミティブ表現方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Mesh | .mesh |
ポリゴンメッシュとして Grid を生成 (一般的な用途・後段 Deform 系と互換) |
| NURBS | .nurbs |
NURBS サーフェスとして Grid を生成 (U Order / V Order でスプライン次数を指定) |
| Bezier | .bezier |
Bezier サーフェスとして Grid を生成 (U Order / V Order でスプライン次数を指定) |
※ 注意: Primitive Type を選択した時点で、その方式に対応しない一部の SOP パラメータは無効化されます。
Connectivity .surftype 🔗
メッシュ / ポリゴンの頂点接続方式 (Mesh の場合のみ可視)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rows | .rows |
横方向 (行) のラインのみで構成 |
| Columns | .cols |
縦方向 (列) のラインのみで構成 |
| Rows and Columns | .rowcol |
行と列の両方のラインで構成 (ワイヤフレーム表示では Quads に見えるが、ポリゴンは open) |
| Triangles | .triangles |
三角形ポリゴンで Grid を構成 |
| Quadrilaterals | .quads |
四角形ポリゴンで Grid を構成 (デフォルト) |
| Alternating Triangles | .alttriangles |
対角を交互に反転させた三角形で Grid を構成 |
※ 注意: Connectivity は Primitive Type が Mesh のときにのみ結果が反映されます (NURBS / Bezier では無視)。
Orientation .orient 🧭
Grid を配置する基準平面
| 項目 | 内部名 | 説明 |
|---|---|---|
| XY Plane | .xy |
XY 平面 (Z 軸が法線方向) に Grid を生成 |
| YZ Plane | .yz |
YZ 平面 (X 軸が法線方向) に Grid を生成 |
| ZX Plane | .zx |
ZX 平面 (Y 軸が法線方向) に Grid を生成 |
バウンディング入力関連パラメータ 📐
Modify Bounds .modifybounds 🔧
– 入力 SOP が接続されているときのみ有効
– オンにすると入力ジオメトリのバウンディングに Grid をフィットさせつつ、下記 Transform 系パラメータ (Size / Center 等) で位置・スケールを追加修正できる
– オフのときは入力のバウンディングそのままで Grid が配置される
Size / Center 関連パラメータ 📏
Size .size 📏
– Grid の X / Y 方向のスケール (寸法)
– sizex / sizey の 2 軸で指定
Center .t 📍
– Grid の中心位置を X / Y / Z 座標で指定
– tx / ty / tz の 3 軸
Anchor 関連パラメータ ⚓
Reverse Anchors .reverseanchors ↔️
– Anchor U / V の方向を反転させる
Anchor U .anchoru 📍
– X 方向で位置・スケール・回転の基準となるアンカー位置を指定
Anchor V .anchorv 📍
– Y 方向で位置・スケール・回転の基準となるアンカー位置を指定
Rows / Columns 分割パラメータ 🔢
Rows .rows ➖
– 横方向のラインの本数 (行数)
– 2 Rows × 2 Cols で 1 つの四角形になり、1 Row × 2 Cols で Connectivity が Rows のときは単一の横ライン
– NURBS / Bezier サーフェスでは Rows の本数は対応する U Order を下回ってはならない
Columns .cols ❘
– 縦方向のラインの本数 (列数)
– Rows と組み合わせて頂点密度を決める。後段 Noise SOP / Deform 系の解像度はここで決まる
– NURBS / Bezier サーフェスでは Cols の本数は対応する V Order を下回ってはならない
NURBS / Bezier Order 関連パラメータ 📈
U Order .orderu 🔢
– U 方向 (X 軸方向) のスプライン基底の次数 + 1
– Primitive Type が NURBS / Bezier のときのみ有効。Rows の本数より大きく設定するとエラー
V Order .orderv 🔢
– V 方向 (Y 軸方向) のスプライン基底の次数 + 1
– Primitive Type が NURBS / Bezier のときのみ有効。Cols の本数より大きく設定するとエラー
End Point Interpolate in U .interpu 📌
– U 方向の端点をサーフェスが通るように補間
– Primitive Type が NURBS / Bezier のときに端点位置を厳密に揃えたい場合にオン
End Point Interpolate in V .interpv 📌
– V 方向の端点をサーフェスが通るように補間
– Primitive Type が NURBS / Bezier のときに端点位置を厳密に揃えたい場合にオン
Texture Coordinates .texture 🎨
Grid 面への UV テクスチャ座標割り当て方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
UV 座標を生成しない |
| Row & Columns | .rowcol |
Rows / Cols の分割に基づいて UV 座標を生成 |
法線関連パラメータ 🧭
Compute Normals .normals 🧮
– オンにすると Grid 面のサーフェス法線を計算する
– レンダリングでライティングを正しく評価するために必要
実践アイデア 💡
Example 1: 基本平面メッシュを 1 ノードで生成 🟢
Grid SOP (Primitive Type=Mesh, Connectivity=Quads, Size=2,2, Rows=2, Cols=2) → Geometry COMP → Render TOP
Grid SOP デフォルト設定で 2×2 単位の平面メッシュを生成し、Geometry COMP に渡してレンダリングする最小構成。シーンの床面・スクリーン面・テクスチャ表示用 quad を作る基本パターンとして頻繁に使う。
- Grid SOP を配置し
Primitive TypeをMesh、ConnectivityをQuadrilateralsに設定 Sizeを 2, 2 に、Centerを 0, 0, 0 に設定して原点周りに展開Texture CoordinatesをRow & Columnsにして UV を生成Compute Normalsをオンにしてライティング用法線を有効化- Geometry COMP に接続し、Camera COMP / Light COMP / Render TOP でレンダリング結果を確認
Example 2: 高解像度 Grid を Noise SOP で変形して地形を生成 🌊
Grid SOP (Rows=100, Cols=100, Connectivity=Triangles) → Noise SOP → Geometry COMP
Grid SOP の Rows / Cols を 100×100 に設定して頂点密度を上げ、後段の Noise SOP で Y 方向に変位させてプロシージャル地形を生成する典型パターン。Rows / Cols が変形のディテール解像度を決める。
- Grid SOP を配置し
RowsとColumnsをともに 100 に設定して頂点密度を上げる ConnectivityをTrianglesにして変形時に面が破綻しにくい三角形分割を選択OrientationをZX Planeにして Y 軸を法線方向 (上方向) に揃える- Noise SOP を後段に接続し、Y 軸方向の Amplitude / Frequency / Roughness で地形の起伏を調整
- Geometry COMP に接続して結果を確認
Example 3: NURBS サーフェスとしての Grid を生成 ✨
Grid SOP (Primitive Type=NURBS, Rows=8, Cols=8, U Order=4, V Order=4) → Point SOP → Geometry COMP
Primitive Type を NURBS に切り替え、U Order / V Order でスプライン次数を指定したスムーズなサーフェスを生成する例。後段の Point SOP でコントロールポイントを動かすことで滑らかな曲面を造形できる。
- Grid SOP を配置し
Primitive TypeをNURBSに変更 RowsとColumnsを 8 に、U Order/V Orderを 4 に設定End Point Interpolate in U/End Point Interpolate in Vをオンにして端点を厳密に通すよう補間- Point SOP を後段に接続し、コントロールポイントの Y 座標を式や Noise で操作してサーフェス形状を整形
- Geometry COMP に接続してスムーズな NURBS 曲面を確認
関連オペレータ 🔗
類似機能OP 🔍
- Rectangle SOP — 矩形プリミティブ (Grid SOP の Rows=2 / Cols=2 相当の最小構成)
- Box SOP — 立方体・直方体プリミティブ (Grid SOP は Box の 1 面に相当)
- Circle SOP — 円・円盤プリミティブ (Grid と並ぶ 2D 基礎形状 SOP)
組み合わせ推奨OP 🔄
- Noise SOP — Grid の頂点をノイズで変位させて地形・波・有機形状を生成
- Transform SOP — Grid の出力にさらに移動・回転・スケールを掛ける
- Copy SOP — Grid を複製してタイル状やパターン状に並べる
- Geometry COMP — Grid の出力をレンダリングパイプラインに投入
前処理・後処理SOP 🎯
Info CHOP情報 📊
Grid 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: Rows / Cols を増やしても変形のディテールが上がらない
✅ Solution:
- 後段の Noise SOP / Deform 系は Grid の頂点位置にしか作用しないため、
RowsとColumnsの本数が変形解像度の上限になる仕様 — 必要な解像度に合わせて Rows / Cols を増やす ConnectivityがQuadrilateralsのままだと変形時に四角形が破綻して見えやすいのでTrianglesに切り替えると安定する- 頂点数を増やしすぎるとクックコストが急増するため、Info CHOP の
num_pointsでポイント数を確認しつつ調整
❌ Problem: Modify Bounds が効かない
✅ Solution:
- Modify Bounds は input1 に SOP が接続されているときのみ有効になる仕様 — 上流に SOP を接続しているか確認
- 入力 SOP のポイント数が 0 の場合、バウンディングが取得できないため挙動が無視される — 上流の SOP がジオメトリを出力しているか確認
- Modify Bounds をオフのままだと Size / Center の変更が入力ジオメトリのバウンディングに上書きされて反映されない
❌ Problem: NURBS / Bezier に切り替えるとエラーになる
✅ Solution:
U OrderがRowsの本数より大きい、またはV OrderがColumnsの本数より大きいとエラーになる仕様 — Rows / Cols を Order 以上に増やすか、Order を Rows / Cols 以下に下げるConnectivityは NURBS / Bezier では無視される — 形状が想定と違う場合はPrimitive TypeをMeshに戻す- 後段に Convert SOP を接続して NURBS / Bezier をポリゴンに変換すると下流の SOP との互換性が確保できる
❌ Problem: テクスチャが貼られない / UV が出ない
✅ Solution:
Texture CoordinatesがOffのままだと UV が生成されない仕様 —Row & Columnsに切り替え- Grid 自体に UV があっても後段の SOP で UV を上書き / 削除している可能性があるため、レンダリング直前の SOP に Info DAT を当てて UV アトリビュートの有無を確認
- MAT 側でテクスチャ参照が外れていないか (TOP path / Sampler の設定) も併せて確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Grid SOP
- TouchDesigner公式ドキュメント – Rectangle SOP
- TouchDesigner公式ドキュメント – Box SOP
- TouchDesigner公式ドキュメント – Convert SOP

