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

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

CHOP to POP の CHOP→POP 属性変換機能を示す図

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

概要 📖 – CHOP チャンネルをポイント属性に変換

CHOP to POPは、入力 CHOP のチャンネル値をサンプル単位でポイント属性に展開し、指定したプリミティブ種別で接続したジオメトリを出力する POPです。CHOP の各サンプルが POP の 1 ポイントに対応し、Channel Scope と Attribute Scope の組合せでチャンネル → 属性のマッピングを定義します。

主な用途 🎯

  • CHOP チャンネルの値をポイント属性 (P / N / Cd 等) として POP ジオメトリに展開
  • サンプル数を Connectivity (Line Strip / Lines / Point Primitives) で接続トポロジ化
  • Channel Scope パターンと Attribute Scope で対象 CHOP チャンネルから属性へのマッピングを定義
  • Sequential New Attribute ブロックで任意のカスタム属性 (名前・型・成分数・初期値) を作成
  • Specify Position + Start/End Position でサンプルを 3D 空間の位置範囲にマッピング

データフロー 🔄

入力: CHOP (複数チャンネル × 複数サンプル)

Connectivity でプリミティブ種別選択 (None / Point Primitives / Line Strip / Lines)

Channels Selection + Attribute Scope で属性マッピング

出力: ポイント属性を持つ POP ジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

CHOP to Page 📋

CHOP 参照 🔌

CHOP .chop 🎯
– POP 属性に変換する入力 CHOP のパスを指定
– 同一ネットワーク内の CHOP を相対パス / 絶対パスのどちらでも指定可能

Connectivity .surftype 🧵

出力ポイントを接続するプリミティブ種別を選択するメニューパラメータ

項目 内部名 説明
None .none プリミティブを生成せず、ポイントのみを出力
Point Primitives .points 各ポイントを単独のポイントプリミティブとして出力
Line Strip .linestrip 全ポイントを 1 本の連続ラインで接続したストリッププリミティブを生成
Lines .lines 隣接するポイント同士を独立した線分プリミティブとして出力

Override Number of Points .overridenumpoints 🔢

Override Number of Points .overridenumpoints 🔢
– オンにすると CHOP のサンプル数ではなく、明示指定したポイント数で出力を生成
– CHOP サンプル数と異なる粒度の POP を作りたいときに使用

Number of Points .numpoints 📐
– Override Number of Points がオンのときに有効、出力ポイント数を指定する整数値
– CHOP サンプル数と異なる場合は Interpolate と組み合わせて再サンプリング挙動を制御

Interpolate .interpolate ↔️

Interpolate .interpolate ↔️
– オンのとき CHOP サンプル間を補間して属性値を生成 (POP が CHOP サンプル数と異なるポイント数のとき有効)
– オフのときは最近傍サンプルの値をそのまま使用

Position Mapping .specifypos 📏

Specify Position .specifypos 📍
– オンにするとサンプルをポイント位置範囲にマッピングする機能を有効化
– 一定範囲の直線・曲線上にサンプルを並べたい場合に使用

Start Position .startpos 🟢
– サンプル列を配置する開始位置 (startposx / startposy / startposz) を指定
– 最初のサンプルがこの位置に配置される

End Position .endpos 🔴
– サンプル列を配置する終了位置 (endposx / endposy / endposz) を指定
– 最後のサンプルがこの位置に配置される

Closed .closed 🔁
– オンにすると最後の頂点が最初の頂点に接続され、閉じたループ状のプリミティブになる
– 円・多角形等の閉じた形状を CHOP サンプルから生成したい場合に使用

Channels Selection .chanssel 🔤

CHOP チャンネルをどのように属性へ自動変換するかの命名規則メニュー

項目 内部名 説明
Specify Channels .spec Channel Scope と Attribute Scope で対象チャンネルと出力属性を明示的に指定
Autoconvert Precise Names with Type Suffix .precisenamessuffix 厳密な命名規則 (型サフィックス付き) でチャンネル名から属性名・型を自動推定して変換
Autoconvert Precise Names .precisenames 厳密な命名規則 (型サフィックス無し) でチャンネル名から属性名を自動推定して変換

