
概要 📖 – 面や内部に点を撒く
Sprinkle POPは、入力 POP のポリゴン面の上、または閉じた形状の内部に、指定数の点を散布する POPです。Method でポリゴン面ごとに撒くか閉じた形状の内部 (ボリューム) を満たすかを切り替え、Number of Points で点数、Seed で分布パターンを固定します。数学的な基本形状の上に点を撒きたい場合は Point Generator POP を使います。
主な用途 🎯
- 入力メッシュのポリゴン面の上への点群散布
- 閉じた形状の内部 (ボリューム) を満たす点群の生成
- パーティクル系の発生点ソースとなる分布点の作成
- インスタンス配置用のサンプリング点の準備
- 入力メッシュの属性を継承した点群の生成
データフロー 🔄
入力: 点を撒く対象のメッシュ POP
↓
Sprinkle POP(Method で面か内部かを決定、Number of Points で点数を指定、Seed で分布パターンを固定)
↓
出力: 散布された点を持つ POP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 で分布パターンを固定できるため、任意の形状の表面からパーティクルを湧き出させたい演出で頻用される。
- Sphere POP などのメッシュを Sprinkle POP の入力に接続
- Sprinkle POP の
Methodを Per Primitive に設定 Number of Pointsで散布する点数を指定- Particle POP の発生点入力に Sprinkle POP を接続
- Render TOP に渡して可視化
Example 2: 内部を満たす点群 🎯
Box POP → Sprinkle POP (Method=Volume) → Copy POP (インスタンス配置)
Method を Volume に設定すると、入力メッシュの閉じた内部空間を満たすように点が散布される。各点の位置を Copy POP のインスタンス配置に利用すると、立体の中身を小さなジオメトリで満たす表現が作れる。点が内部に収まりにくい複雑な形状では Attempts per Point を上げて到達率を高める。
- 閉じたメッシュ (Box POP など) を Sprinkle POP の入力に接続
Methodを Volume にして内部を満たすNumber of PointsとAttempts per Pointで密度と到達率を調整- Copy POP のテンプレート入力に配置したいジオメトリ、発生点入力に Sprinkle POP を接続
- 後段で陰影付けして描画
Example 3: 再現性のある散布 🔢
Grid POP → Sprinkle POP (Method=Volume Deterministic) → Transform POP
Method を Volume (Deterministic) にすると、同じ入力に対して毎回同じ散布結果が得られる。テストや均一なサンプリングが必要な場面で、毎回同じ配置を再現したいときに使う。Seed を固定したうえで後段の Transform POP で全体の位置・回転・スケールだけを調整すれば、散布の再現性を保ったまま配置を変えられる。
- メッシュを Sprinkle POP の入力に接続
Methodを Volume (Deterministic) にして再現性のある分布に切り替えSeedを固定値にして分布パターンを確定- 後段の Transform POP で全体配置 (移動・回転・スケール) を調整
- 可視化して結果を確認
関連オペレータ 🔗
類似機能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 🎯
- 前処理: Sphere POP、Box POP、Convert POP
- 後処理: Transform POP、Noise POP、Attribute POP、Copy POP、Particle 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 PointsとAttempts per Pointが過大になっていないか確認し、必要十分な値に抑える- Common Page の
Delete Input Attributesで下流に不要な属性を残さず、必要なものだけ通す - Common Page の Free Extra GPU Memory パルスで未使用 VRAM を返却
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Sprinkle POP
- Point Generator POP – 数学形状に点を生成する類似オペレータ
- Particle POP – 散布点を発生点ソースにする定番後処理

