
概要 📖 – POP 属性を CHOP チャンネルに変換
POP to CHOPは、POP オペレータの point / vertex / primitive 属性を CHOP チャンネルへ変換する CHOPです。Download Type / Extract / Thin Out / Name Format により、参照先 POP のどの要素を、どの粒度で、どのような命名で取り出すかを 1 オペレータで制御します。
主な用途 🎯
- POP の point / vertex / primitive 属性を CHOP チャンネルへ取り出し
- パーティクル位置 (P) や速度 (v) の制御信号化
- POP シミュレーション結果を Math/Filter CHOP 等で後段処理
- Thin Out 機能による大規模 POP の軽量 sampling
CHOP to POPとの round-trip 用 Precise naming 出力
データフロー 🔄
入力: 参照先 POP(point / vertex / primitive 属性)
↓
Extract で対象種別を選択
↓
Thin Out で間引き(Range / Step / Random)
↓
Name Format でチャンネル名生成
↓
出力: 属性ごとの CHOP チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
CHOP To Page 📋
Active / POP 参照 🔌
Active .active ✅
– オペレータの有効・無効を切り替える
– オフの間は出力が更新されない(負荷削減に有効)
POP .pop 🎯
– 変換対象となる POP オペレータのパスを指定
– 同一ネットワーク内の POP を相対パス / 絶対パスのどちらでも指定可能
Download Type .downloadtype ⏳
POP データをいつ取得するかのタイミング指定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Immediate (Slow) | .immediate |
同一フレーム内で POP データを即座に取得(同期、ただし重い) |
| Next frame (Fast) | .nextframe |
次フレームで POP データを取得(1 フレーム遅延、軽い) |
Extract .extract 🧬
どの粒度(要素種別)で POP 属性を取り出すか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Points | .points |
点単位の属性(位置 P・速度 v など)を取り出す |
| Vertices | .vertices |
頂点単位の属性(UV など)を取り出す |
| Primitives | .primitives |
プリミティブ単位の属性(法線・色など)を取り出す |
Thin Out(間引き) 📉
Thin Out Range .thinoutrange 🎚️
– 取り出す要素のインデックス範囲を限定するトグル
– オフ時は全要素を取り出す
Thin Range Start .thinrangestart ▶️
– Thin Out Range オン時の開始インデックス
– 0 から始まる要素番号で指定
Thin Range Length .thinrangelength 📏
– 取り出す範囲の長さ(要素数)
– 例: Start=100, Length=50 で要素 100〜149 を取り出す
Thin Step .thinstep ⏭️
– N 個ごとに 1 つ取り出す(間引きステップ)
– 1 で全件、2 で半数、10 で 1/10 件などサンプリング率を制御
Thin Random .thinrandom 🎲
– ランダムに要素を間引く確率(0〜1)
– 1.0 で全件採用、0.5 で約半数をランダム選択
Thin Random Seed .thinrandomseed 🌱
– ランダム間引きのシード値
– 同じシードで再現性のあるサンプリングが得られる
Name Format .nameformat 🏷️
POP 属性名から CHOP チャンネル名を生成する命名規約
| 項目 | 内部名 | 説明 |
|---|---|---|
| Basic (simple CHOP-like) | .basic |
従来 CHOP 風のシンプルな命名(例: tx / ty / tz) |
| Precise (compatible with CHOP to POP) | .precise |
CHOP to POP との round-trip 互換命名(属性名と要素 index を厳密に保持) |
※ 注意: POP 属性名に
()や[]が含まれる場合、CHOP のチャンネル名規則では使用できないため、Name Format によりこれらの記号は安全な文字に置換されます。
Type Suffix / Scope / Group 🔤
Type Suffix .typesuffix 🏷️
– float / int / 精度情報をチャンネル名末尾に付与
– CHOP to POP 経由で型情報を保持したい時に有効
Attributes Scope .attribscope 🎯
– 取り出す POP 属性名のパターン(例: P v Cd)
– 空文字で全属性を対象、パターンマッチング記法が使用可能
Rename Scope .renscope 🔁
– チャンネルリネーム対象のスコープ文字列
– Common Page の Rename from / Rename to と組み合わせて使用
Group .group 👥
– 取り出し対象とする POP point / primitive グループ名
– 空文字で全要素対象、グループ名指定で特定 subset のみ取り出す
Invert Group .invertgroup 🔄
– Group 指定を反転(指定グループ外の要素を取り出す)
– デフォルト: オフ
Sample Rate .rate ⚡
– 出力 CHOP のサンプルレート(Hz)
– 通常はタイムラインに合わせて 60Hz 等を指定
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: パーティクル位置を CHOP として取り出す ✨
POP Network (Particle POP) → POP to CHOP (Extract: Points, Attribs: P) → Math CHOP → Render TOP
- POP ネットワークでパーティクルシミュレーションを構築
- POP to CHOP の
POP参照を当該 POP に設定 Extractを「Points」、Attributes ScopeをPに指定- 出力チャンネル
P[0]/P[1]/P[2]を Render TOP に供給してパーティクルを描画
Example 2: 大規模 POP の軽量 sampling(Thin Out) 📉
Particle POP (10,000 points) → POP to CHOP (Thin Step: 100) → 100 サンプルの CHOP
- 1 万点規模の POP を
POP参照に設定 Thin Out Rangeをオフ、Thin Stepを 100 に設定- 100 点に間引かれた CHOP データを取得(CPU 負荷削減)
- 後段の Math CHOP で正規化して制御信号化
Example 3: CHOP to POP との round-trip 編集 🔁
CHOP (制御信号) → CHOP to POP → POP 処理 → POP to CHOP (Name Format: Precise) → 後段 CHOP
- CHOP データを CHOP to POP で POP 化(属性として保存)
- POP ネットワーク内で SOP/POP 系の処理を適用
- POP to CHOP の
Name Formatを「Precise」に設定して元のチャンネル構造を復元 Type Suffixを併用して float / int の型情報も保持
Example 4: Group 単位での属性抽出 👥
POP (Group: head_points) → POP to CHOP (Group: head_points, Invert Group: off)
- POP 側で
head_pointsという point group を定義 - POP to CHOP の
Groupに「head_points」を指定 - 当該グループ所属の point のみが CHOP として取り出される
Invert Groupをオンにすればグループ外の点を取り出せる
関連オペレータ 🔗
類似機能OP 🔍
- CHOP to POP — 逆方向変換 — CHOP チャンネルを POP 属性として書き戻す
- SOP to CHOP — SOP ジオメトリ属性を CHOP に変換(同コンセプトの SOP 版)
- DAT to CHOP — DAT テーブルから CHOP を生成(POP 以外のデータソース変換)
組み合わせ推奨OP 🔄
- Math CHOP — 取り出した POP 属性値を正規化・スケーリング
- Filter CHOP — POP から取り出した値を時間方向にスムージング
- Analyze CHOP — POP 属性の最大・平均・ピーク等の統計値を抽出
- Select CHOP — POP to CHOP の多数チャンネルから必要なものだけ抽出
- Trail CHOP — POP 属性の時間履歴を可視化
前処理・後処理CHOP 🎯
Info CHOP情報 📊
POP to CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: POP 属性が CHOP チャンネルとして出てこない
✅ Solution:
POPパラメータで対象 POP のパスが正しいか確認Extractの種別(Points / Vertices / Primitives)が属性の存在する粒度と一致しているか確認Attributes Scopeが空文字 or 対象属性名と一致するパターンになっているか確認
❌ Problem: 1 フレーム遅延でデータが古い
✅ Solution:
Download Typeが「Next frame (Fast)」だと 1 フレーム遅れる仕様- 同期が必要な用途では「Immediate (Slow)」に変更(負荷増と引き換え)
- 後段が時系列処理(Filter CHOP 等)なら 1 フレーム遅延は許容範囲
❌ Problem: サンプル数が多すぎてパフォーマンスが重い
✅ Solution:
Thin Out Rangeをオンにして必要な範囲だけ取り出すThin Stepを 10〜100 に設定して間引き sampling する- 後段で Resample CHOP ではなく POP to CHOP 段で間引くほうが軽量
❌ Problem: CHOP to POP で書き戻したチャンネル構造が崩れる
✅ Solution:
Name Formatを「Precise」に設定して round-trip 互換命名を使用Type Suffixをオンにして float / int の型情報も保持- 属性名に
()や[]が含まれる場合は記号置換が発生する点に留意
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

