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

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

Random POP の乱数生成機能を示す図

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

概要 📖 – 点ごとに乱数値を生成

Random POPは、入力ジオメトリの各点に独立した乱数値を生成し、その値を属性として出力する POPです。分布タイプは一様・指数・コーシーなど複数から選べ、振幅・オフセット・クランプで値域を整え、方向乱数や二値乱数も生成します。

主な用途 🎯

  • 各点に独立した乱数値を割り当てて位置・色・スケールにバラつきを付与
  • 分布タイプ (一様 / 指数 / コーシー等) を選んで乱数の偏りを制御
  • Cone Direction と Cone Angle で円錐内のランダムな方向ベクトルを生成
  • Value A / Value B の二値乱数で確率的なオン・オフ切り替えを表現
  • Combine Operation で既存属性に乱数を加算・乗算して既存形状を揺らす

データフロー 🔄

入力: POP ジオメトリ(点属性付き)

シードと分布タイプに基づく点ごとの乱数生成

出力: 同じ点群(乱数値を書き込んだ属性)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Random Page 📋

追加点数 .extrapts

Extra Points per Source Point .extrapts
Extra Points per Source Point (元の点ごとの追加点数) — 入力の 1 点につき何個の乱数点を追加生成するかを指定します。1 点から複数のばらけた点を撒きたいときに使用します。

分布タイプ .type 🎲

生成する乱数の分布を選択

項目 内部名 説明
Constant .constant 一定値 (ばらつきなし)
Two Values .twovalues Value A / Value B の二値からランダムに選択
Uniform (Continuous) .uniform 範囲内を等確率で連続的に分布
Uniform (Discrete) .uniformdiscrete 等間隔の離散値を等確率で選択
Direction .direction 円錐内のランダムな方向ベクトル
Inside Sphere .insidesphere 球の内部にランダムな点を分布
Exponential .exponential 指数分布 (小さい値に偏る)
Cauchy-Lorentz .cauchylorentz コーシー分布 (裾が重く外れ値が出やすい)
Custom Ramp .customramp CHOP で与えたカーブを確率密度として使用
None .none 乱数を生成しない

カスタムランプ .chop 📈

CHOP .chop
CHOP (参照 CHOP) — 分布タイプが Custom Ramp のとき、確率密度カーブとして使用する CHOP のパスを指定します。

乱数成分数 .randomsize 🔢

生成する乱数のコンポーネント数

項目 内部名 説明
1 .1 スカラー乱数 1 成分
2 .2 2 成分ベクトル乱数
3 .3 3 成分ベクトル乱数 (P や N に最適)
4 .4 4 成分乱数

シード .seed 🌱

Seed .seed
Seed (シード値) — 乱数生成を初期化する数値。同じシードなら毎回同じ乱数パターンが得られます。値を変えると別のばらけ方になります。

パラメータサイズ .parsize 📐

独立して設定できるパラメータ値の数

項目 内部名 説明
1 .1 全成分共通の単一パラメータ
2 .2 2 成分独立のパラメータ
3 .3 3 成分独立のパラメータ
4 .4 4 成分独立のパラメータ

振幅・指数・オフセット 🎚️

Amplitude .amp
Amplitude (振幅) — 出力する乱数値全体に掛ける係数です。乱数の強さを直接スケールします。

Exponent .exp
Exponent (指数) — 内部の乱数値を指数乗します。1 より大きくすると小さい値側に偏り、1 より小さくすると分布が緩やかになります。

Offset .offset
Offset (オフセット) — 結果値に加算する一定値です。バイアスを与えたいときに使用します。

二値乱数 ⚖️

Value A .valuea
Value A (値 A) — 出力する乱数を決める二値のうちの一方です。Two Values 分布で使用します。

Value B .valueb
Value B (値 B) — 出力する乱数を決める二値のうちのもう一方です。

Value B Probability .valuebproba
Value B Probability (値 B の確率) — 乱数が値 A より値 B に偏る確率を指定します。0.5 で半々になります。

クランプ .clamp 📏

Clamp Value .clamp
Clamp Value (値のクランプ) — 出力値を最小値と最大値の間に収めるかどうかのトグルです。外れ値が出やすい分布で値域を制限したいときに有効化します。

Clamp Min .minval
Clamp Min (クランプ下限) — クランプ有効時の最小出力値です。

Clamp Max .maxval
Clamp Max (クランプ上限) — クランプ有効時の最大出力値です。

コーン方向 .conedir 🧭

