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

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

Dimension POP のポイントリスト次元リシェイプ機能を示す図

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

概要 📖 – 点の次元構造を変える

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 と一致する必要あり)

出力: 次元構造のみが変更された同一ポイント集合

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 配列を前提とする処理に接続できる。

  1. Grid POP を配置して 20 × 33 のポイント配列を生成 (ポイント数は 660)
  2. Dimension POP を後段に接続
  3. Mode を Set Dimensions に設定
  4. Sequential Parameter Block の + ボタンで dim 0 / dim 1 / dim 2 の 3 ブロックを追加
  5. 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 グリッド構造としてリシェイプし、下流で行・列を意識した処理に渡せるようにする例。点の並びや位置データそのものは変更されず、ポイントリストを行列としてどう「見るか」のメタデータのみが切り替わる。

  1. Point Generator POP 等で 600 個のポイントを 1 次元構造として生成
  2. Dimension POP を後段に接続し Mode を Set Dimensions に設定
  3. dim 0 / dim 1 の 2 ブロックを追加し dim0number = 20 / dim1number = 30 を設定 (積 600 が入力ポイント数と一致)
  4. Info CHOP で num_points が変わらず 600 のままで、次元構造のメタデータだけが更新されたことを確認
  5. 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 として扱う転置に相当するリシェイプ。下流で行・列の解釈方向を変えたい場合に使う応用フロー。

  1. Grid POP を配置して 32 × 64 のポイント配列 (ポイント数 2048) を生成
  2. Dimension POP を後段に接続し Mode を Reorder Dimensions (Reorder Points) に設定
  3. dimorder パラメータに 1 0 と入力し、第 1 次元と第 0 次元を入れ替え
  4. Info CHOP で num_points が 2048 のまま変わらないことを確認
  5. 下流で 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 🎯


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 × 120 × 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 の有無を確認

参考資料 📚

その他 🔗

公式リソース 📖

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