
概要 📖 – ジオメトリ型変換と再構成
Convert SOPは、入力ジオメトリを Polygon / NURBS / Bezier / Particles 等の別の型へ変換し、メッシュ密度・接続性・パーティクル描画形状も再構成する SOPです。From Type と Convert to で変換元・変換先を指定し、Level of Detail / Divisions per Span でスプライン → メッシュの密度を、Connectivity でメッシュ接続パターンを、Particle Type でパーティクル描画形状をそれぞれ制御できます。
主な用途 🎯
- プリミティブ (Sphere / Tube / Circle 等) のポリゴン化で、編集不可な原始プリミティブを Polygon Mesh に展開し、頂点・法線・UV を後段で自由に編集可能にする
- NURBS / Bezier ⇆ Polygon の相互変換で、滑らかなスプライン曲面とポリゴンメッシュを
Level of Detail設定で密度調整しながら相互に変換する - パーティクルの描画形状化で、
Particle SOPの出力をRender as LinesまたはRender as Point Spritesモードでレンダリング可能なジオメトリに変換する - From Type / Convert to の型フィルタ変換で、混在ジオメトリ入力から特定の型 (例: Mesh のみ) を抽出して別の型 (Polygon / NURBS Surface 等) に揃え、後段処理を均質化する
- Trimmed Surface の生成で、平面 NURBS / Bezier カーブを Trimmed NURBS Surface / Trimmed Bezier Surface に変換し、視覚的に綺麗な切り抜き曲面を作成する
- Connectivity による接続パターンの再構成で、Rows / Columns / Triangles / Quadrilaterals / Alternating Triangles 等から接続規則を選んでメッシュトポロジを再構築する
データフロー 🔄
入力: 任意 SOP のジオメトリ (Polygon / NURBS / Bezier / Particles / Sphere / Tube / Circle 等の混在可)
↓
From Type で対象タイプを絞り込み、Convert to で目標タイプを指定、Connectivity / Level of Detail / Divisions per Span / Particle Type で再構成パラメータを設定
↓
出力: 変換後のジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象グループの絞り込み 🎯
Group .group 🎯
– 入力ジオメトリに Group が定義されている場合、ここで指定したグループ名のプリミティブのみを変換対象にする
– パターンマッチング (* や [1-10] 等) が使用可能
– 空欄なら全プリミティブが変換対象になる
変換元タイプ (From Type) .fromtype 🔽
変換の対象とする入力ジオメトリの型を選択するメニューパラメータ。デフォルトは All Types。
| 項目 | 内部名 | 説明 |
|---|---|---|
| All Types | .all |
入力ジオメトリ内のすべての型を変換対象にする (デフォルト) |
| Sphere | .sphere |
Sphere プリミティブのみを変換対象 |
| Tube | .tube |
Tube プリミティブのみを変換対象 |
| Particles | .part |
Particle プリミティブのみを変換対象 |
| Meta-ball | .metaball |
Meta-ball プリミティブのみを変換対象 |
| Mesh | .mesh |
Mesh プリミティブのみを変換対象 |
| Bezier Curve | .bezcurve |
Bezier カーブのみを変換対象 |
| Bezier Surface | .bezsurf |
Bezier サーフェスのみを変換対象 |
| NURBS Curve | .nurbcurve |
NURBS カーブのみを変換対象 |
| NURBS Surface | .nurbsurf |
NURBS サーフェスのみを変換対象 |
| Circle | .circle |
プリミティブ Circle のみを変換対象 |
| Triangle Strip | .tristrip |
Triangle Strip プリミティブのみを変換対象 |
| Triangle Fan | .trifan |
Triangle Fan プリミティブのみを変換対象 |
変換先タイプ (Convert to) .totype 🔼
From Type で選択されたジオメトリを変換する目標タイプを選択するメニューパラメータ。デフォルトは Polygons。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Mesh | .mesh |
Mesh プリミティブに変換 |
| Bezier Curve | .bezcurve |
Bezier カーブに変換 |
| Bezier Surface | .bezsurf |
Bezier サーフェスに変換 |
| NURBS Curve | .nurbcurve |
NURBS カーブに変換 |
| NURBS Surface | .nurbsurf |
NURBS サーフェスに変換 |
| Circle | .circle |
プリミティブ Circle に変換 (Skeleton / Arm / Limb SOP との連携で利用) |
| Trimmed Bezier Surface | .trimbezsurf |
Trimmed Bezier サーフェスに変換 (平面カーブ入力時に綺麗な切り抜き曲面を生成) |
| Trimmed NURBS Surface | .trimnurbsurf |
Trimmed NURBS サーフェスに変換 (平面カーブ入力時に綺麗な切り抜き曲面を生成) |
| Particles | .part |
Particle プリミティブに変換 |
※ 注意: すべてのジオメトリが任意の型に変換できるわけではありません。例えば三角化された Polygon サーフェスから単一の NURBS サーフェスへの変換、または Mesh の球からプリミティブ Sphere への変換は行えません。Bezier カーブから NURBS カーブのように形状が保存される変換もあれば、平面でない NURBS / Bezier カーブを Trimmed Surface に変換すると非トリム曲面に置き換わるなど、入力形状によって挙動が変化します。
接続パターン (Connectivity) .surftype 🔗
生成されたサーフェスのポイント接続方法を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rows | .rows |
水平方向のラインのみを生成 |
| Columns | .cols |
垂直方向のラインのみを生成 |
| Rows and Columns | .rowcol |
行・列の両方を生成 (ワイヤフレーム表示では四角形に見えるが、プリミティブ型がポリゴンの場合は全ポリゴンが開いた状態) |
| Triangles | .triangles |
三角形でメッシュを構築 |
| Quadrilaterals | .quads |
四角形 (Quadrilaterals) でメッシュを構築 (デフォルト) |
| Alternating Triangles | .alttriangles |
向きが交互に変わる三角形を生成 (Triangles オプションに類似だが向きが対向) |
Level of Detail Page 📐
U / V 方向の密度 📐
U .lodu ↔️
– 生成されるジオメトリの U 方向ポイント / CV 数を制御するレベル指定
– NURBS サーフェスをポリゴンメッシュに変換する場合、1 なら NURBS の近似、2 なら非常に密なポリゴンメッシュになる
– primdist() 式を使って Level of Detail をカメラとの距離で動的に変化させると、近づくと密に・離れると粗くなる LOD 制御が可能
V .lodv ↕️
– 生成されるジオメトリの V 方向ポイント / CV 数を制御するレベル指定
– U と同様に 1 で近似・2 以上で高密度になる
– U と V を分けて指定することで U 方向だけ細かく V 方向は粗くするといった非対称メッシュも作成可能
Trim-Curve .lodtrim ✂️
– サーフェスのトリム部分を変換する際の Level of Detail
– 暗黙の定数 1 ではなく、ここで指定した値が Trim 曲線部分に適用される
Divisions per Span Page 🧱
スパンあたりの分割数 🧱
U .divu ↔️
– Divisions per Span モード時、U 方向の 1 スパンあたりの分割数を指定
– Level of Detail とは異なり、スプラインの 1 スパン区間を何分割するかで密度を制御する
V .divv ↕️
– Divisions per Span モード時、V 方向の 1 スパンあたりの分割数を指定
– U と同様にスパン単位で分割数を制御
Trim-Curve .divtrim ✂️
– Divisions per Span モード時、Trim 曲線部分の 1 スパンあたりの分割数を指定
– 暗黙の 1 ではなくここで指定した分割数が Trim 部分に適用される
U Order .orderu 🔢
– スプライン型に変換する際の U 方向の基底関数の次数 + 1 を指定
– NURBS / Bezier への変換時に補間の滑らかさを制御するパラメータ
V Order .orderv 🔢
– スプライン型に変換する際の V 方向の基底関数の次数 + 1 を指定
– U Order と組み合わせて変換後のスプラインサーフェスの滑らかさを決める
Preserve Original .new 🧷
– オンにすると変換後ジオメトリと一緒に元のジオメトリも保持される
– 元データと変換結果を同時に下流へ流したい場合 (比較・参照用) に有効
Interpolate Through Hulls .interphull 🌀
– ポリゴンの面 / グリッドを NURBS / Bezier のサーフェスやカーブに変換する際に適用されるオプション
– オンにすると生成されるカーブは元のポリゴンと同じトポロジを保つ
– オフにするとポリゴンのポイントは新しいカーブ / サーフェスを定義するためのハル (制御点群) として使用される
Particle Type .prtype ✨
– 変換先が Particles のときにパーティクルがどのように描画されるかを選択
– 詳細は下記表を参照
Particle Type の選択肢 .prtype ✨
Particle Type メニューパラメータの描画方式を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Render as Lines | .lines |
各パーティクルを 2 点ラインとして描画し、長さはパーティクルの速度から決定される。速度が無い場合は 1 ピクセル分の点として描画 |
| Render as Point Sprites | .pointprites |
各パーティクルをカメラに正対する正方形ピクセル群として描画 (Point Sprite MAT と併用)。サイズは Point Sprite MAT のパラメータと pscale 属性で決定され、テクスチャ座標 (0,0)〜(1,1) が自動生成される |
実践アイデア 💡
Example 1: Sphereをメッシュ化し頂点編集 🌐
Sphere SOP (Primitive type) → Convert SOP (From Type=Sphere, Convert to=Polygons, Level of Detail で U/V を調整) → Point SOP / Transform SOP で頂点編集 → Material SOP → Render TOP
TouchDesigner の Sphere SOP はデフォルトでプリミティブ Sphere を生成しますが、このままでは個別の頂点を編集できません。Convert SOP を挟んで From Type を Sphere、Convert to を Polygons (デフォルト) に設定し、Level of Detail Page の U / V でメッシュ密度を調整することで、ポリゴンメッシュ化された Sphere の各頂点を後段の Point SOP や Transform SOP で自由に編集できるようになります。
Sphere SOPを配置し、Primitive TypeをデフォルトのPrimitiveのまま使用- 下流に
Convert SOPを接続し、From TypeをSphere、Convert toをPolygonsに設定 Level of Detail PageのU/Vを1〜2程度で調整 (大きいほど密なメッシュ)ConnectivityはQuadrilaterals(デフォルト) またはTrianglesから目的に応じて選択- 出力を
Point SOPやTransform SOPに接続し、頂点単位の変形が反映されることを確認
Example 2: Particleを点スプライトで描画 ✨
Particle SOP → Convert SOP (From Type=Particles, Convert to=Particles, Particle Type=Render as Point Sprites) → Geometry COMP → Point Sprite MAT → Render TOP
Particle SOP が出力する Particle プリミティブをそのまま Geometry COMP に渡しても描画はできますが、Point Sprite として点ごとにテクスチャを貼ったり半透明合成したい場合は Convert SOP で Particle Type を Render as Point Sprites に設定し、Point Sprite MAT と組み合わせて描画します。Render as Lines モードを選ぶと、各パーティクルが速度ベクトルに沿った 2 点ラインとして描画されるため、軌跡風の表現が手軽に得られます。
Particle SOPを配置し、ソース・フォース・寿命などの基本設定を済ませる- 下流に
Convert SOPを接続、From TypeをParticles、Convert toをParticlesに設定 Divisions per Span PageのParticle TypeをRender as Point Spritesに切替Geometry COMPに出力を渡し、Material としてPoint Sprite MATをアサインRender TOPでカメラに正対する Sprite として描画されることを確認 (軌跡演出にしたい場合はRender as Linesに切替)
Example 3: NURBS面を低密度確認→高密度書出 🧊
NURBS Surface 入力 → Convert SOP (From Type=NURBS Surface, Convert to=Polygons, U/V=可変) → 編集用途は U=V=1、書き出し時は U=V=2 → Material SOP
滑らかな NURBS Surface 入力をリアルタイム編集用にはポリゴン密度を低く抑え、最終書き出しのみ高密度メッシュ化したい用途のパターンです。Convert SOP の Level of Detail Page の U / V をプロジェクト中で式駆動 (例: Constant CHOP で 1 ⇆ 2 切替) すると、編集時は軽量・出力時のみ重い変換に切り替えられます。
- NURBS サーフェスを生成する入力 (例:
Sphere SOPのPrimitive TypeをNURBSに設定) を用意 Convert SOPを接続し、From TypeをNURBS Surface、Convert toをPolygonsに設定- 編集中は
Level of Detail PageのU/Vを1に設定して軽量プレビュー - 最終出力時のみ
U/Vを2以上に上げて高密度メッシュを生成 - 値を
Constant CHOP/ Custom Parameter から駆動して編集モードと出力モードを 1 クリック切替できるようにする
関連オペレータ 🔗
類似機能OP 🔍
- Basis SOP — NURBS / Bezier の基底関数 (knot vector / order) を再構築する SOP (Convert は型自体を変えるのに対し、Basis は同じ型のままパラメータ化を変更)
組み合わせ推奨OP 🔄
- Sphere SOP — Primitive Sphere を生成、Convert で Polygons / Mesh / NURBS Surface 等に変換する起点
- Particle SOP — Particle プリミティブを Convert で Render as Lines / Point Sprites に変換して描画
- Material SOP — Convert で生成されたポリゴンメッシュにマテリアルをアサインしてレンダリング
- Point SOP — ポリゴン化後の頂点位置 / 法線 / カラーを編集
前処理・後処理SOP 🎯
Info CHOP情報 📊
Convert 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— このオペレータが最後にクックされたフレーム番号cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Convert SOP に入れても出力が変わらない / 想定の型にならない
✅ Solution:
From Typeが入力の実際のプリミティブ型と一致しているか確認 (混在入力ならAll Typesが安全)- 公式 docs の注記どおり、すべての型変換が可能なわけではない (例: 三角化された Polygon 面 → 単一 NURBS サーフェスは不可)。型の組み合わせが対応外の場合は出力されない
Groupパラメータに余分なパターンが残っていないか確認 — Group 指定が一致しないと変換対象がゼロになる
❌ Problem: NURBS / Bezier → Polygons 変換でメッシュが粗い / 密すぎる
✅ Solution:
Level of Detail PageのU/Vを上げてメッシュ密度を増やす (1は近似、2以上で高密度)- スパン単位で細かく制御したい場合は
Divisions per Span PageのU/Vを使う - Trim 曲線部分の密度は
Trim-Curveパラメータで別途調整する
❌ Problem: Convert to=Trimmed NURBS / Bezier Surface で期待した切り抜き曲面にならない
✅ Solution:
- 入力カーブが平面 (planar) かどうか確認 — 平面でないカーブの場合は Trimmed Surface ではなく非トリム曲面が生成される
- 平面性が崩れている場合は前段で Transform SOP 等で揃える
- Trim 曲線の Level of Detail (
lodtrim) を上げて Trim エッジの解像度を上げる
❌ Problem: Particle Type=Point Sprites にしても何も描画されない / 期待のサイズにならない
✅ Solution:
Convert toがParticlesになっているか確認 (Particle Type は Particles 変換時のみ有効)Geometry COMPにアサインしたマテリアルが Point Sprite MAT になっているか確認- サイズは Point Sprite MAT のパラメータと点属性
pscaleで決まるため、点にpscaleを持たせるか MAT 側のサイズパラメータを調整する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Convert SOP
- TouchDesigner公式ドキュメント – Point Sprite MAT
- TouchDesigner公式ドキュメント – Pattern Matching

