
概要 📖 – ドーナツ形状の生成
Torus SOPは、外周と断面の 2 つの半径からドーナツ形状を生成する SOPです。Primitive Type でメッシュ・NURBS・Bezier を選び、Rows / Columns で分割密度を、U Wrap / V Wrap と角度設定で開いた弧やパイプ状の部分トーラスまで制御できます。
主な用途 🎯
- ドーナツ形状プリミティブの生成(Radius で外周半径と内輪半径を指定)
- サーフェスタイプの選択(メッシュ / NURBS / Bezier の 3 種から生成方式を切替)
- Rows と Columns による分割密度の制御で後段の変形・レンダリング解像度を確保
- U Wrap / V Wrap と角度設定で開いた弧やパイプ状の部分トーラスを作成
- テクスチャ座標と法線の生成でレンダリング用の UV とライティング情報を付与
データフロー 🔄
入力 (オプション): バウンディング元 SOP
↓
Primitive Type / Orientation / Radius / Center で形状と配置を決定
↓
Rows / Columns で分割密度、U/V Wrap と角度で開閉と弧を制御
↓
出力: ドーナツ形状のジオメトリ SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Torus Page 📁
Primitive Type .type 🔷
Primitive Type (形状の種類) — トーラスをどの種類のジオメトリとして生成するかを選びます。詳細はジオメトリ系の公式記事を参照してください。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Mesh | .mesh |
ポリゴンメッシュとして生成 (汎用) |
| NURBS | .nurbs |
NURBS スプラインサーフェスとして生成 (滑らかな曲面) |
| Bezier | .bezier |
Bezier スプラインサーフェスとして生成 (制御点による曲面) |
Connectivity .surftype 🧩
Connectivity (面のつなぎ方) — メッシュ形状のときに、サーフェスをどのように構成するかを選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rows | .rows |
横方向のラインを生成 |
| Columns | .cols |
縦方向のラインを生成 |
| Rows and Columns | .rowcol |
縦横両方のライン。ワイヤーフレーム表示では四角形に見えるが、ポリゴンは開いた状態 |
| Triangles | .triangles |
三角形でサーフェスを構成 |
| Quadrilaterals | .quads |
四角形で各面を構成 (デフォルト) |
| Alternating Triangles | .alttriangles |
向きを交互にした三角形で構成 (Triangles に近い) |
Orientation .orient 🧭
Orientation (軸の向き) — トーラスを生成する基準軸を選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| X Axis | .x |
X 軸まわりにトーラスを構成 |
| Y Axis | .y |
Y 軸まわりにトーラスを構成 |
| Z Axis | .z |
Z 軸まわりにトーラスを構成 |
形状とサイズの関連パラメータ 📐
Modify Bounds .modifybounds 🔧
– Modify Bounds (境界の修正) — 入力 SOP が接続されているときのみ有効
– オンにすると下記の Transform 系パラメータでトーラスの位置と半径をさらに修正できる
Radius .rad ⭕
– Radius (半径) — 1 つ目の値 (radx) が外周半径、2 つ目の値 (rady) が内輪 (断面) の半径
– 外周と断面の比率でドーナツの太さが決まる
Center .t 📍
– Center (中心位置) — オブジェクト原点からのトーラス中心のオフセットを X / Y / Z で指定
Anchor 関連パラメータ ⚓
Reverse Anchors .reverseanchors ↔️
– Reverse Anchors (アンカー反転) — Anchor U / V / W の方向を反転させる
Anchor U .anchoru 📍
– Anchor U — X 方向で位置・スケール・回転の基準となるアンカー位置を指定
Anchor V .anchorv 📍
– Anchor V — Y 方向で位置・スケール・回転の基準となるアンカー位置を指定
Anchor W .anchorw 📍
– Anchor W — Z 方向で位置・スケール・回転の基準となるアンカー位置を指定
分割密度の関連パラメータ 🔢
Rows .rows ↔️
– Rows (行数) — トーラスの外周に沿った分割数を決める
Columns .cols ↕️
– Columns (列数) — トーラスの断面 (チューブの周) に沿った分割数を決める
Detail Page 📂
角度とスプラインの関連パラメータ 📐
Angle Offset .angleoffset 🔄
– Angle Offset (角度オフセット) — 断面半径まわりにトーラスを回転させる
– 例えば 4 行のとき 45 を指定すると、上面と下面が平らな断面になる
Imperfect .imperfect 〰️
– Imperfect (近似曲線) — Bezier / NURBS タイプのときのみ適用
– オンにするとチューブが近似的な非有理曲線になり、オフでは完全な有理曲線になる
U Order .orderu 🔢
– U Order (U 次数) — スプライン曲線を選んだ場合、U 方向をこの次数で構築する
V Order .orderv 🔢
– V Order (V 次数) — スプライン曲線を選んだ場合、V 方向をこの次数で構築する
U Angle .angleu 📐
– U Angle (U 角度) — U Wrap が無効のときの、トーラスの開始角度と終了角度
V Angle .anglev 📐
– V Angle (V 角度) — V Wrap が無効のときの、断面円の開始角度と終了角度
閉じ方と端面の関連パラメータ 🔁
U Wrap .closeu 🔄
– U Wrap (U 方向の閉じ) — オンにすると 360 度の断面を作成する
V Wrap .closev 🔃
– V Wrap (V 方向の閉じ) — オンにするとプリミティブを閉じて V 方向にトーラスを作成する
U End Caps .capu 🧢
– U End Caps (U 端面のフタ) — トーラスが 360 度未満のとき、端に面状のフタを付ける
– さらに細かいフタ設定をしたい場合はオフにして後段に Cap SOP を追加する
V End Caps .capv 🧢
– V End Caps (V 端面のフタ) — トーラスが開いているとき、上下の間に面を付ける
– さらに細かいフタ設定をしたい場合はオフにして後段に Cap SOP を追加する
Texture Coordinates .texture 🎨
Texture Coordinates (UV テクスチャ座標) — トーラスに UV 座標を付与する方式を選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
UV 座標を付与しない |
| Row & Columns | .rowcol |
ジオメトリの Rows と Columns に基づいて UV 座標を付与 |
法線関連パラメータ 🧭
Compute Normals .normals 🧮
– Compute Normals (法線の計算) — オンにするとサーフェス法線を計算する
– レンダリングでライティングを正しく評価するために必要
実践アイデア 💡
Example 1: 基本のドーナツ生成 🍩
Torus SOP (Primitive Type=Mesh, Radius=1.0/0.25, Texture Coordinates=Row & Columns) → Geometry COMP → Render TOP
Torus SOP 単体で外周半径 1.0 / 断面半径 0.25 のドーナツ形状を生成し、UV を付与してレンダリングする最小構成。プリミティブの動作確認やシーン構築の起点として頻繁に使うパターンです。
- Torus SOP を配置し
Primitive TypeをMeshに設定 Radiusを 1.0, 0.25 に設定して外周と断面の太さを決めるTexture CoordinatesをRow & Columnsに変更して UV を生成Compute Normalsをオンにしてライティング用法線を有効化- Geometry COMP に接続し、Camera COMP / Light COMP / Render TOP でレンダリング結果を確認
Example 2: 開いた弧を作る 🌙
Torus SOP (U Wrap=OFF, U Angle=0/180, U End Caps=ON) → Transform SOP → Geometry COMP
U Wrap をオフにして U Angle で開始角度と終了角度を指定し、トーラスの一部だけを切り出した開いた弧 (パイプ状) を生成するパターン。端面に End Caps を付けて閉じた見た目にします。
- Torus SOP を配置し
U Wrapをオフに切り替え U Angleを 0, 180 に設定して半周分の弧を生成U End Capsをオンにして弧の両端に面状のフタを付ける- 後段に Transform SOP を接続して配置を調整
- Geometry COMP に接続して結果を確認
Example 3: 複製でパターン化 🔗
Torus SOP (Rows=40, Columns=20) → Copy SOP → Geometry COMP
Rows と Columns を増やして滑らかなトーラスを生成し、後段の Copy SOP で複数並べてリング状やチェーン状のパターンを作るプロシージャルなモデリングパターン。分割数が変形やレンダリングのディテール解像度を決めます。
- Torus SOP を配置し
Rowsを 40、Columnsを 20 に設定して密度を上げる - 後段に Copy SOP を接続
- Copy SOP の複製数と Transform で並べ方 (回転・移動) を指定
- Geometry COMP に接続してパターン全体を確認
関連オペレータ 🔗
類似機能OP 🔍
- Sphere SOP — 球プリミティブを生成 (Torus SOP と並ぶ基礎形状 SOP)
- Tube SOP — 円柱・円錐プリミティブを生成 (基礎形状 SOP)
- Circle SOP — 円・楕円プリミティブを生成 (トーラスの断面に相当)
- Grid SOP — 平面格子プリミティブを生成 (基礎形状 SOP)
組み合わせ推奨OP 🔄
- Transform SOP — トーラスの出力にさらに移動・回転・スケールを掛ける
- Copy SOP — トーラスを複製してリング状やチェーン状に並べる
- Cap SOP — 開いたトーラスの端面に細かいフタを付ける
- Carve SOP — スプラインタイプのトーラスを U/V でスライス・抽出
前処理・後処理SOP 🎯
Info CHOP情報 📊
Torus 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:
RowsとColumnsの値が小さいと分割が粗くなる — 滑らかにしたい場合は両方を増やすCompute Normalsがオフだとライティングが面ごとに平坦になる — オンに切り替えて法線を計算する- 曲面の滑らかさを優先する場合は
Primitive TypeをNURBSに変更する運用も可
❌ Problem: U Angle / V Angle を変えてもトーラスが閉じたまま変化しない
✅ Solution:
U AngleはU Wrapが無効のときのみ効く仕様 — U Wrap をオフにしてから角度を指定するV Angleは同様にV Wrapが無効のときのみ効く — V Wrap をオフにする- Wrap がオンのままだと 360 度の閉じた形状になり角度設定は無視される点に注意
❌ Problem: 開いたトーラスの端面に穴が空いている
✅ Solution:
U End Caps/V End Capsをオンにして端面に面状のフタを付ける- より細かいフタ設定が必要な場合は End Caps をオフにして後段に Cap SOP を接続する
- 閉じたソリッドが欲しい場合は後段に Convert SOP を置いてポリゴンを閉じる運用も可
❌ Problem: テクスチャが正しく貼られない / UV が無い
✅ Solution:
Texture CoordinatesがOffのままだと UV が生成されない —Row & Columnsに切り替える- UV の解像度は Rows / Columns の分割数に依存するため、細かいテクスチャには分割数を増やす
- 断面の向きを調整したい場合は
Angle Offsetでトーラスを回転させて UV の基準を合わせる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Torus SOP
- TouchDesigner公式ドキュメント – Sphere SOP
- TouchDesigner公式ドキュメント – Tube SOP
- TouchDesigner公式ドキュメント – Cap SOP