Channel Scope .chanscope 🎯

Channel Scope .chanscope 🎯
– 属性に変換する対象 CHOP チャンネル名のパターンを指定 (例: tx ty tz)
* ワイルドカードや空白区切りで複数チャンネルを指定可能

Attribute Scope .attrscope 📛

Channel Scope に対応して生成する出力属性のリストを定義するメニューパラメータ

項目 内部名 説明
P .P ポイント位置属性 P (vec3) を生成
P(0) .P(0) P 属性の x 成分のみを生成
P(1) .P(1) P 属性の y 成分のみを生成
P(2) .P(2) P 属性の z 成分のみを生成
Color .Color 頂点カラー属性 Color (vec4) を生成
Color(0) .Color(0) Color 属性の R 成分のみを生成
Color(1) .Color(1) Color 属性の G 成分のみを生成
Color(2) .Color(2) Color 属性の B 成分のみを生成
Color(3) .Color(3) Color 属性の A 成分のみを生成
N .N 法線属性 N (vec3) を生成
N(0) .N(0) N 属性の x 成分のみを生成
N(1) .N(1) N 属性の y 成分のみを生成
N(2) .N(2) N 属性の z 成分のみを生成
Tex .Tex テクスチャ座標属性 Tex (vec3) を生成
Tex(0) .Tex(0) Tex 属性の u 成分のみを生成
Tex(1) .Tex(1) Tex 属性の v 成分のみを生成
Tex(2) .Tex(2) Tex 属性の w 成分のみを生成

New Attribute Block (Sequential) .attrs 🆕

Attributes .attrs 🔢
– 作成する新規属性ブロックの個数を指定するシーケンシャルブロック数
– 各ブロックは attr0*, attr1*, … と連番でパラメータが生成される

Channel Scope (per block) .attr0chanscope 🎯
– 各ブロックで属性に変換する CHOP チャンネル名パターン
– 上の Channel Scope と同様のワイルドカード / 空白区切りが使用可能

New Attribute Name .attr0name 📛
– 各ブロックで生成する属性名を予定義属性 (P / N / Cd / Tex 等) から選ぶか Custom を指定するメニュー
– Custom 選択時は Custom Name で任意の属性名を指定

Custom Name .attr0customname ✏️
– New Attribute Name が Custom のときに有効、カスタム属性名を入力
– 既存属性名と衝突しないユニーク名を推奨

Attribute Type .attr0type 🏷️
– 作成する属性のデータ型を選択するメニュー (float / int / vector 等)
– 下流オペレータでの解釈に合わせて選択

Components .attr0numcomps 🧮
– 属性ベクトルの成分数 (1=スカラ, 3=vec3, 4=vec4 等) を指定
– Channel Scope で指定したチャンネル数とこの値が整合している必要あり

Default Value .attr0defaultval 🧷
– CHOP に対応サンプルが無いときに使用される既定値 (defaultval0 / 1 / 2 / 3 で各成分を指定)
– 属性が計算できなかったポイントに割り当てられるフォールバック値


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: オーディオ波形を線分ジオメトリ化 🎵

Audio Device In CHOP → Math CHOP (正規化) → CHOP to POP (Connectivity=linestrip) → Render TOP

オーディオ入力 CHOP のサンプル波形を Math CHOP で -1..1 に正規化し、CHOP to POP で Line Strip プリミティブとして展開してリアルタイム波形ビジュアライザを構築する基本フロー。

  1. Audio Device In CHOP でマイク入力を取得
  2. Math CHOP で振幅を -1..1 に正規化
  3. CHOP to POP の CHOP パラメータで Math CHOP を参照
  4. Connectivity を linestrip に設定して連続ライン化
  5. Channel Scope = chan1, Attribute Scope = P(1) で y 成分にマッピング
  6. 下流 Render TOP で波形を表示

Example 2: CHOP サンプル位置を 3D 空間にマッピング 📏

Constant CHOP → CHOP to POP (Specify Position=on, Start/End Position 設定) → Geometry COMP

