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

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

Sprinkle POP の点群散布機能を示す図

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

概要 📖 – 面や内部に点を撒く

Sprinkle POPは、入力 POP のポリゴン面の上、または閉じた形状の内部に、指定数の点を散布する POPです。Method でポリゴン面ごとに撒くか閉じた形状の内部 (ボリューム) を満たすかを切り替え、Number of Points で点数、Seed で分布パターンを固定します。数学的な基本形状の上に点を撒きたい場合は Point Generator POP を使います。

主な用途 🎯

  • 入力メッシュのポリゴン面の上への点群散布
  • 閉じた形状の内部 (ボリューム) を満たす点群の生成
  • パーティクル系の発生点ソースとなる分布点の作成
  • インスタンス配置用のサンプリング点の準備
  • 入力メッシュの属性を継承した点群の生成

データフロー 🔄

入力: 点を撒く対象のメッシュ POP

Sprinkle POP(Method で面か内部かを決定、Number of Points で点数を指定、Seed で分布パターンを固定)

出力: 散布された点を持つ POP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Sprinkle Page 📋

Method .method 🎛️

点を面ごとに撒くか、閉じた形状の内部 (ボリューム) を満たすかを決めるメニュー

項目 内部名 説明
Per Primitive .perprimitive 三角形・四角形などプリミティブ (面) ごとに点を散布
Volume .volume 面で囲まれた閉じた内部空間 (ボリューム) を満たすように点を散布
Volume (Deterministic) .volumedeterministic ボリューム散布のうち、同じ入力なら毎回同じ結果になる再現性重視のモード
Volume (Non-Deterministic) .volnondeterministic ボリューム散布のうち、毎回ばらつきが出る非再現モード (高速)

Ray Direction Mode .raydirmode 🧭

点が内部か外部かを判定するレイ (光線) を、固定方向に飛ばすかランダム方向に飛ばすかを決めるメニュー

項目 内部名 説明
Constant .constant 固定された一定方向にレイを飛ばして内外を判定
Random .random ランダムな方向にレイを飛ばして内外を判定

Ray Tracing .hwraytracing

対応 GPU でハードウェアレイトレーシングを使い、内外判定を高速化するモードを選ぶメニュー

項目 内部名 説明
Off .off ハードウェアレイトレーシングを使わない
Fast Build (Dynamic Geometry) .fastbuild 毎フレーム形状が変わる動的ジオメトリ向け (構築が速い)
Fast Trace (Static Geometry) .fasttrace 形状が変わらない静的ジオメトリ向け (判定が速い)

点数とシード 🎲

Create Point Primitives .createpointprim
Create Point Primitives (点プリミティブの生成) — 散布した各点を独立した point プリミティブとして作成するトグル
– 点をプリミティブとして下流で扱いたい場合にオンにする

Number of Points .numpoints 🔢
Number of Points (点数) — 散布する点の総数を指定
– ボリューム散布では目標の最大点数であり、到達するには 1 点あたりの試行回数を増やす必要がある場合がある

Attempts per Point .attemptsperpoint 🔁
Attempts per Point (1 点あたりの試行回数) — ボリューム散布で点をメッシュ内部に収めるための試行回数
– 内部が複雑で点が入りにくい場合は値を上げる

Seed .seed 🌱
Seed (乱数シード) — ランダム化を初期化する数値
– 同じ Seed なら同じ分布が再生されるため、再現性のあるバリエーションを作れる

レイ方向と属性 🧬

Ray Direction .raydir ➡️
Ray Direction (レイ方向) — 内外判定のレイを飛ばす固定方向を指定 (Constant モード時)
– 内部名 raydirx / raydiry / raydirz の 3 成分で指定

Point Attribute Scope .pointattrscope 🔵
Point Attribute Scope (点属性スコープ) — 散布時にブレンドする point 属性のパターン
– 既定の * はすべての point 属性を対象にする

Primitive Attribute Scope .primattrscope 🔺
Primitive Attribute Scope (プリミティブ属性スコープ) — ブレンドする primitive 属性のパターン
– 既定の * はすべての primitive 属性を対象にする

Vertex Attribute Scope .vertattribscope 🔻
Vertex Attribute Scope (頂点属性スコープ) — 散布時にサンプリングする vertex 属性のパターン
– 既定の * はすべての vertex 属性を対象にする


Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
  • 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: 大規模な点群で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約

Delete Input Attributes .delinputattrs 🗑️

出力属性の絞り込みパターン:

  • Delete Input Attributes パターン: 出力に残したい属性名のパターン (例: P N Cd) を指定。指定外の属性は破棄される
  • 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約

実践アイデア 💡

Example 1: 面の上の発生点ソース ✨

Sphere POP → Sprinkle POP (Method=Per Primitive) → Particle POP (発生点ソース) → Render TOP

