Point SOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Point SOP の点属性編集機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 点ごとに属性を編集する

Point SOPは、入力ジオメトリの各点に対し位置・色・法線・速度などの属性を式で追加・編集・削除する SOPです。me.inputPoint.x のような式で各点の値を参照しながら編集でき、パーティクルや力場で使う属性もまとめて付与します。

主な用途 🎯

  • 各点の位置を式で動かす(Position に me.inputPoint.x 等の式を入れて変形)
  • 頂点カラー・透明度の付与と編集(Color / Alpha 属性を追加・変更・削除)
  • 法線・テクスチャ座標の生成(Normal / Texture 属性を点ごとに付与)
  • パーティクル用の属性付け(質量・抵抗・速度・寿命などを点に持たせる)
  • アトラクタとして働く力の属性付与(半径・放射力・法線力などで他の粒子を引き寄せる)

データフロー 🔄

入力: ジオメトリの点群

属性処理 (各点の位置・色・法線・速度などを式で編集)

出力: 属性が追加・更新された点群の SOP

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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 座標に応じて上下させる波形変形。点ごとの式編集の基本を確認できる定番パターン。

  1. Grid SOP を配置して格子状の点群を用意する
  2. Point SOP を後段に接続する
  3. Position の Y フィールドに sin(me.inputPoint.x * 5 + absTime.seconds) * 0.3 のような式を入れる
  4. X 座標に応じて Y が波打ち、時間で揺れる面ができる
  5. Geometry COMP / Camera COMP / Render TOP で描画結果を確認する

Example 2: 頂点カラーを付与する 🎨

Sphere SOP → Point SOP (Color = Add Color, diff に位置依存の式) → Geometry COMP

Sphere SOP のジオメトリに Point SOP で Cd 色属性を追加し、各点の位置を使った式で頂点カラーを与えるパターン。色属性を持たないジオメトリにグラデーションを乗せたいときに使う。

  1. Sphere SOP を配置して球ジオメトリを用意する
  2. Point SOP を接続し ColorAdd Color に設定する
  3. Color の赤に me.inputPoint.x + 0.5、緑に me.inputPoint.y + 0.5 のような位置依存の式を入れる
  4. 頂点ごとに色が変わるグラデーションが付く
  5. Geometry COMP に接続して描画で色を確認する

Example 3: パーティクル用の速度を仕込む 🚀

Grid SOP → Point SOP (Velocity = Add Velocity, v に上向きの式) → Particle SOP → Geometry COMP

Grid SOP の放出元点に Point SOP で v 速度属性をあらかじめ仕込み、後段の Particle SOP がその初速を使って粒子を放出するパターン。点ごとに初速をばらつかせたいときに有効。

  1. Grid SOP を配置して放出元の点群を用意する
  2. Point SOP を接続し VelocityAdd Velocity に設定する
  3. Velocity の Y に 2 + rand(me.inputPoint.P) * 0.5 のような式を入れて初速をばらつかせる
  4. 後段に Particle SOP を接続し、点が持つ v 属性を初速として粒子を放出する
  5. 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 に渡す

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました