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

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

Sprinkle SOP のランダム点群生成機能を示す図

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

概要 📖 – 形状に沿って点をばらまく

Sprinkle SOPは、入力ジオメトリの表面または内部にランダムな点群を生成する SOPです。Method で表面散布と体積散布を切り替え、Seed を変えると点位置が完全に変わります。生成した点群は Copy SOP や Particle SOP の配置元として利用できます。

主な用途 🎯

  • 形状の表面にランダムな点群を生成(Method を Surface にして面積比で均等散布)
  • 形状の内部にランダムな点群を充填(Method を Volume / Approximate Volume にして体積内に散布)
  • インスタンス配置やコピー元となる点群の生成(Copy SOP / Particle SOP の散布元として利用)
  • 点同士の最小間隔を保った間引き(Consolidate と Distance to Nearest Point で密集を解消)
  • Seed 変更による再現可能なランダム配置(同じ Seed なら毎回同じ点位置を再生成)

データフロー 🔄

入力: 散布対象のジオメトリ SOP

Method で散布領域 (表面 / 体積) を選択し Number of Points で点数を決定

Consolidate で最小間隔の間引きを適用

出力: ランダムに配置された点群 SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Sprinkle Page 📁

乱数シード 🎲

Seed .seed 🎲
Seed (乱数シード) — 乱数生成の起点となる数値で、整数・小数のどちらも指定できます
– 同じ値を設定すれば毎回同じ点配置を再現し、値を変えると点位置が完全に変わります

散布領域の選択 .method 🗺️

Method (散布領域) — 点をどこに配置するかを選ぶメニューパラメータ

項目 内部名 説明
Surface .surface 表面全体に均等散布。面積が小さいポリゴンほど割り当てられる点数が平均的に少なくなる
Bounding Box .boundingbox ジオメトリのバウンディングボックス (外接直方体) の内部に散布。体積方式より高速だが精度は低い
Approximate Volume .approxvol 体積の近似領域内に均等散布。表面付近は割り当てられる点数が少なくなる場合がある
Volume .volume 体積全体に均等散布。内部まで正確に充填する代わりに処理コストは高い

点数と間引き 🔢

Number of Points .numpoints 🔢
Number of Points (生成点数) — 散布する点の総数を指定します
– 点数を増やすと密度が上がり、後段の Copy / Particle で扱う要素数も増えます

Consolidate .consolidate 🧹
Consolidate (間引き) — 点同士が一定距離より近い場合に余分な点を削除します
– 下記の Distance to Nearest Point で最小間隔を指定して密集を解消します

Distance to Nearest Point .neardist 📏
Distance to Nearest Point (最小間隔) — Consolidate を使う際に保持する点同士の最小距離です
– 値を大きくするほど点がまばらになり、小さくすると密に残ります


実践アイデア 💡

Example 1: 表面に点を散布して複製 🌱

Sphere SOP → Sprinkle SOP (Method=Surface, Number of Points=500) → Copy SOP (input2 にコピー元) → Geometry COMP

球の表面に Sprinkle SOP で 500 点をランダム散布し、各点を配置元として Copy SOP で小さなジオメトリを複製する基本パターン。芝生・群衆・装飾オブジェクトの散布配置に向きます。

  1. Sphere SOP を配置し、散布対象となる球を作成
  2. Sprinkle SOP を後段に接続し MethodSurface に設定
  3. Number of Points を 500 等に設定して散布密度を決める
  4. Copy SOP の input1 に Sprinkle の点群、input2 に複製したいジオメトリを接続
  5. Geometry COMP に接続して各点へインスタンスが配置された結果を確認

Example 2: 体積内に点を充填 🧊

Box SOP → Sprinkle SOP (Method=Volume, Number of Points=2000) → Particle SOP → Geometry COMP

Box SOP の体積内に Sprinkle SOP で点群を充填し、それを Particle SOP の発生源として煙や霧のようなボリューム表現に使う構成。Method を Volume にすると内部まで均等に点が満たされます。

  1. Box SOP を配置して散布対象の体積を用意
  2. Sprinkle SOP の MethodVolume に設定して内部充填に切り替え
  3. Number of Points を 2000 等に増やして体積内の点密度を確保
  4. Particle SOP を後段に接続し、Sprinkle の点群をパーティクルの初期位置として使用

Example 3: 間引きで点の密集を均一化 🧹

Grid SOP → Sprinkle SOP (Method=Surface, Consolidate=ON, Distance to Nearest Point=0.05) → Geometry COMP

平面格子に点を散布したあと Consolidate をオンにして近すぎる点を削除し、点同士の間隔を一定以上に保つ間引きパターン。点群が局所的に密集するのを防いで見た目を均一に整えます。

  1. Grid SOP を配置して散布対象の平面を用意
  2. Sprinkle SOP を接続し MethodSurface に設定
  3. Consolidate をオンにして近接点の削除を有効化
  4. Distance to Nearest Point を 0.05 等に設定し、保持する最小間隔を指定

関連オペレータ 🔗

類似機能OP 🔍

  • Particle SOP — 点群をパーティクルとして時間発展させる (Sprinkle は静的な点配置)
  • Point SOP — 既存の点に属性・位置の編集を加える (生成ではなく加工)

組み合わせ推奨OP 🔄

  • Copy SOP — Sprinkle の各点を配置元にジオメトリを複製・インスタンス化
  • Particle SOP — 散布した点群をパーティクルの発生源として利用
  • Transform SOP — 散布前のジオメトリや散布後の点群に移動・回転・スケールを適用
  • Sort SOP — 散布された点の順序を並べ替えて後段の処理を安定化

前処理・後処理SOP 🎯


Info CHOP情報 📊

Sprinkle 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:

  • MethodVolume / Approximate Volume / Bounding Box になっていないか確認 — 表面散布したいときは Surface を選択
  • Bounding Box はジオメトリの外接直方体内に散布するため、形状に沿わせたい場合は使わない
  • 入力ジオメトリが閉じた面を持っているか確認 (体積散布は閉じた形状を前提とする)

❌ Problem: 点数を増やしても密度が均一にならない
✅ Solution:

  • Number of Points を増やしたうえで Consolidate をオンにし、近接点を間引いて間隔を揃える
  • Distance to Nearest Point で保持する最小間隔を指定し、局所的な密集を解消
  • 後段に Add SOP 等を置いて点の扱いを整理する運用も可

❌ Problem: Seed を変えても点の配置が変わらない
✅ Solution:

  • Seed の値が実際に更新されているか確認 (式やエクスポートで固定値に上書きされていないか)
  • 同じ Seed では同じ点配置が再現される仕様のため、別の配置が欲しいときは値を変更する
  • 上流ジオメトリ自体が変化していないかも確認 (散布結果は入力形状にも依存する)

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました