
概要 📖 – 点ごとに乱数値を生成
Random POPは、入力ジオメトリの各点に独立した乱数値を生成し、その値を属性として出力する POPです。分布タイプは一様・指数・コーシーなど複数から選べ、振幅・オフセット・クランプで値域を整え、方向乱数や二値乱数も生成します。
主な用途 🎯
- 各点に独立した乱数値を割り当てて位置・色・スケールにバラつきを付与
- 分布タイプ (一様 / 指数 / コーシー等) を選んで乱数の偏りを制御
- Cone Direction と Cone Angle で円錐内のランダムな方向ベクトルを生成
- Value A / Value B の二値乱数で確率的なオン・オフ切り替えを表現
- Combine Operation で既存属性に乱数を加算・乗算して既存形状を揺らす
データフロー 🔄
入力: POP ジオメトリ(点属性付き)
↓
シードと分布タイプに基づく点ごとの乱数生成
↓
出力: 同じ点群(乱数値を書き込んだ属性)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Random Page 📋
追加点数 .extrapts ➕
Extra Points per Source Point .extraptsExtra 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 .chopCHOP (参照 CHOP) — 分布タイプが Custom Ramp のとき、確率密度カーブとして使用する CHOP のパスを指定します。
乱数成分数 .randomsize 🔢
生成する乱数のコンポーネント数
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー乱数 1 成分 |
| 2 | .2 |
2 成分ベクトル乱数 |
| 3 | .3 |
3 成分ベクトル乱数 (P や N に最適) |
| 4 | .4 |
4 成分乱数 |
シード .seed 🌱
Seed .seedSeed (シード値) — 乱数生成を初期化する数値。同じシードなら毎回同じ乱数パターンが得られます。値を変えると別のばらけ方になります。
パラメータサイズ .parsize 📐
独立して設定できるパラメータ値の数
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
全成分共通の単一パラメータ |
| 2 | .2 |
2 成分独立のパラメータ |
| 3 | .3 |
3 成分独立のパラメータ |
| 4 | .4 |
4 成分独立のパラメータ |
振幅・指数・オフセット 🎚️
Amplitude .ampAmplitude (振幅) — 出力する乱数値全体に掛ける係数です。乱数の強さを直接スケールします。
Exponent .expExponent (指数) — 内部の乱数値を指数乗します。1 より大きくすると小さい値側に偏り、1 より小さくすると分布が緩やかになります。
Offset .offsetOffset (オフセット) — 結果値に加算する一定値です。バイアスを与えたいときに使用します。
二値乱数 ⚖️
Value A .valueaValue A (値 A) — 出力する乱数を決める二値のうちの一方です。Two Values 分布で使用します。
Value B .valuebValue B (値 B) — 出力する乱数を決める二値のうちのもう一方です。
Value B Probability .valuebprobaValue B Probability (値 B の確率) — 乱数が値 A より値 B に偏る確率を指定します。0.5 で半々になります。
クランプ .clamp 📏
Clamp Value .clampClamp Value (値のクランプ) — 出力値を最小値と最大値の間に収めるかどうかのトグルです。外れ値が出やすい分布で値域を制限したいときに有効化します。
Clamp Min .minvalClamp Min (クランプ下限) — クランプ有効時の最小出力値です。
Clamp Max .maxvalClamp Max (クランプ上限) — クランプ有効時の最大出力値です。
コーン方向 .conedir 🧭
Cone Direction .conedirCone Direction (コーン方向) — 分布タイプが Direction のとき、ランダムな方向を生成する円錐の中心軸を X / Y / Z の 3 成分で指定します。
Cone Angle .coneangleCone Angle (コーン角度) — 円錐の開き角度です。小さくすると中心軸付近に方向が集まり、大きくすると広い範囲にばらけます。
合成演算 .combineop 🔗
乱数値と入力属性値の合成方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Set | .set |
乱数値で上書き (合成しない) |
| Add | .add |
属性値に乱数を加算 |
| Multiply | .mult |
属性値に乱数を乗算 |
合成対象属性 .combineattrscope 🎯
Combine Attribute Scope .combineattrscopeCombine Attribute Scope (合成対象属性) — 合成演算の入力となる属性名を指定します (例: P、Cd、N)。
出力属性 .outputattrscope 📤
乱数を書き込む先の属性 (またはその成分)
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
点位置属性 |
| N | .N |
法線属性 |
| Color | .Color |
色属性 (RGBA) |
| Color.rgb | .Color.rgb |
色属性の RGB 成分のみ |
| Tex | .Tex |
テクスチャ座標属性 |
| PointScale | .PointScale |
ポイントスケール属性 |
| LineWidth | .LineWidth |
ラインの太さ属性 |
属性オーバーライド .overrideautoattr 🛡️
Override Automatic Attribute .overrideautoattrOverride 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 .attrdefaultvalDefault Value (デフォルト値) — 出力属性が計算できなかった点に与える既定値です。成分数に応じて 1〜4 個の値を指定します。
属性クラスとグループ 🧱
Attribute Class .attrclassAttribute Class (属性クラス) — POP が点属性・頂点属性・プリミティブ属性のどれに作用するかを選びます。
Group .groupGroup (グループ) — 入力にグループが定義されている場合、グループ名を指定するとそのグループだけに乱数を適用します。
法線計算 .computenormals 📐
Compute Point Normals .computenormalsCompute Point Normals (点法線の再計算) — 乱数適用後に点法線 (N) を再計算するかどうか。位置 (P) を乱数で動かした場合に有効化すると、ライティングが正しく追従します。
Map Page 🗺️
属性マッピング .map 🔗
Mapping .mapMapping (マッピング) — 属性をパラメータに点ごとに割り当てるシーケンスの開始マーカーです。連番ブロック (map0、map1、…) で複数のマッピングを定義します。
OP .map0opOP (参照元) — マッピングの参照元 POP を指定します。デフォルトの _in0 は入力 POP 自身を意味します。
Element .map0elementElement (要素) — 点ごとにパラメータへマップする属性 (またはその成分) を指定します。
ターゲットパラメータ .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 で散らばり方のバリエーションを調整します。
- Grid POP で平面格子の点群を生成
- Random POP の Output Attribute Scope を
P、Combine Operation をAdd、Type をUniform (Continuous)に設定 - Random Size を
3にして XYZ 各軸を独立にばらけさせる - 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 で広がりを制御します。
- Point Generator POP で発生源の点を作成
- Random POP の Type を
Directionに、Output Attribute Scope をNに設定 - Cone Direction を放射させたい向きに、Cone Angle で広がり角度を調整
- 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 色の割合を調整でき、点滅や市松模様風の表現に向きます。
- Box POP で点付き立方体を生成
- Random POP の Type を
Two Values、Output Attribute Scope をColorに設定 - Value A と Value B にそれぞれの色値を入力
- 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 🎯
- 前処理: Grid POP、Box POP、Sphere POP、Point Generator POP、Attribute POP、In POP
- 後処理: Math POP、Limit POP、Normalize POP、Null POP、Out 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:
TypeがConstantやNoneになっていないか確認- 全点が同じ条件のときは前段で Grid POP や Point Generator POP で複数の点を確保
Random Sizeを3にして各軸に独立した乱数を与えているか確認
❌ Problem: 値の振れ幅が想定と合わない
✅ Solution:
Amplitude/Exponent/Offsetで値域を調整Clamp Valueを有効化してClamp Min/Clamp Maxで範囲を制限- 後段で Math POP で範囲をリマップ
❌ Problem: 方向乱数が偏る・広がりすぎる
✅ Solution:
TypeがDirectionになっているか確認Cone Angleを小さくすると中心軸付近に集まり、大きくすると広い範囲にばらける- 出力ベクトルの長さがばらつく場合は後段で Normalize POP で単位ベクトル化
❌ Problem: 毎フレーム乱数がちらつく
✅ Solution:
Seedが時間表現で動いていないか確認 (固定したいなら定数にする)- 入力の点数や順序が毎フレーム変わると割り当てが変動するため上流の点群を安定させる
- ばらけ方を固定したい場合は
Seedを 1 つの整数に固定
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

