
概要 📖 – 波形パターンで点群と属性を生成
Pattern POPは、正弦波や三角波などの周期パターンに沿った点列ジオメトリと属性値を生成する POPです。点数・サイクル数・位相・指数などのパラメータで波形の形を細かく制御でき、生成した値を位置や色などの属性として出力します。
主な用途 🎯
- 正弦波・三角波・矩形波・ノコギリ波・ランプ等の波形に沿った点列ジオメトリの生成
- ライン・ポイントプリミティブとして出力する手続き的な形状づくり
- サイクル数・位相・指数で形を制御する周期パターンの作成
- 生成した波形値を P・色・テクスチャ座標等の属性へ書き出す属性生成
- 既存ジオメトリの属性に波形を加算・乗算して変調する用途
データフロー 🔄
入力: 任意の POP (なくても可)
↓
Pattern POP(Type で波形を選び、点数・サイクル数・位相で形状を定義)
↓
出力: 波形に沿った点列ジオメトリと指定属性
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Pattern Page 📋
点列の基本設定 🎛️
Number of Points .numpoints 🔢
– Number of Points (点の数) — 生成する点の総数を指定します。
– 値が大きいほど波形が滑らかになりますが、出力ジオメトリも重くなります。
Cyclic .cyclic 🔄
– Cyclic (循環) — オンにすると完結した 1 サイクルが「点数 + 1」個の値に対応します。
– 始点と終点を滑らかにつなぎたい閉じたパターンで有効になります。
Connectivity .connectivity 🔗
Connectivity (接続方法) — 生成した点をどう結ぶかを指定します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| None | .none |
点を結ばずポイントのみ出力 (パーティクル配置・インスタンシング向け) |
| Lines | .lines |
連続したラインとして点を結んで出力 (波形の描画向け) |
| Point Prims | .points |
各点を個別のポイントプリミティブとして出力 |
Parameter Size .parsize 📊
Parameter Size (値の数) — 独立して設定できるパラメータ値の数を指定します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー値 (1 次元の波形) |
| 2 | .2 |
2 次元ベクトル (UV 等) |
| 3 | .3 |
3 次元ベクトル (XYZ 位置・RGB 等) |
| 4 | .4 |
4 次元ベクトル (RGBA 等) |
Type .type 📈
Type (波形の種類) — 生成するパターンの波形を選択します。Parameter Size に応じて成分ごとに type0 / type1 / type2 と独立指定できます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Type | .type0 |
成分 0 の波形の種類を指定 (正弦波・三角波・矩形波・ノコギリ波・ランプ・ランダム等) |
| Type | .type1 |
成分 1 の波形の種類を指定 (Parameter Size が 2 以上のとき有効) |
| Type | .type2 |
成分 2 の波形の種類を指定 (Parameter Size が 3 以上のとき有効) |
波形の形状制御 🎚️
波形 1 周期あたりの形やサイクル数・偏りを制御するパラメータ群(成分ごとに末尾 0/1/2 で独立指定)。
Seed .seed 🎲
– Seed (乱数の種) — ランダム波形を初期化する数値です。
– 同じ値なら毎回同じランダムパターンが再現されます。
Number of Cycles .numcycles 🔁
– Number of Cycles (サイクル数) — 全長にわたって波形を何回繰り返すかを指定します (Random を除く)。
– numcycles0 / numcycles1 / numcycles2 で成分ごとに指定します。
Step per Cycle .steppercycle 📐
– Step per Cycle (サイクルごとの増分) — 各サイクルに加算される値です。
– steppercycle0 / steppercycle1 / steppercycle2 で成分ごとに指定します。
Bias .bias ⚖️
– Bias (偏り) — 三角波をノコギリ波に変形し、矩形波の幅 (デューティ比) を可変にします。
– bias0 / bias1 / bias2 で成分ごとに指定します。
Phase .phase ↪️
– Phase (位相) — 波形サイクルを前後にずらします。
– phase0 / phase1 / phase2 で成分ごとに位相をずらせます。
Exponent .exp 📈
– Exponent (指数) — 内部値をこの指数で累乗し、波形の立ち上がりカーブを変えます。
– exp0 / exp1 / exp2 で成分ごとに指定します。
出力レンジの再マップ 🎯
波形値を任意の出力レンジへ再マッピングするパラメータ群(成分ごとに末尾 0/1/2 で独立指定)。
Map from Low .fromlow 📥
– Map from Low (元レンジ下限) — 属性値を再マップする際の入力レンジ下限です。
– fromlow0 / fromlow1 / fromlow2 で成分ごとに指定します。
Map from High .fromhigh 📥
– Map from High (元レンジ上限) — 属性値を再マップする際の入力レンジ上限です。
– fromhigh0 / fromhigh1 / fromhigh2 で成分ごとに指定します。
Map to Low .tolow 📤
– Map to Low (出力レンジ下限) — 再マップ後の出力レンジ下限です。
– tolow0 / tolow1 / tolow2 で成分ごとに指定します。
Map to High .tohigh 📤
– Map to High (出力レンジ上限) — 再マップ後の出力レンジ上限です。
– tohigh0 / tohigh1 / tohigh2 で成分ごとに指定します。
並び順とライン制御 🔀
点列の順序やライン区切りを制御するパラメータ群(一部は成分ごとに末尾 0/1/2 で独立指定)。
Reverse .reverse ↩️
– Reverse (逆順) — オンにすると波形の並び順を逆転します。
– reverse0 / reverse1 / reverse2 で成分ごとに指定します。
Line Break Each Cycle .linebreakcycle ✂️
– Line Break Each Cycle (サイクルごとに区切り) — オンにすると各サイクルの境目でラインを区切ります。
– linebreakcycle0 / linebreakcycle1 / linebreakcycle2 で成分ごとに指定します。
Closed .closed 🔒
– Closed (閉じる) — オンにすると最後の頂点が最初の頂点に接続され、閉じた形状になります。
– 円環状や多角形状のラインをつくりたい場合に有効になります。
Output Line Break Attribute .outputlinebreakattr 🏷️
– Output Line Break Attribute (区切り属性の出力) — LineBreak 属性を出力するかどうかを指定します。
– 下流でライン区切り位置を参照したい場合にオンにします。
Texture Coordinates .texture 🗺️
Texture Coordinates (テクスチャ座標) — サイクルに対するテクスチャ座標の割り当て方を選択します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
テクスチャ座標を生成しない |
| Ramp Start to End | .rampstartend |
始点から終点まで一様に 0〜1 のランプを割り当て |
| Ramp Per Cycle | .ramppercycle |
サイクルごとに 0〜1 のランプを繰り返し割り当て |
Combine Operation .combineop ➕
Combine Operation (結合方法) — 生成した出力値を結合対象の属性値とどう合成するかを指定します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Set | .set |
生成値で上書き |
| Add | .add |
既存値に生成値を加算 |
| Multiply | .mult |
既存値に生成値を乗算 |
属性スコープの指定 📡
結合対象と出力先の属性を指定するパラメータ群。
Combine Attribute Scope .combineattrscope 📥
– Combine Attribute Scope (結合対象属性) — 結合操作の入力となる属性のスコープを指定します。
– Combine Operation が Add / Multiply のときの相手属性を絞り込みます。
Output Attribute Scope .outputattrscope 📤
Output Attribute Scope (出力先属性) — 生成した波形値を書き出す属性 (成分も選択可) をメニューから選びます。
| 項目 | 内部名 | 説明 |
|---|---|---|
| P | .P |
ポイント位置属性 |
| N | .N |
法線属性 |
| Color | .Color |
RGBA カラー属性 |
| Color.rgb | .Color.rgb |
カラー属性の RGB 成分のみ |
| Tex | .Tex |
テクスチャ座標属性 |
| PointScale | .PointScale |
ポイントスケール属性 |
| LineWidth | .LineWidth |
ライン幅属性 |
カスタム属性の上書き 🔧
出力属性を自動生成に任せず、手動で型・成分数を指定するパラメータ群。
Override Automatic Attribute .overrideautoattr 🔧
– Override Automatic Attribute (自動属性を上書き) — 入力やパラメータから自動決定される属性の種類を上書きするモードです。
– オンにすると以下の Attribute Type / Components / Default Value を手動で指定します。
Attribute Type .attrtype 🔢
Attribute Type (属性の型) — 出力属性のデータ型を指定します (デフォルトは float)。
| 項目 | 内部名 | 説明 |
|---|---|---|
| float | .float |
32-bit 浮動小数点 |
| double | .double |
64-bit 浮動小数点 |
| int | .int |
符号付き整数 |
| uint | .uint |
符号なし整数 |
| Color | .color |
カラー (float) |
| Color (double) | .dcolor |
カラー (double) |
| Direction | .dir |
方向ベクトル (float) |
| Direction (double) | .ddir |
方向ベクトル (double) |
Components .attrnumcomps 📊
Components (成分数) — 新規カスタム属性の成分数を指定します。
| 項目 | 内部名 | 説明 |
|---|---|---|
| 1 | .1 |
スカラー値 |
| 2 | .2 |
2 次元 (UV 等) |
| 3 | .3 |
3 次元 (XYZ・RGB 等) |
| 4 | .4 |
4 次元 (RGBA 等) |
属性の補足設定 🧩
デフォルト値・属性クラス・対象グループを指定するパラメータ群。
Default Value .attrdefaultval 🎯
– Default Value (デフォルト値) — 値を計算できなかった場合に使う出力属性のデフォルト値です。
– 成分数に応じて attrdefaultval0 〜 attrdefaultval3 を指定します。
Attribute Class .attrclass 🧬
– Attribute Class (属性クラス) — 点属性・頂点属性・プリミティブ属性のどれを対象に操作するかを指定します。
– 該当するクラスがある場合のみ切り替えられます。
Group .group 🎯
– Group (グループ) — 入力にグループがある場合、グループ名を指定するとそのグループのみに作用します。
– 空欄なら全点が対象になります。
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: 正弦波ラインの描画 🌊
Pattern POP (Type=Sine, Connectivity=Lines) → Render TOP (ラインマテリアル付き)
Pattern POP の Type に正弦波を選び、点を Lines で結んで滑らかなサインカーブのラインジオメトリを描く基本フロー。サイクル数と位相を変えるだけで波の細かさと位置が調整でき、手続き的な波形描画の土台になります。
- Pattern POP の
Number of Pointsを 200 程度、Connectivityを Lines に設定 type0を Sine (正弦波) に、numcycles0でサイクル数を指定Output Attribute Scopeを P にして波形を点の位置 (高さ) に書き出すphase0をアニメーションさせると波が横方向に流れて見える
Example 2: 波形で色を生成 🎨
Grid POP → Pattern POP (Output=Color, Combine=Set) → Render TOP
格子状ジオメトリに対し Pattern POP で波形値を Color 属性に書き出し、周期的なグラデーションを与える例。Map to Low / Map to High で出力レンジを 0〜1 に整えれば、そのままシェーダの色として使えます。
- 上流の Grid POP で格子状の点を用意
- Pattern POP の
Output Attribute Scopeを Color、Combine Operationを Set に設定 tolow0/tohigh0で出力レンジを 0〜1 に再マップ- 出力 POP を Render TOP に渡してシェーダで色属性を参照
Example 3: 矩形波で点を変調 🔲
入力 POP → Pattern POP (Type=Square, Output=PointScale, Combine=Multiply) → Render TOP
既存の点群に対し矩形波を PointScale 属性へ乗算で適用し、一定間隔で点の大きさが切り替わる周期的な見た目を作る例。Bias でデューティ比を変えれば大きい区間と小さい区間の比率を調整できます。
- Pattern POP の
type0を Square (矩形波) に設定 Output Attribute Scopeを PointScale、Combine Operationを Multiply に設定bias0で矩形波の幅 (デューティ比) を調整numcycles0で点群全体に何回の切り替えを入れるか指定
関連オペレータ 🔗
類似機能OP 🔍
- Pattern CHOP — 同じ波形生成をチャンネルデータとして行う CHOP 版 (Pattern POP は点群ジオメトリとして出力)
- Noise POP — 規則的な波形ではなくノイズ関数で点・属性を生成
組み合わせ推奨OP 🔄
- Math POP — 生成した波形値を後段で数式変換・スケーリング
- ReRange POP — 波形の属性値を別レンジに再マッピング
- Geometry COMP — Pattern POP の点列をインスタンシング元として描画
- CHOP to POP — CHOP 由来の値を Pattern POP の結合対象属性として注入
前処理・後処理POP 🎯
Info POP情報 📊
Pattern 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_prims: 出力プリミティブ数 (Lines / Point Prims 出力時)num_point_attribs: 出力 POP の point 属性数num_vertex_attribs: 出力 POP の vertex 属性数num_prim_attribs: 出力 POP の primitive 属性数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 波形がカクついて見える
✅ Solution:
Number of Pointsを増やしてサンプル数を上げ滑らかにするConnectivityが Lines になっているか確認 (None だと点のみで線がつながらない)- 1 サイクルあたりの点数が足りないときは
numcyclesを下げてサイクルあたりの密度を上げる
❌ Problem: 出力属性が反映されない
✅ Solution:
Output Attribute Scopeに意図した属性 (P / Color 等) が選ばれているか確認Combine Operationが Set / Add / Multiply のどれになっているか確認 (Set で上書き、Add で加算)- 後段でMath POPを使う場合は属性名が一致しているか確認
❌ Problem: 値が想定レンジに収まらない
✅ Solution:
Map to Low/Map to Highで出力レンジを明示的に指定Map from Low/Map from Highが波形の元レンジをカバーしているか確認- 色として使う場合は出力レンジを 0〜1 に再マップしてから渡す
❌ Problem: ランダム波形が毎回変わる / 変わらない
✅ Solution:
Seedを固定すれば同じランダムパターンが再現される- 毎回変えたい場合は
Seedをアニメーション値や乱数で駆動する - Random 以外の波形では
Seedは影響しないことを確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

