
概要 📖 – 点ごとに属性を編集する
Point SOPは、入力ジオメトリの各点に対し位置・色・法線・速度などの属性を式で追加・編集・削除する SOPです。me.inputPoint.x のような式で各点の値を参照しながら編集でき、パーティクルや力場で使う属性もまとめて付与します。
主な用途 🎯
- 各点の位置を式で動かす(Position に
me.inputPoint.x等の式を入れて変形) - 頂点カラー・透明度の付与と編集(Color / Alpha 属性を追加・変更・削除)
- 法線・テクスチャ座標の生成(Normal / Texture 属性を点ごとに付与)
- パーティクル用の属性付け(質量・抵抗・速度・寿命などを点に持たせる)
- アトラクタとして働く力の属性付与(半径・放射力・法線力などで他の粒子を引き寄せる)
データフロー 🔄
入力: ジオメトリの点群
↓
属性処理 (各点の位置・色・法線・速度などを式で編集)
↓
出力: 属性が追加・更新された点群の SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Point Page 📁
対象の絞り込み 🎯
Group .group 🎯
– Group (対象グループ) — 入力にグループがある場合、ここにグループ名を指定するとそのグループの点だけを処理対象にする
– パターンマッチング (* 等) が使える
位置の編集 📍
Position .t 📍
– Position (位置) — 各点の XYZ 座標を式で変換する。編集対象は me.inputPoint.x / me.inputPoint.y / me.inputPoint.z
– me.inputPoint.x をそのまま入れると無変更で通過し、me.inputPoint.x + 5 とすると X 座標が 5 単位ずれる。X / Y / Z それぞれに式を書ける
Weight .doweight ⚖️
Weight (重み) — 点の重み属性を維持するか新しい重みを与えるかを選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Weight | .off |
既存の重みを維持する |
| New Weight | .on |
新しい重み属性を与える (下の Weight フィールドの式を使用) |
重みと透明度の式 🔢
Weight .weight ⚖️
– Weight (重みの式) — 上のメニューで New Weight を選んだとき、点の重み値を式で制御する。編集対象は me.inputPoint.w
– 重みは 0.0001 から無限大までの値を取れる
Alpha .alpha 🌫️
– Alpha (透明度) — RGB と同じ方法でアルファ属性を制御する。アルファは Cd[3] で、入力からは me.inputColor[3] で参照する
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]
Normal .donml 🧭
Normal (法線) — 点の法線属性を維持・追加・削除のいずれにするかを選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Normal | .off |
既存の法線を維持する |
| Add Normal | .on |
N 法線属性を追加・変更する (下の Normals フィールドの式を使用) |
| No Normal | .remove |
N 法線属性を SOP から削除する |
法線の式 🧭
Normals .n 🧭
– Normals (法線の式) — Add Normal を選んだとき、各点の法線を式で変える。編集対象は me.inputNormal[0] / me.inputNormal[1] / me.inputNormal[2]
– 点法線は Turbulence / Facet / Copy など他の SOP が利用する方向ベクトル
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]
Width(Line MAT ) .dowidth 📏
Width(Line MAT ) (線の幅) — 線の幅属性を維持するか新しい幅を与えるかを選択する。この width 属性は Line MAT で線をレンダリングするときの線幅制御に使う
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Width | .off |
既存の幅属性を維持する |
| New Width | .on |
新しい width 属性を追加・変更する (下の Width フィールドの式を使用) |
幅とスケールの式 🔢
Width(Line MAT ) .width 📏
– Width(Line MAT ) (線の幅の式) — New Width を選んだとき、点の幅を式で制御する。編集対象は me.inputPoint.width[0]
Scale .dopscale 🔍
Scale (スケール) — pscale 属性を維持・追加・削除のいずれにするかを選択する。pscale は Particle SOP と Point Sprite MAT で粒子サイズの乗数として使われる
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Scale | .off |
既存の scale 属性を維持する |
| Add Scale | .on |
pscale 属性を追加・変更する (下の Scale フィールドの式を使用) |
| No Scale | .remove |
pscale 属性を SOP から削除する |
スケールの式 🔍
Scale .pscale 🔍
– Scale (スケールの式) — Add Scale を選んだとき、点の粒子スケールを式で制御する。編集対象は me.inputPoint.pscale[0]
Custom 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 成分まで入力できる)
Particle Page ✨
Point Mass/Drag .domass ⚖️
Point Mass/Drag (質量と抵抗) — 点の質量・抵抗属性を維持・追加・削除のいずれにするかを選択する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Mass/Drag | .off |
既存の質量・抵抗属性を維持する |
| Add Mass/Drag | .on |
質量・抵抗属性を追加・変更する |
| No Mass/Drag | .remove |
質量・抵抗属性を SOP から削除する |
質量・抵抗・張力の式 🪨
Mass .mass 🪨
– Mass (質量) — Add Mass/Drag を選んだとき、mass 属性を追加・変更する。No Mass/Drag を選ぶと mass 属性が削除される
Drag .drag 🪂
– Drag (抵抗) — Add Mass/Drag を選んだとき、drag 属性を追加・変更する。No Mass/Drag を選ぶと drag 属性が削除される
Tension .dotension 🪢
– Tension (張力) — 張力は点が接続している辺の弾性に影響する
Tension .tension 🪢
– Tension (張力の式) — Add Tension を選んだとき、tension 属性を式で制御する。編集対象は me.inputPoint.tension[0]。No Tension を選ぶと tension 属性が削除される
Spring K .dospringk 🌀
Spring K (バネ定数) — 点のバネ定数属性を維持・追加・削除のいずれにするかを選択する。バネ定数は各点に作用する物理特性
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Spring K | .off |
既存のバネ定数属性を維持する |
| Add Spring K | .on |
springk 属性を追加・変更する |
| No Spring K | .remove |
springk 属性を SOP から削除する |
バネ定数の式 🌀
Spring K .springk 🌀
– Spring K (バネ定数の式) — Add Spring K を選んだとき、springk 属性を式で制御する。編集対象は me.inputPoint.springk[0]。No Spring K を選ぶと springk 属性が削除される
Velocity .dovel 🚀
Velocity (速度) — 点の速度属性を維持・追加・削除のいずれにするかを選択する。X / Y / Z 方向の粒子速度の大きさを定義する
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Velocity | .off |
既存の速度属性を維持する |
| Add Velocity | .on |
v 速度属性を追加・変更する |
| No Velocity | .remove |
v 速度属性を SOP から削除する |
速度の式 🚀
Velocity .v 🚀
– Velocity (速度の式) — Add Velocity を選んだとき、各点の速度を式で変える。編集対象は me.inputPoint.v[0] / me.inputPoint.v[1] / me.inputPoint.v[2] (X / Y / Z)
Up Vector .doup ⬆️
Up Vector (アップベクトル) — 点のアップ属性を作成・削除する。点の周囲の空間を完全に定義する up ベクトルで、パーティクルのインスタンス化やジオメトリのコピー時に使う
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Up Vector | .off |
既存の up 属性を維持する |
| Add Up Vector | .on |
up 属性を追加・変更する |
| No Up Vector | .remove |
up 属性を SOP から削除する |
アップベクトルの式 ⬆️
Up Vector .up ⬆️
– Up Vector (アップベクトルの式) — Add Up Vector を選んだとき、各点の up ベクトルを式で変える。編集対象は me.inputPoint.up[0] / me.inputPoint.up[1] / me.inputPoint.up[2] (X / Y / Z)。Copy SOP では法線と併用して複製の向きを制御する
Force Page 💨
Radius .doradius 📐
Radius (半径) — radiusf 属性を維持・追加・削除のいずれにするかを選択する。距離による減衰効果を変えるための属性で、減衰は r/(r+d^2) (r は半径、d はアトラクタ点からの距離)。半径を設定しないと減衰は行われない
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Radius | .off |
既存の半径属性を維持する |
| Add Radius | .on |
radiusf 属性を追加・変更する |
| No Radius | .remove |
radiusf 属性を SOP から削除する |
F Scale .doscale ✖️
F Scale (力の倍率) — scalef 属性を維持・追加・削除のいずれにするかを選択する。このアトラクタ点に関連付けられた合計の力の乗数。半径と力の倍率は属性が作られていないと既定で 1 になる
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep F Scale | .off |
既存の力の倍率属性を維持する |
| Add F Scale | .on |
scalef 属性を追加・変更する |
| No F Scale | .remove |
scalef 属性を SOP から削除する |
Radial F .doradialf 🎯
Radial F (放射力) — radialf 属性を維持・追加・削除のいずれにするかを選択する。アトラクタ点に向かう力。正の倍率は引き寄せ、負の倍率は遠ざける
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Radial F | .off |
既存の放射力属性を維持する |
| Add Radial F | .on |
radialf 属性を追加・変更する |
| No Radial F | .remove |
radialf 属性を SOP から削除する |
Normal F .donormalf 🧭
Normal F (法線方向の力) — normalf 属性を維持・追加・削除のいずれにするかを選択する。点の法線方向に向かう力
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Normal F | .off |
既存の法線方向の力属性を維持する |
| Add Normal F | .on |
normalf 属性を追加・変更する |
| No Normal F | .remove |
normalf 属性を SOP から削除する |
Edge F .doedgef 📏
Edge F (辺方向の力) — edgef 属性を維持・追加・削除のいずれにするかを選択する。プリミティブの面タイプにのみ働き、その点から伸びる辺の方向に力が向かう。Point SOP 内で力の方向が計算されるため、向きを変形させたい場合は Point SOP より前にすべての変形を行う
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Edge F | .off |
既存の辺方向の力属性を維持する |
| Add Edge F | .on |
edgef 属性を追加・変更する |
| No Edge F | .remove |
edgef 属性を SOP から削除する |
Dir. F .dodirf 🧲
Dir. F (任意方向の力) — dirf 属性を維持・追加・削除のいずれにするかを選択する。距離減衰関数の影響を受ける任意方向の力
| 項目 | 内部名 | 説明 |
|---|---|---|
| Keep Dir. F | .off |
既存の任意方向の力属性を維持する |
| Add Dir. F | .on |
dirf 属性を追加・変更する (X / Y / Z 成分) |
| No Dir. F | .remove |
dirf 属性を SOP から削除する |
力の式 🔢
Radius .radiusf 📐
– Radius (半径の式) — Add Radius を選んだとき、距離減衰の値を式で制御する。No Radius を選ぶと radiusf 属性が削除される
F Scale .scalef ✖️
– F Scale (力の倍率の式) — Add F Scale を選んだとき、力の乗数を式で制御する。No F Scale を選ぶと scalef 属性が削除される
Radial F .radialf 🎯
– Radial F (放射力の式) — Add Radial F を選んだとき、向きを持つ力の値を式で制御する。No Radial F を選ぶと radialf 属性が削除される
Normal F .normalf 🧭
– Normal F (法線方向の力の式) — Add Normal F を選んだとき、法線方向の力の値を式で制御する。No Normal F を選ぶと normalf 属性が削除される
Edge F .edgef 📏
– Edge F (辺方向の力の式) — Add Edge F を選んだとき、辺方向の力の値を式で制御する。No Edge F を選ぶと edgef 属性が削除される
Dir. F .dirf 🧲
– Dir. F (任意方向の力の式) — Add Dir. F を選んだとき、任意方向の力の値を式で制御する。編集対象は X dirfx / Y dirfy / Z dirfz。No Dir. F を選ぶと dirf 属性が削除される
実践アイデア 💡
Example 1: 点の位置を波打たせる 🌊
Grid SOP → Point SOP (Position Y = me.inputPoint.x の sin) → Geometry COMP → Render TOP
Grid SOP の格子点に対し Point SOP の Position フィールドへ三角関数の式を入れ、各点の Y 座標を X 座標に応じて上下させる波形変形。点ごとの式編集の基本を確認できる定番パターン。
- Grid SOP を配置して格子状の点群を用意する
- Point SOP を後段に接続する
Positionの Y フィールドにsin(me.inputPoint.x * 5 + absTime.seconds) * 0.3のような式を入れる- X 座標に応じて Y が波打ち、時間で揺れる面ができる
- Geometry COMP / Camera COMP / Render TOP で描画結果を確認する
Example 2: 頂点カラーを付与する 🎨
Sphere SOP → Point SOP (Color = Add Color, diff に位置依存の式) → Geometry COMP
Sphere SOP のジオメトリに Point SOP で Cd 色属性を追加し、各点の位置を使った式で頂点カラーを与えるパターン。色属性を持たないジオメトリにグラデーションを乗せたいときに使う。
- Sphere SOP を配置して球ジオメトリを用意する
- Point SOP を接続し
ColorをAdd Colorに設定する Colorの赤にme.inputPoint.x + 0.5、緑にme.inputPoint.y + 0.5のような位置依存の式を入れる- 頂点ごとに色が変わるグラデーションが付く
- Geometry COMP に接続して描画で色を確認する
Example 3: パーティクル用の速度を仕込む 🚀
Grid SOP → Point SOP (Velocity = Add Velocity, v に上向きの式) → Particle SOP → Geometry COMP
Grid SOP の放出元点に Point SOP で v 速度属性をあらかじめ仕込み、後段の Particle SOP がその初速を使って粒子を放出するパターン。点ごとに初速をばらつかせたいときに有効。
- Grid SOP を配置して放出元の点群を用意する
- Point SOP を接続し
VelocityをAdd Velocityに設定する Velocityの Y に2 + rand(me.inputPoint.P) * 0.5のような式を入れて初速をばらつかせる- 後段に Particle SOP を接続し、点が持つ v 属性を初速として粒子を放出する
- Geometry COMP で粒子の動きを確認する
関連オペレータ 🔗
類似機能OP 🔍
- Attribute Create SOP — 点・頂点・プリミティブに任意の属性を作成する SOP
- Attribute SOP — 属性の名前変更・削除・型変更を行う SOP
組み合わせ推奨OP 🔄
- Particle SOP — Point SOP で仕込んだ速度・質量・寿命属性を使って粒子を放出
- Copy SOP — Point SOP の法線・up 属性を使って複製の向きを制御
- Point Sprite MAT — pscale 属性を点スプライトのサイズ乗数として利用
- Line MAT — Point SOP の width 属性で線レンダリング時の線幅を制御
前処理・後処理SOP 🎯
Info CHOP情報 📊
Point 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:
Positionに入れた式の参照名を確認 — 位置はme.inputPoint.x/me.inputPoint.y/me.inputPoint.zで参照するGroupにグループ名を指定している場合、そのグループに点が含まれているか確認 (空グループだと何も処理されない)- 前段の SOP が点を出力しているか確認 — ポイント数が 0 だと編集対象がない
❌ Problem: 色や法線が反映されない
✅ Solution:
Color/NormalのメニューがKeepのままだと既存値が維持され編集が効かないため、Add Color/Add Normalに切り替える- 色を式で変えるときは赤
me.inputColor[0]等の参照名が合っているか確認する - 後段のレンダリングが頂点カラーや法線を使う設定になっているか、前段に Attribute Create SOP 等で属性が用意されているか確認する
❌ Problem: Edge F の力の向きが思った方向にならない
✅ Solution:
- 辺方向の力は Point SOP 内で方向が計算されるため、後段の変形は反映されない — 向きを変えたい変形はすべて Point SOP より前に行う
Edge Fはプリミティブの面タイプにのみ働くため、点群だけのジオメトリでは効果が出ないことを確認する- 前段で Transform SOP 等の変形を済ませてから Point SOP に渡す
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Point SOP
- TouchDesigner公式ドキュメント – Attributes
- TouchDesigner公式ドキュメント – Particle SOP

