
概要 📖 – 点の次元構造を変える
Dimension POPは、ポイントの個数や属性データはそのままに、ポイントリストを何次元・何行 × 何列として扱うかというメタデータ構造を変更する POPです。Reorder Dimensions モードで次元軸の順序を入れ替えるか、Set Dimensions モードで新しいサイズ列を Sequential Parameter Block で指定するかの 2 系統で動作し、新次元の積が元のポイント数と一致しないと Warning が出て変更は適用されません。
主な用途 🎯
- ポイントリストの次元数を増減・並べ替えしてジオメトリの行列構造を変更
- 2D グリッド (rows × columns) を 3D 構造 (rows × columns × 1) に拡張して 3D 系処理へ受け渡し
- 多次元構造 (例:
160 × 5 × 15) を別のサイズ組み合わせに再形成 (例:80 × 2 × 5 × 15) して反復順を調整 - Reorder Dimensions モードで
dimorderインデックス指定により次元軸の順序を入れ替え (転置に相当) - Set Dimensions モードでポイント総数を維持したまま rows × columns の値を明示的に設定し、下流の行列処理を意図した形に固定
データフロー 🔄
入力: ポイント数 N のジオメトリ (任意次元構造)
↓
Dimension POP (Mode で Reorder / Set を切替、Set 時は新次元のサイズ列を指定、積が N と一致する必要あり)
↓
出力: 次元構造のみが変更された同一ポイント集合
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Dimension Page 📋
Mode .mode 🔀
次元構造の変更方式を選択するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Reorder Dimensions (Reorder Points) | .reorderdims |
既存の次元軸の順序を dimorder で指定したインデックス列に並べ替えるモード |
| Set Dimensions | .setdims |
Sequential Parameter Block dim で新しい次元サイズを 1 つずつ指定し、ポイントリストの次元構造を明示的にセットするモード |
次元順序の指定 .dimorder 🔢
Dimension Order .dimorder 🔢
– Reorder Dimensions モードで、既存の次元軸をどの順序に並べ替えるかをインデックス列で指定
– 例: 元の次元が (0, 1, 2) = (rows, columns, depth) のとき 2 0 1 と書くと (depth, rows, columns) の順に組み替える
新次元サイズ ブロック .dim 🧱
Dimension .dim 🧱
– Set Dimensions モードで使用する Sequential Parameter Block の先頭
– パラメータエディタの + ボタンで dim 0 / dim 1 / dim 2 … と追加していき、各ブロックの Number で次元サイズを 1 つずつ与える
Number .dim0number 🔢
– 現在のブロック (例: dim0number / dim1number / dim2number) における次元のサイズ
– 全ブロックの値の積が入力ポイント数と一致しなかった場合は Warning が出て次元構造は変更されない
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: 2D グリッドに singleton 次元を追加して 3D 構造化 🧱
Grid POP (20 × 33) → Dimension POP (Mode=setdims, dim0number=20, dim1number=33, dim2number=1) → 後段 3D 処理 POP
Grid POP の 20 × 33 = 660 ポイント配列に対し、Dimension POP の Set Dimensions モードで 3 つ目の次元 1 を追加し、論理的に 20 × 33 × 1 の 3D 構造として扱えるようにする最も基本的なリシェイプ。ポイント数 660 は変わらず、次元構造のメタデータだけが更新されるため、下流で 3D 配列を前提とする処理に接続できる。
- Grid POP を配置して 20 × 33 のポイント配列を生成 (ポイント数は 660)
- Dimension POP を後段に接続
- Mode を
Set Dimensionsに設定 - Sequential Parameter Block の + ボタンで
dim 0/dim 1/dim 2の 3 ブロックを追加 dim0number=20/dim1number=33/dim2number=1を設定し、積が 660 (入力ポイント数) と一致することを確認
Example 2: 1D ポイントリストを 2D グリッドとしてリシェイプ 📐
Point Generator POP (600 points) → Dimension POP (Mode=setdims, dim0number=20, dim1number=30) → POP to SOP
Point Generator POP 等で生成した 600 個のフラットなポイントリストを、Dimension POP の Set Dimensions モードで 20 × 30 の 2D グリッド構造としてリシェイプし、下流で行・列を意識した処理に渡せるようにする例。点の並びや位置データそのものは変更されず、ポイントリストを行列としてどう「見るか」のメタデータのみが切り替わる。
- Point Generator POP 等で 600 個のポイントを 1 次元構造として生成
- Dimension POP を後段に接続し Mode を
Set Dimensionsに設定 dim 0/dim 1の 2 ブロックを追加しdim0number=20/dim1number=30を設定 (積 600 が入力ポイント数と一致)- Info CHOP で
num_pointsが変わらず 600 のままで、次元構造のメタデータだけが更新されたことを確認 - POP to SOP 等で下流に渡し、20 × 30 の行列前提の処理を適用
Example 3: Reorderで次元軸の順序を入替 🔀
Grid POP (32 × 64 → 内部的に (rows=32, columns=64)) → Dimension POP (Mode=reorderdims, dimorder="1 0") → 後段の行列処理 POP
Grid POP の 32 × 64 ポイント配列に対し、Dimension POP の Reorder Dimensions モードと dimorder = 1 0 によって 2 つの次元軸の順序を入れ替え、64 × 32 として扱う転置に相当するリシェイプ。下流で行・列の解釈方向を変えたい場合に使う応用フロー。
- Grid POP を配置して 32 × 64 のポイント配列 (ポイント数 2048) を生成
- Dimension POP を後段に接続し Mode を
Reorder Dimensions (Reorder Points)に設定 dimorderパラメータに1 0と入力し、第 1 次元と第 0 次元を入れ替え- Info CHOP で
num_pointsが 2048 のまま変わらないことを確認 - 下流で 64 × 32 を前提とした行列処理 (例: Lookup Channel POP やテクスチャマッピング) に接続
関連オペレータ 🔗
類似機能OP 🔍
- Topology POP — ジオメトリのトポロジ情報を扱う POP。Dimension POP がポイントリストを何次元 × 何行 × 何列として扱うかのメタデータを変更するのに対し、Topology POP はプリミティブ接続情報側を操作する点で役割が異なる
組み合わせ推奨OP 🔄
- Grid POP — rows × columns の規則的なポイント配列を生成する典型的な前段入力、Dimension POP で 3D 構造化や転置に渡しやすい
- Point Generator POP — フラットなポイントリストを生成する前段、Set Dimensions モードでの 2D / 3D リシェイプの基本入力
- Lookup Channel POP — 行・列インデックスを使ったルックアップ系処理の前段でリシェイプして行列構造を揃える組み合わせ
- Lookup Texture POP — テクスチャ座標を介した属性参照で、ポイントリストを画像状の行 × 列構造に揃えて利用する組み合わせ
- POP to SOP — リシェイプ後のジオメトリを SOP ワークフローに渡す典型的な後段
前処理・後処理POP 🎯
- 前処理: Grid POP、Point Generator POP、Line POP、Pattern POP
- 後処理: Lookup Channel POP、Lookup Texture POP、Transform POP、POP to SOP
Info POP情報 📊
Dimension POP は Info CHOP 経由で出力ジオメトリの構造情報を取得できます。
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: エラー数
POP 汎用情報 (Info CHOP 経由) 📊
num_points: 出力ポイント数 (Dimension POP では入力と同じ値が維持される)num_prims: 出力プリミティブ数 (リシェイプ前後で変化なし)num_point_attribs: 出力ジオメトリのポイント属性数num_vertex_attribs: 出力ジオメトリの頂点属性数num_prim_attribs: 出力ジオメトリのプリミティブ属性数gpu_memory_used: この POP が使用している GPU メモリ量
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Set Dimensions モードで Warning が出て次元構造が変わらない
✅ Solution:
- Sequential Parameter Block の全
dimNnumberの積が入力ポイント数と一致しているか確認 (例: 入力 660 ポイントなら20 × 33 × 1や20 × 33など 660 になる組み合わせ) - Info CHOP の
num_pointsで入力ジオメトリの実際のポイント数を確認してから次元値を設定 - ブロックを + ボタンで追加しただけで
Number値を入力していないと既定値で積が一致しないケースがあるため、全ブロックの値を確認
❌ Problem: Reorder Dimensions モードで dimorder をどう書けばよいかわからない
✅ Solution:
dimorderには現在の次元インデックスを並べ替えたい順に空白区切りで書く (2 次元なら0 1がそのまま、1 0で転置)- 3 次元 (rows, columns, depth) を (depth, rows, columns) に組み替えたい場合は
2 0 1のように元のインデックスを新しい並び順に並べる - 公式の Dimension ページで rows × columns 構造の定義を確認してから dimorder の意味を把握
❌ Problem: Sequential Parameter Block の dim を追加してもパラメータが増えない
✅ Solution:
- パラメータエディタ右側の + ボタン (Sequential Parameter Blocks のブロック追加ボタン) を押して
dim 1/dim 2… を 1 ブロックずつ増やす必要がある - Mode が
Reorder Dimensionsのままだとdimブロックは使われない仕様のため、Set Dimensionsに切り替えてから追加 - ブロック追加後に
dim0number/dim1number… の値を必ず明示的に設定 (デフォルト値で意図しないサイズになっていないか確認)
❌ Problem: リシェイプ後にポイント数が変わってしまっているように見える
✅ Solution:
- Dimension POP は仕様上ポイント数を変えないため、変化していれば前段の POP (Delete / Sort / Connectivity 等) で増減している可能性が高い
- Dimension POP の直前と直後でそれぞれ Info CHOP を接続し
num_pointsを比較して切り分け - Set Dimensions モードで新次元の積を入力ポイント数と意図的に合わせていない場合は Warning と共に元の次元構造のまま出力されるため、Warning の有無を確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Dimension POP
- Points, Vertices and Primitives in POPs (POP の基本概念)
- Dimension (rows × columns の構造定義)
- DimensionPOP Class (Python リファレンス)