Cone Direction .conedir
Cone Direction (コーン方向) — 分布タイプが Direction のとき、ランダムな方向を生成する円錐の中心軸を X / Y / Z の 3 成分で指定します。

Cone Angle .coneangle
Cone Angle (コーン角度) — 円錐の開き角度です。小さくすると中心軸付近に方向が集まり、大きくすると広い範囲にばらけます。

合成演算 .combineop 🔗

乱数値と入力属性値の合成方法

項目 内部名 説明
Set .set 乱数値で上書き (合成しない)
Add .add 属性値に乱数を加算
Multiply .mult 属性値に乱数を乗算

合成対象属性 .combineattrscope 🎯

Combine Attribute Scope .combineattrscope
Combine Attribute Scope (合成対象属性) — 合成演算の入力となる属性名を指定します (例: PCdN)。

出力属性 .outputattrscope 📤

乱数を書き込む先の属性 (またはその成分)

項目 内部名 説明
P .P 点位置属性
N .N 法線属性
Color .Color 色属性 (RGBA)
Color.rgb .Color.rgb 色属性の RGB 成分のみ
Tex .Tex テクスチャ座標属性
PointScale .PointScale ポイントスケール属性
LineWidth .LineWidth ラインの太さ属性

属性オーバーライド .overrideautoattr 🛡️

Override Automatic Attribute .overrideautoattr
Override Automatic Attribute (自動属性のオーバーライド) — 入力とパラメータから自動で決まる属性の種別を手動指定したいときに有効化します。型と成分数を自分で決められます。

属性タイプ .attrtype 🔤

出力属性のデータ型

項目 内部名 説明
float .float 32 bit 浮動小数点
double .double 64 bit 浮動小数点
int .int 32 bit 整数
uint .uint 32 bit 符号なし整数
Color .color 色 (RGBA float)
Color (double) .dcolor 色 (RGBA double)
Direction .dir 方向ベクトル (float)
Direction (double) .ddir 方向ベクトル (double)

コンポーネント数 .attrnumcomps 🔢

新規カスタム属性の成分数

項目 内部名 説明
1 .1 スカラー (1 成分)
2 .2 2 成分
3 .3 3 成分 (ベクトル / RGB)
4 .4 4 成分 (RGBA / quaternion)

デフォルト値 .attrdefaultval 🔧

Default Value .attrdefaultval
Default Value (デフォルト値) — 出力属性が計算できなかった点に与える既定値です。成分数に応じて 1〜4 個の値を指定します。

属性クラスとグループ 🧱

Attribute Class .attrclass
Attribute Class (属性クラス) — POP が点属性・頂点属性・プリミティブ属性のどれに作用するかを選びます。

Group .group
Group (グループ) — 入力にグループが定義されている場合、グループ名を指定するとそのグループだけに乱数を適用します。

法線計算 .computenormals 📐

Compute Point Normals .computenormals
Compute Point Normals (点法線の再計算) — 乱数適用後に点法線 (N) を再計算するかどうか。位置 (P) を乱数で動かした場合に有効化すると、ライティングが正しく追従します。


Map Page 🗺️

属性マッピング .map 🔗

Mapping .map
Mapping (マッピング) — 属性をパラメータに点ごとに割り当てるシーケンスの開始マーカーです。連番ブロック (map0、map1、…) で複数のマッピングを定義します。

OP .map0op
OP (参照元) — マッピングの参照元 POP を指定します。デフォルトの _in0 は入力 POP 自身を意味します。

Element .map0element
Element (要素) — 点ごとにパラメータへマップする属性 (またはその成分) を指定します。

ターゲットパラメータ .map0parm 🎯

属性値で上書きする Random POP 側のパラメータ

項目 内部名 説明
Amplitude .amp 振幅 (Amplitude) を点ごとに変える
Exponent .exp 指数 (Exponent) を点ごとに変える
Offset .offset オフセット (Offset) を点ごとに変える
Value A .valuea 値 A (Value A) を点ごとに変える
Value B .valueb 値 B (Value B) を点ごとに変える
Value B Probability .valuebproba 値 B の確率を点ごとに変える
Step Value .stepval 離散一様分布で隣り合う乱数値の最小差を点ごとに変える
Clamp Min .minval クランプ下限を点ごとに変える
Clamp Max .maxval クランプ上限を点ごとに変える
Cone Direction .conedir コーン方向を点ごとに変える
Cone Angle .coneangle コーン角度を点ごとに変える

マップ合成演算 .map0combineop 🔀

マップ値と既存パラメータ値の合成方法

