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

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

Attribute Combine POP の属性統合機能を示す図

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

概要 📖 – 複数 POP 入力から属性を選別・統合

Attribute Combine POPは、複数の POP 入力から名前やパターンマッチングで属性を選別し、Rename と衝突解決ルールを適用して 1 つの出力に統合する POPです。最初の入力のすべての属性が出力に渡され、追加の入力からは選択した属性のみが Attribute Class に従って統合されます。

主な用途 🎯

  • 複数 POP 入力からポイント・頂点・プリミティブ属性を選別して 1 つの出力に統合
  • パターンマッチング (* や属性名指定) による属性の抽出と Rename
  • 属性名衝突時の振る舞い (Auto-Rename / Keep First / Keep Last / Replace) 制御
  • 入力ジオメトリ間で要素数が異なる場合の長さ不一致処理 (Ignore / Warning / Error)
  • シーケンシャル入力ブロックで多数の POP を柔軟にマージするスキーマ管理

データフロー 🔄

入力: 複数 POP (それぞれ独立した属性セット)

Attribute Class でクラス選択 + In Attributes でパターン選別 + Duplicate Attributes で衝突解決

出力: 選別・統合された属性を持つジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Inputs Page 📋

Attribute Class .attrclass 🎛️

統合対象とする属性クラスを選択するメニューパラメータ

項目 内部名 説明
Point .point ポイント属性 (P / N / Cd 等) を統合対象にする
Vertex .vertex 頂点属性 (UV / 頂点ノーマル 等) を統合対象にする
Primitive .primitive プリミティブ属性 (面の属性) を統合対象にする

Length Mismatch .lengthmismatchnotif ⚠️

入力 POP 間で要素数が異なる場合の通知方法を決定するメニューパラメータ

項目 内部名 説明
Ignore .ignore 長さ不一致をユーザーに通知せず処理を続行
Warning .warning ノードに Warning を表示して処理を続行
Error .error ノードに Error を表示して処理を停止

Length Mismatch Action .lengthmismatchaction 🛠️

長さ不一致時、入力範囲外をサンプリングする際に使用する属性値の選択

Length Mismatch Action .lengthmismatchaction 🛠️
– 短い入力に対し、範囲外サンプル位置で使用する値を指定するメニューパラメータ
– 公式 docs の解説では「最後のポイント値を保持」「0 で埋める」「1 で埋める」「何もしない」のいずれかを選択できると記載される

Duplicate Attributes .duplicateattrs 🔁

属性名が複数入力で衝突した場合の解決ルールを決定するメニューパラメータ

項目 内部名 説明
Auto-Rename .autorename 衝突した属性に連番を付加して新しい属性名として保持
Keep First .keepfirst 最初に出現した属性値を採用し、後続の衝突値は破棄
Keep Last .keeplast 最後に出現した属性値で上書きし、先行する衝突値は破棄
Only Replace Attribs of First Input .replaceattribs 最初の入力に存在する属性のみを後続入力の値で置換、新規属性は追加しない

Sequential Input Blocks .input 🧩

In .input 🧩
– 入力 POP を 1 ブロック単位で管理するシーケンシャルパラメータブロックの起点
– ブロック数を増減することで複数 POP を順序付きで束ねる

In POP(s) .input0pop 🔌
– 現在のシーケンスブロックに対応する入力 POP のパスを指定
– ワイヤー接続またはパターンマッチング (例 geo*) で複数 POP を 1 ブロックにまとめて指定可能

In Attributes .input0attrs 🔤
– 現在のシーケンスブロックから取り出す属性名のパターン (デフォルト * で全属性)
P NCd* のようにスペース区切り・ワイルドカードで複数属性を指定可能

Rename to .input0renameto 🏷️
– In Attributes で取り出した属性を出力時にリネームするパターン
– 衝突回避や名前空間整理のために属性名を書き換える用途で使用


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: 色情報と位置情報を別 POP から合成 🎨

SOP to POP (P / N) → Attribute Combine POP (input0=geo, input1=color_src, In Attributes=Cd) → Render TOP

形状ジオメトリを持つ POP と、別経路で生成した色属性 Cd だけを持つ POP を Attribute Combine POP に入れて、最初の入力からは全属性を引き継ぎつつ 2 番目の入力からは Cd だけを抽出して 1 つのジオメトリに統合する典型フロー。

  1. 形状を生成する POP (例: geo1) を 1 番目のシーケンスブロックに接続
  2. Cd を持つ別 POP (例: color_src) を 2 番目のシーケンスブロックに接続
  3. Attribute Class を point に設定して全入力をポイント属性として扱う
  4. 2 番目のブロックの In Attributes を Cd に設定し、Cd のみ取り込む
  5. 出力を Render TOP に渡してシェーダで色属性を参照