Constant CHOP の N サンプルを CHOP to POP の Specify Position で Start Position から End Position の 3D 直線範囲に均等配置し、後段の Geometry COMP でポイントジオメトリとしてレンダリングする位置サンプリング用途。

  1. Constant CHOP で 1 チャンネル × 任意サンプル数を用意
  2. CHOP to POP の Specify Position をオン
  3. Start Position を (-5, 0, 0), End Position を (5, 0, 0) に設定
  4. Connectivity を points または linestrip に設定
  5. 下流 Geometry COMP で点群として表示・他 POP で変形

Example 3: Color チャンネルを Cd 属性に変換 🎨

Pattern CHOP (RGBA) → CHOP to POP (Channels Selection=spec, Attribute Scope=Color) → Render TOP

Pattern CHOP で生成した RGBA 波形を CHOP to POP の Specify Channels モードで Channel Scope に r g b a を指定し、Attribute Scope に Color を選んでポイントカラー属性 Cd として展開、後段の Render TOP でカラーアニメーションを実現する用途。

  1. Pattern CHOP で 4 チャンネル (r/g/b/a) の波形を生成
  2. CHOP to POP の Channels Selectionspec に設定
  3. Channel Scope を r g b a に指定
  4. Attribute Scope のメニューから Color を選択
  5. Connectivity を points に設定してポイント群として出力
  6. 下流 Render TOP で Color 属性をシェーダ入力として参照

関連オペレータ 🔗

類似機能OP 🔍

  • POP to CHOP — CHOP to POP の逆方向、POP 属性を CHOP チャンネルに取り出す
  • SOP to (Family: CHOP) — SOP ジオメトリのポイント属性を CHOP チャンネル化する converter (CHOP to POP の SOP 版逆方向に相当)

組み合わせ推奨OP 🔄

  • Math POP — CHOP to POP で展開した属性を後段で正規化・スケーリング
  • Attribute POP — 生成した属性のリネーム・型変換・削除など属性スキーマ操作
  • Transform POP — Position マッピングしたポイント群を平行移動・回転・スケール

前処理・後処理POP 🎯


Info POP情報 📊

CHOP to 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: 出力ジオメトリのポイント属性数
  • num_vertex_attribs: 出力ジオメトリの頂点属性数
  • num_prim_attribs: 出力ジオメトリのプリミティブ属性数
  • num_prims: 出力ジオメトリのプリミティブ数
  • gpu_memory_used: この POP が使用している GPU メモリ量

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

よくある問題と解決策 🔧

❌ Problem: 出力ポイント数が想定と異なる
✅ Solution:

  • Override Number of Points がオンになっていないか確認 (オンの場合は Number of Points 値が優先される)
  • 入力 CHOP のサンプル数が意図通りか Info CHOP で確認
  • Override Number of Points がオフの場合、出力ポイント数 = CHOP サンプル数

❌ Problem: 属性が生成されない / 下流で読めない
✅ Solution:

  • Channels Selection が spec モードのとき Channel Scope パターンが対象チャンネル名にマッチしているか確認
  • Attribute Scope が空でないか、対象属性 (P / Color / N / Tex 等) が選択されているか確認
  • Common Page の Delete Input Attributes パターンで出力属性が破棄されていないか確認

❌ Problem: Line Strip / Lines が描画されない
✅ Solution:

  • Connectivity が none ではなく linestrip または lines になっているか確認
  • 下流に Render TOP が接続されているか、ラインレンダリング設定が有効か確認
  • Closed がオンの場合は最終ポイントと最初のポイントが接続されるため意図と異なる形状になることがある

❌ Problem: Specify Position 設定が反映されない
✅ Solution:

  • Specify Position トグルがオンになっているか確認
  • Start Position と End Position が同一座標になっていないか確認 (同一だと全ポイントが 1 点に重なる)
  • Attribute Scope に P が含まれている場合、Channel Scope 由来の値が Position 設定を上書きしている可能性を確認

参考資料 📚

その他 🔗

公式リソース 📖

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