
概要 📖 – CHOP のサンプル値をジオメトリのポイント属性に変換
CHOP to SOPは、CHOP のサンプル値を SOP のポイント属性 (位置・カラー・法線・UV 等) に書き込み、CHOP 駆動でジオメトリを生成・変形する SOPです。Channel Scope と Attribute Scope の組み合わせで属性単位の制御ができ、Mapping (One Sample to Each Point / Resample) によりサンプル数と頂点数が一致しない場合の挙動も選択できます。
主な用途 🎯
- CHOP のサンプル値からポイント位置 P を生成し、サウンド・センサー・解析値から動的ジオメトリを構築
- 既存 SOP の点属性 (P / N / Cd / uv) を CHOP の値で更新し、Channel SOP と同等の用途を逆方向 (CHOP → SOP) で実現
- Attribute Scope によるアトリビュート単位の指定で、必要な属性 (位置のみ・色のみ等) を限定して書き込み
- Point Group での部分更新により、特定の点群だけを CHOP の値で動的に変形
- Mapping (One-to-One / Resample) の使い分けで、サンプル数と頂点数が異なる場合のリサンプル挙動を制御
データフロー 🔄
入力 (オプション): 既存 SOP (ジオメトリ)
↓
CHOP パラメータでサンプル供給元を指定
↓
Channel Scope / Attribute Scope で対応付け決定
↓
Mapping (One-to-One または Resample) でサンプルと頂点の数合わせ
↓
Compute Normals / Tangents で派生属性生成
↓
出力: 属性が更新された SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
対象ポイントの絞り込み .group_filter 👥
Group .group 🎯
– 影響を与える Point Group をパターン文字列で指定
– 空欄なら入力 SOP の全ポイントが対象
– パターンは Pattern Matching 記法 (* / [0-10] 等) が使用可能
ソース CHOP の指定 .source_chop 🎼
CHOP .chop 🎚️
– サンプル値を供給する CHOP のパス
– 指定 CHOP の各サンプルが、Mapping に従って SOP の各ポイントに割り当てられる
位置の境界 (P 属性が CHOP 側に無い場合) .position_bounds 📏
CHOP に tx / ty / tz 等の位置チャンネルが存在しない場合、ポイントは Start Position から End Position までの直線上に等間隔で配置される
Start Position .startpos 🟢
– 配置開始座標 (X / Y / Z の 3 成分)
– CHOP に P 系チャンネルが無いとき、最初のポイントの位置として使用
– startposx / startposy / startposz の 3 軸個別指定
End Position .endpos 🔴
– 配置終了座標 (X / Y / Z の 3 成分)
– CHOP に P 系チャンネルが無いとき、最後のポイントの位置として使用
– endposx / endposy / endposz の 3 軸個別指定
チャンネルと属性の対応付け .scope_mapping 🔗
Channel Scope .chanscope 📛
– 取り込み対象とする CHOP チャンネル名のパターン
– 例: tx ty tz / cd* / * (全チャンネル)
– パターンに一致したチャンネルだけが SOP 属性として書き込まれる
Attribute Scope .attscope 🏷️
– 書き込み対象とする SOP の属性名リスト
– 主な属性: P (点位置 3 値) / Pw (重み 1 値) / Cd (頂点カラー RGBA 4 値) / N (法線 3 値) / uv (UV 3 値)
– Attribute 一覧で扱える属性を確認可能
Organize by Attribute .organize 🧮
– 通常は CHOP のサンプルインデックスで点を対応付けるが、ここで指定した属性値をインデックス代わりに使うように切り替える
– 例: 既存 SOP の id 属性の値で CHOP サンプルを引きに行く、といった非順序参照が可能
サンプルとポイントのマッピング方式 .mapping 🗺️
CHOP のサンプル数と SOP のポイント数が一致しない場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| One Sample to Each Point | .onetoone |
サンプルとポイントを 1 対 1 で順番に対応付ける。サンプル数と頂点数が一致する前提 |
| Resample CHOP to Fit SOP | .scale |
サンプル数と頂点数が異なる場合、CHOP のチャンネルを補間してリサンプルし全頂点に値を割り当てる |
派生属性の自動生成 .derived_attrs 🧭
Compute Normals .compnml 🧭
– 出力ジオメトリの法線属性 (N) を自動計算
– CHOP 側で nx / ny / nz を供給している場合はオフにして上書きを防ぐ
Compute Tangents .comptang 📐
– 接線属性 (tangent) を自動計算
– 法線マッピングや異方性シェーディングを行う後段で必要となる場合に有効化
実践アイデア 💡
Example 1: オーディオ波形をリアルタイムにライン状ジオメトリへ変換 🎵
Audio Device In CHOP → Math CHOP (range 整形) → CHOP to SOP (chanscope=tx ty, mapping=One Sample to Each Point) → Geometry COMP → Render TOP
オーディオ入力の波形サンプルをそのまま頂点の x/y 位置に流し込み、波形ビジュアライザのラインジオメトリをリアルタイム生成する基本構成です。
- Audio Device In CHOP で入力波形を取得
- Math CHOP の Range 変換でサンプル値を画面表示に合うレンジに整形
- CHOP to SOP の
CHOPパラメータに上記 Math CHOP を指定 Channel Scopeをtx tyに設定し、サンプル値を 2D 位置として書き込みMappingをOne Sample to Each Pointにしてサンプル数と頂点数を 1 対 1 に揃え、Geometry COMP に接続
Example 2: Grid SOP の頂点を CHOP で動的に変位 🌊
Grid SOP → CHOP to SOP (in1=Grid, CHOP=Pattern CHOP, attscope=P, mapping=Resample) → Transform SOP → Geometry COMP
既存の Grid ジオメトリの点位置を CHOP のパターン値で更新し、頂点アニメーションによるディスプレースメント効果を作る例です。サンプル数と頂点数が異なっても Resample で全頂点に値が行き渡ります。
- Grid SOP を配置して頂点群を確保 (例: 20×20 = 400 ポイント)
- Pattern CHOP / Noise CHOP で変位用のチャンネルを生成
- CHOP to SOP の 1 番入力に Grid SOP、
CHOPパラメータに変位 CHOP を接続 Attribute ScopeをPに設定し、点位置のみを更新対象にMappingをResample CHOP to Fit SOPにしてサンプル数と頂点数の不一致を補間で吸収
Example 3: 解析値からポイント色を生成して可視化 🎨
Analyze CHOP / Math CHOP → CHOP to SOP (in1=既存 SOP, chanscope=cr cg cb, attscope=Cd) → Point SOP → Geometry COMP
解析・統計系 CHOP の値を頂点カラー (Cd) として書き込み、データの分布を点群のカラーで表現するパターンです。形状自体は変えず色だけを更新します。
- 既存 SOP (Sphere / Grid 等) を CHOP to SOP の 1 番入力に接続
- Analyze CHOP や Math CHOP で R/G/B 用のチャンネルを生成
CHOPパラメータに上記カラー用 CHOP を指定Channel Scopeをcr cg cb、Attribute ScopeをCdに設定- 下流に Point SOP を置いて Cd を可視化、または Geometry COMP の Material 側で頂点カラーを参照
関連オペレータ 🔗
類似機能OP 🔍
- SOP to CHOP — 逆方向の変換 OP、SOP の点属性を CHOP チャンネルとして取り出す
- DAT to SOP — CHOP ではなく Table DAT の値から SOP ジオメトリを構築する converter
組み合わせ推奨OP 🔄
- Math CHOP — CHOP 側の値を SOP の座標系・色域に合わせて Range 変換する前段処理
- Filter CHOP — 波形を平滑化してから CHOP to SOP に流し、ジオメトリのジッタを抑制
- Pattern CHOP — 数学的な配置パターン (sin / ramp / random) を CHOP として生成し、点位置のソースに使用
- Transform SOP — CHOP to SOP の出力に対するワールド配置・スケール調整
- Geometry COMP — CHOP to SOP の出力をレンダリングパイプラインに投入
前処理・後処理SOP 🎯
Info CHOP情報 📊
CHOP to SOP は Info CHOP による詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
total_cooks:total_cooks— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: ポイントが原点に集まる / 全部同じ位置になる
✅ Solution:
CHOPパラメータが指定された CHOP にtx/ty/tz等の位置チャンネルが含まれているか確認- 位置チャンネルが無い場合、ポイントは
Start PositionからEnd Positionまでの直線上に等間隔配置される — 両者が同一座標だと全ポイントが重なる Channel Scopeのパターンが位置チャンネル名と一致しているか確認 (例:*またはtx ty tz)
❌ Problem: サンプル数と頂点数が違ってジオメトリが崩れる
✅ Solution:
MappingをResample CHOP to Fit SOPに切り替えて、CHOP 側を頂点数に合わせて補間- 1 対 1 を維持したい場合は前段で Resample CHOP を使って CHOP のサンプル数を SOP の頂点数に揃える
- 入力 SOP を変更してポイント数を揃えるか、Grid SOP の解像度を CHOP のサンプル数に合わせる方針も有効
❌ Problem: 属性が反映されない / 一部チャンネルが書き込まれない
✅ Solution:
Channel Scopeパターンが対象 CHOP チャンネル名にマッチしているか確認 (デフォルトの*なら全チャンネル取り込み)Attribute Scopeに書き込み先 SOP 属性 (P/Cd/N/uv等) が含まれているか確認 — 含まれていない属性は CHOP に対応チャンネルがあっても書き込まれない- 属性名・成分数の対応 (
Cdは 4 成分、Pは 3 成分) を Attribute リファレンスで確認
❌ Problem: 法線がおかしい / シェーディングが破綻する
✅ Solution:
Compute Normalsをオンにして法線を自動再計算する- CHOP 側で
nx/ny/nzを直接供給している場合はCompute Normalsをオフにして上書きを回避し、Attribute ScopeにNを含める - 下流に Point SOP を置いて法線を明示計算するアプローチも有効
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – CHOP to SOP
- TouchDesigner公式ドキュメント – Attribute (点属性リファレンス)
- TouchDesigner公式ドキュメント – Pattern Matching

