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
CHECK

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

まる。
まる。

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


パラメータ解説 ⚙️

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

参考資料 📚

その他 🔗

公式リソース 📖


関連まとめ 🔗

ファミリー別一覧 📑

厳選オペレータ ⭐

逆引き 🔎


この記事はLLMと共に内容を執筆、更新しています。
なるべく正確な情報を心掛けていますが、最新バージョンとの項目差異など情報の不一致を見つけたらXもしくはInsta、メールなどから管理者までご連絡いただけると嬉しいです🫠


まる。

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

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

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
今流行りのクリエイティブツール、Touchdesignerとは?業界の現役ちいかわエンジニアができることを解説ッ
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(パールシュヴァ・バーラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】

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