Example 2: 属性名衝突を Auto-Rename で全件保持 🔁

Noise POP (Cd) + Constant POP (Cd) → Attribute Combine POP (Duplicate Attributes=autorename) → Lookup Attribute POP

複数の POP がそれぞれ同名属性 Cd を持つ場合に Duplicate Attributes を Auto-Rename にして、衝突した Cd を連番付きの新しい属性名として全件保持し、下流の Lookup Attribute POP で個別に参照できる状態に整えるパターン。

  1. Cd を出力する 2 つの POP を Attribute Combine POP の input0 と input1 にそれぞれ接続
  2. Attribute Class を point に設定
  3. Duplicate Attributes を autorename に切替
  4. 出力で Cd と Cd2 (または類似のリネーム属性) の両方が存在することを確認
  5. 下流の Lookup Attribute POP で個別属性として参照

Example 3: 長さ不一致を Warning にして安全に統合 ⚠️

Box POP (n points) + Particle POP (m points, m≠n) → Attribute Combine POP (Length Mismatch=warning) → Math POP

ポイント数の異なる 2 つの POP をマージする際に Length Mismatch を Warning に設定し、処理を停止させず Warning 表示で運用継続させながら、Length Mismatch Action で範囲外サンプル位置の値補完方針を明示する運用フロー。

  1. 異なるポイント数の 2 POP を Attribute Combine POP の sequence ブロックに接続
  2. Length Mismatch を warning に設定
  3. Length Mismatch Action で範囲外サンプル時の値補完方針を選択
  4. ノードに Warning が出ても処理は継続し、出力ジオメトリを下流へ流す
  5. 下流の Math POP で統合された属性を後段処理

関連オペレータ 🔗

類似機能OP 🔍

  • Math Combine POP — 同じシーケンシャル入力アーキテクチャを持つ POP で、属性選別ではなく数値演算で複数入力を統合
  • Math Mix POP — シーケンシャル入力ブロック構造を共有し、入力間の Blend / Mix を主目的とする
  • Blend POP — 複数 POP 入力をブレンド比率で混合する。Attribute Combine と同じ multi-input アーキテクチャ
  • Merge POP — 複数 POP 入力を連結 (concatenate) して 1 つの出力にまとめる。属性選別はしない
  • Switch POP — シーケンシャル入力から 1 つを選択して出力。Attribute Combine と同じ multi-input シーケンス管理

組み合わせ推奨OP 🔄

  • Attribute POP — 前段で属性スキーマを整えてから Attribute Combine で統合
  • Lookup Attribute POP — 統合後の属性を参照テーブルとして他 POP の属性に流し込む
  • Math POP — 統合後の属性に正規化・スケーリング・オフセットを後段で適用

前処理・後処理POP 🎯


Info POP情報 📊

Attribute Combine 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: 出力ジオメトリのポイント数
  • num_point_attribs: 出力ジオメトリのポイント属性数 (Attribute Combine で統合された結果)
  • num_vertex_attribs: 出力ジオメトリの頂点属性数
  • num_prim_attribs: 出力ジオメトリのプリミティブ属性数
  • num_prims: 出力ジオメトリのプリミティブ数
  • gpu_memory_used: この POP が使用している GPU メモリ量

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

よくある問題と解決策 🔧

❌ Problem: 期待した属性が出力に現れない
✅ Solution:

  • Attribute Class が統合したい属性クラス (point / vertex / primitive) と一致しているか確認
  • In Attributes のパターンが対象属性にマッチしているか確認 (デフォルト * は全属性)
  • Common Page の Delete Input Attributes パターンで出力属性が破棄されていないか確認

❌ Problem: 属性名衝突で値が想定外になる
✅ Solution:

  • Duplicate Attributes の設定を確認 (Auto-Rename / Keep First / Keep Last / Only Replace Attribs of First Input)
  • シーケンシャル入力ブロックの順序を確認し、優先したい入力を上位に配置
  • In ブロック内の Rename to で衝突属性を明示的に別名に書き換える

❌ Problem: Length Mismatch で処理が停止する
✅ Solution:

  • Length Mismatch を warning または ignore に変更して処理を続行
  • Length Mismatch Action で範囲外サンプル位置の値補完方針を明示的に選択
  • 前段で Convert POP 等を使って入力 POP の要素数を揃える

❌ Problem: パフォーマンスが重い / GPU メモリを圧迫
✅ Solution:

  • Common Page の Delete Input Attributes で不要属性を破棄してメモリ・帯域を削減
  • In Attributes のパターンを * から具体属性名に絞り込んで取得属性を最小化
  • Free Extra GPU Memory パルスで未使用 GPU メモリを解放

参考資料 📚

その他 🔗

公式リソース 📖

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