
概要 📖 – 頂点ごとに属性を編集する
Vertex SOPは、入力ジオメトリの頂点ごとに色・透明度・テクスチャ座標などの属性を編集・作成する SOPです。点単位ではなく頂点単位で属性を扱う点が Point SOP との違いで、同じ点を共有する複数の面に別々の色や UV を割り当てられます。
主な用途 🎯
- 頂点ごとの色の付与と編集(同じ点を共有する面それぞれに別の色を持たせる)
- 頂点ごとのテクスチャ座標の生成(UV を頂点単位で割り当てて貼り分ける)
- 面の継ぎ目をはっきり分ける色分け(点ではなく頂点に色を置き境界をくっきりさせる)
- サブディビジョン用のクリース重みの設定(辺ごとの折れ具合を頂点属性で制御)
- 頂点へのカスタム属性の追加(数値やベクトルの独自データを頂点に持たせる)
データフロー 🔄
入力: ジオメトリの頂点
↓
属性処理 (各頂点の色・テクスチャ座標・クリース・カスタム属性を式で編集)
↓
出力: 頂点属性が追加・更新されたジオメトリの SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Vertex Page 📁
対象の絞り込み 🎯
Group .group 🎯
– Group (対象グループ) — 入力にグループがある場合、ここにグループ名を指定するとそのグループだけを処理対象にする
– パターンマッチング (* 等) が使える
Color .doclr 🎨
Color (色) — 入力ジオメトリの頂点カラー属性を維持・追加・削除のいずれにするかを選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Color | .off |
既存の色属性を維持する |
| Add Color | .on |
Cd 色頂点属性を追加・変更する (下の Color フィールドの式を使用) |
| No Color | .remove |
Cd 色頂点属性を SOP から削除する |
色と透明度の式 🖌️
Color .diff 🎨
– Color (色の式) — Add Color を選んだとき、頂点色を式で制御する。編集対象は赤 me.inputColor[0] / 緑 me.inputColor[1] / 青 me.inputColor[2] / アルファ me.inputColor[3]
– No Color を選ぶと Cd 色頂点属性が削除される
Alpha .alpha 🌫️
– Alpha (透明度) — RGB と同じ方法でアルファ属性を制御する。アルファは Cd[3] で、入力からは me.inputColor[3] で参照する
Texture .douvw 🗺️
Texture (テクスチャ座標) — 入力ジオメトリの頂点テクスチャ座標属性を維持・追加・削除のいずれにするかを選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Texture | .off |
既存のテクスチャ座標を維持する |
| Add Texture | .on |
uv テクスチャ座標頂点属性を追加・変更する (下の Texture フィールドの式を使用) |
| No Texture | .remove |
uv テクスチャ座標頂点属性を SOP から削除する |
テクスチャ座標の式 🗺️
Texture .map 🗺️
– Texture (テクスチャ座標の式) — Add Texture を選んだとき、頂点テクスチャ座標の値を式で制御する。編集対象は me.inputTexture[0] / me.inputTexture[1] / me.inputTexture[2]
– No Texture を選ぶと uv テクスチャ座標頂点属性が削除される
Crease .docrease 📐
Crease (クリース) — creaseweight 属性を維持・追加・削除のいずれにするかを選択する。クリース重みはサブディビジョンサーフェスで辺ごとの折れの鋭さを設定する属性で、各頂点から次の頂点へ伸びる辺の重みを定義する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Crease | .off |
既存のクリース重みを維持する |
| Add Crease | .on |
creaseweight 属性を追加・変更する (下の Crease フィールドの式を使用) |
| No Crease | .remove |
creaseweight 属性を SOP から削除する |
※ 注意: クリース重みは 0 より大きい値にする。値が大きいほどサブディビジョン時の辺が鋭くなる。クリース属性は Subdivide SOP に渡すと可視化できる。
クリースの式 📏
Crease .crease 📐
– Crease (クリースの式) — Add Crease を選んだとき、クリース重みの値を式で制御する。編集対象は me.inputVertex.creaseWeight[0]
– 重みは 0.0001 から無限大までの値を取れる
Attributes Page 🏷️
カスタム属性の定義 🏷️
Custom Attribute .attr 🧩
– Custom Attribute (カスタム属性) — 作成するジオメトリに追加するカスタム属性のシーケンス (複数定義できる)
Name .attr0name 🔤
– Name (属性名) — この名前でカスタム属性を作成する
Type .attr0type 🔣
Type (属性の型) — 作成するカスタム属性の型をこのメニューから選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
浮動小数点 1 成分 |
| vec2 | .vec2 |
浮動小数点 2 成分ベクトル |
| vec3 | .vec3 |
浮動小数点 3 成分ベクトル |
| vec4 | .vec4 |
浮動小数点 4 成分ベクトル |
| int | .int |
整数 1 成分 |
| ivec2 | .ivec2 |
整数 2 成分ベクトル |
| ivec3 | .ivec3 |
整数 3 成分ベクトル |
| ivec4 | .ivec4 |
整数 4 成分ベクトル |
カスタム属性の値 🔢
Value .attr0value 🔢
– Value (属性値) — これらのパラメータでカスタム属性の値を設定する (型に応じて最大 4 成分まで入力できる)
実践アイデア 💡
Example 1: 面の継ぎ目で色を分ける 🎨
Box SOP → Vertex SOP (Color = Add Color, 面ごとに別の式) → Geometry COMP → Render TOP
Box SOP の各面に Vertex SOP で頂点カラーを与え、同じ点を共有する面でも頂点単位で別々の色を持たせるパターン。点に色を置くと面の境界がぼけるが、頂点に置くと継ぎ目をくっきり分けられる。
- Box SOP を配置して立方体ジオメトリを用意する
- Vertex SOP を後段に接続し
ColorをAdd Colorに設定する Colorの赤・緑・青にme.inputColor[0]等を基準にした式を入れて頂点色を決める- 同じ点を共有する面でも頂点ごとに異なる色が付き、境界がはっきり分かれる
- Geometry COMP / Camera COMP / Render TOP で描画結果を確認する
Example 2: 頂点ごとに UV 貼り分け 🗺️
Grid SOP → Vertex SOP (Texture = Add Texture, map に式) → Phong MAT → Geometry COMP
Grid SOP のジオメトリに Vertex SOP で頂点テクスチャ座標を追加し、面ごとに UV を割り当ててテクスチャを貼り分けるパターン。点単位の UV では表現しにくい面ごとの貼り分けに向く。
- Grid SOP を配置してテクスチャを貼る面を用意する
- Vertex SOP を接続し
TextureをAdd Textureに設定する Textureにme.inputTexture[0]/me.inputTexture[1]を基準にした式を入れて UV を決める- Phong MAT などにテクスチャを設定して描画する
- Geometry COMP に接続してテクスチャの貼り方を確認する
Example 3: クリース重みを設定 📐
Box SOP → Vertex SOP (Crease = Add Crease, crease に重みの式) → Subdivide SOP → Geometry COMP
Box SOP の辺に Vertex SOP でクリース重みを設定し、後段の Subdivide SOP で細分化したときに特定の辺だけ鋭く残すパターン。重みが大きい辺ほど折れがはっきり保たれる。
- Box SOP を配置して立方体ジオメトリを用意する
- Vertex SOP を接続し
CreaseをAdd Creaseに設定する Creaseの式にme.inputVertex.creaseWeight[0]を基準にした正の重みを入れる- 後段に Subdivide SOP を接続して細分化する
- 重みを付けた辺だけ鋭く残り、他の辺はなめらかになることを Geometry COMP で確認する
関連オペレータ 🔗
類似機能OP 🔍
- Point SOP — 点ごとに属性を編集する SOP (Vertex SOP は頂点ごと)
- Attribute Create SOP — 点・頂点・プリミティブに任意の属性を作成する SOP
- Attribute SOP — 属性の名前変更・削除・型変更を行う SOP
組み合わせ推奨OP 🔄
- Subdivide SOP — Vertex SOP のクリース重みを使って辺ごとの折れ具合を反映
- Material SOP — 頂点色や UV を持つジオメトリにマテリアルを割り当て
- Texture SOP — 投影方式での UV 生成と頂点単位の UV 編集を組み合わせ
前処理・後処理SOP 🎯
Info CHOP情報 📊
Vertex 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: このオペレータのエラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 頂点に置いた色が点単位に変わってしまう
✅ Solution:
- 属性は点か頂点のどちらか一方にしか持てないため、入力に点カラー属性があると頂点属性へ自動的に昇格される — 入力側の点カラー属性を確認する
- 前段で Point SOP が色を点に置いていないか確認し、頂点で扱いたい場合は点側の色を整理する
ColorがKeep Colorのままだと編集が効かないためAdd Colorに切り替える
❌ Problem: テクスチャ座標が反映されない
✅ Solution:
TextureのメニューがKeep Textureのままだと既存値が維持されるためAdd Textureに切り替える- UV を式で変えるときは
me.inputTexture[0]等の参照名が合っているか確認する - 後段のマテリアルがテクスチャ座標を使う設定になっているか、前段に Texture SOP 等で UV が用意されているか確認する
❌ Problem: クリース重みがサブディビジョンに効かない
✅ Solution:
- クリース重みは 0 より大きい値にする — 0 以下だと辺が鋭く残らない
CreaseがAdd Creaseになっているか、式がme.inputVertex.creaseWeight[0]を基準にしているか確認する- 後段に Subdivide SOP を接続しているか確認する (クリースはサブディビジョン時に効く属性)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Vertex SOP
- TouchDesigner公式ドキュメント – Attributes
- TouchDesigner公式ドキュメント – Point SOP