球メッシュの各ポリゴン面に Sprinkle POP で点を撒き、それを Particle POP の発生点ソースとして接続する基本フロー。Method を Per Primitive にすると入力メッシュの表面に沿って点が散布され、Number of Points で密度、Seed で分布パターンを固定できるため、任意の形状の表面からパーティクルを湧き出させたい演出で頻用される。

  1. Sphere POP などのメッシュを Sprinkle POP の入力に接続
  2. Sprinkle POP の Method を Per Primitive に設定
  3. Number of Points で散布する点数を指定
  4. Particle POP の発生点入力に Sprinkle POP を接続
  5. Render TOP に渡して可視化

Example 2: 内部を満たす点群 🎯

Box POP → Sprinkle POP (Method=Volume) → Copy POP (インスタンス配置)

Method を Volume に設定すると、入力メッシュの閉じた内部空間を満たすように点が散布される。各点の位置を Copy POP のインスタンス配置に利用すると、立体の中身を小さなジオメトリで満たす表現が作れる。点が内部に収まりにくい複雑な形状では Attempts per Point を上げて到達率を高める。

  1. 閉じたメッシュ (Box POP など) を Sprinkle POP の入力に接続
  2. Method を Volume にして内部を満たす
  3. Number of PointsAttempts per Point で密度と到達率を調整
  4. Copy POP のテンプレート入力に配置したいジオメトリ、発生点入力に Sprinkle POP を接続
  5. 後段で陰影付けして描画

Example 3: 再現性のある散布 🔢

Grid POP → Sprinkle POP (Method=Volume Deterministic) → Transform POP

Method を Volume (Deterministic) にすると、同じ入力に対して毎回同じ散布結果が得られる。テストや均一なサンプリングが必要な場面で、毎回同じ配置を再現したいときに使う。Seed を固定したうえで後段の Transform POP で全体の位置・回転・スケールだけを調整すれば、散布の再現性を保ったまま配置を変えられる。

  1. メッシュを Sprinkle POP の入力に接続
  2. Method を Volume (Deterministic) にして再現性のある分布に切り替え
  3. Seed を固定値にして分布パターンを確定
  4. 後段の Transform POP で全体配置 (移動・回転・スケール) を調整
  5. 可視化して結果を確認

関連オペレータ 🔗

類似機能OP 🔍

  • Point Generator POP — 数学形状の表面・内部に点を生成 (Sprinkle は入力メッシュベース)
  • Point POP — 点ごとの属性を編集・追加する基本オペレータ
  • Grid POP — 規則的な格子点群を生成 (平面・立体グリッド)

組み合わせ推奨OP 🔄

  • Particle POP — 散布点を発生点ソースにして時間発展するパーティクル系を作る
  • Copy POP — 各散布点をテンプレートにして別ジオメトリをインスタンス配置
  • Transform POP — 散布した点群を後段で平行移動・回転・スケール
  • Noise POP — 各点に Perlin / Simplex 等のノイズで変位を加える
  • Attribute POP — Color / カスタム属性を点ごとに付与してから後段に渡す
  • Force Radial POP — 散布点に放射状の力を加えて分布を動的に変形

前処理・後処理POP 🎯


Info POP情報 📊

Sprinkle POP は Info CHOP / Info DAT による詳細情報取得に対応しています。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

出力ポイント・属性情報 🧬

  • num_points: 散布された出力ポイント数 (Number of Points で指定した目標値に対応)
  • num_point_attribs: 出力 POP の point 属性数 (入力メッシュから継承した属性で増減)
  • num_vertex_attribs: 出力 POP の vertex 属性数
  • num_prim_attribs: 出力 POP の primitive 属性数
  • num_prims: 生成プリミティブ数 (Create Point Primitives の設定により決定)

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: ボリュームで目標の点数に届かない
✅ Solution:

  • Attempts per Point を上げて、点を内部に収める試行回数を増やす
  • 入力メッシュが閉じた形状になっているか確認 (開いた面では内部判定が機能しない)
  • Number of Points はボリューム散布では最大値であり、形状によっては到達しない点に注意

❌ Problem: 散布結果が毎回ばらついて固定できない
✅ Solution:

  • Method を Volume (Deterministic) にして再現性のある分布に切り替える
  • Seed を固定値にして同じ分布パターンを再生する
  • 後段で分布を整えたい場合は Noise POP 等で制御する

❌ Problem: 点が内部か外部か正しく判定されない
✅ Solution:

  • Ray Direction Mode を Random に切り替えて、判定の偏りを減らす
  • Constant モードでは Ray Direction の固定方向が形状と干渉していないか確認
  • 対応 GPU なら Hardware Ray Tracing を有効化して判定精度と速度を改善

❌ Problem: 点数を増やすとパフォーマンスが落ちる
✅ Solution:

  • Number of PointsAttempts per Point が過大になっていないか確認し、必要十分な値に抑える
  • Common Page の Delete Input Attributes で下流に不要な属性を残さず、必要なものだけ通す
  • Common Page の Free Extra GPU Memory パルスで未使用 VRAM を返却

参考資料 📚

その他 🔗

公式リソース 📖

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