項目 内部名 説明
Set .set 属性値でパラメータを上書き
Multiply .mult 既存パラメータ値に乗算
Add .add 既存パラメータ値に加算

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: 点位置をランダムに散らす 🎲

Grid POP → Random POP (Output Attribute Scope = P, Combine = Add) → Render TOP

Grid POP で整列した点群の位置属性 (P) に一様乱数を加算し、規則的な格子をランダムにばらけさせて自然な散らばりを作る基本フローです。Amplitude でばらけ幅を、Seed で散らばり方のバリエーションを調整します。

  1. Grid POP で平面格子の点群を生成
  2. Random POP の Output Attribute Scope を P、Combine Operation を Add、Type を Uniform (Continuous) に設定
  3. Random Size を 3 にして XYZ 各軸を独立にばらけさせる
  4. Amplitude を 0.1 前後から始めてばらけ幅を調整、Seed を変えて好みのパターンを探す

Example 2: コーン方向に放射する速度 🚀

Point Generator POP → Random POP (Type = Direction, 出力 N) → Particle POP

1 点から発生させた点に Random POP の Direction タイプで円錐内のランダムな方向ベクトルを法線属性 (N) として与え、それを Particle POP の初速として読ませることで噴き出すような放射エフェクトを作るフローです。Cone Angle で広がりを制御します。

  1. Point Generator POP で発生源の点を作成
  2. Random POP の Type を Direction に、Output Attribute Scope を N に設定
  3. Cone Direction を放射させたい向きに、Cone Angle で広がり角度を調整
  4. Particle POP に接続し N 属性を初速ベクトルとして参照させる

Example 3: 色をランダムに二値で切り替え 🎨

Box POP → Random POP (Type = Two Values, 出力 Color) → Render TOP

Box POP の点群に Random POP の Two Values 分布を使い、各点の色 (Color) を 2 色のいずれかにランダムで割り当てる用途です。Value B Probability で 2 色の割合を調整でき、点滅や市松模様風の表現に向きます。

  1. Box POP で点付き立方体を生成
  2. Random POP の Type を Two Values、Output Attribute Scope を Color に設定
  3. Value A と Value B にそれぞれの色値を入力
  4. Value B Probability で 2 色の出現比率を調整

関連オペレータ 🔗

類似機能OP 🔍

  • Noise POP — 空間連続なノイズで点を滑らかに変位
  • Pattern POP — チェッカーやストライプ等の決定的パターン生成
  • Sprinkle POP — 面や体積内にランダムな点を散布

組み合わせ推奨OP 🔄

  • Math POP — 乱数出力をスケール・オフセット・関数変換
  • Limit POP — 乱数値を上下限にクランプ
  • Normalize POP — 方向乱数ベクトルを単位ベクトル化
  • Particle POP — 乱数で生成した速度を粒子運動に流し込む
  • Attribute POP — 新規属性を事前に作って Random POP の書込み先にする
  • Point Generator POP — 発生源の点を作って乱数で散らす前段に使用

前処理・後処理POP 🎯


Info情報 📊

POP ファミリには専用の Info OP が存在しません。Random POP の出力は下流の Null POP で値を確認したり、Python から POP クラスメンバーで取得します。

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: エラー数

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

よくある問題と解決策 🔧

❌ Problem: 乱数が点ごとに変化しない
✅ Solution:

  • TypeConstantNone になっていないか確認
  • 全点が同じ条件のときは前段で Grid POPPoint Generator POP で複数の点を確保
  • Random Size3 にして各軸に独立した乱数を与えているか確認

❌ Problem: 値の振れ幅が想定と合わない
✅ Solution:

  • Amplitude / Exponent / Offset で値域を調整
  • Clamp Value を有効化して Clamp Min / Clamp Max で範囲を制限
  • 後段で Math POP で範囲をリマップ

❌ Problem: 方向乱数が偏る・広がりすぎる
✅ Solution:

  • TypeDirection になっているか確認
  • Cone Angle を小さくすると中心軸付近に集まり、大きくすると広い範囲にばらける
  • 出力ベクトルの長さがばらつく場合は後段で Normalize POP で単位ベクトル化

❌ Problem: 毎フレーム乱数がちらつく
✅ Solution:

  • Seed が時間表現で動いていないか確認 (固定したいなら定数にする)
  • 入力の点数や順序が毎フレーム変わると割り当てが変動するため上流の点群を安定させる
  • ばらけ方を固定したい場合は Seed を 1 つの整数に固定

参考資料 📚

その他 🔗

公式リソース 📖

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