
概要 📖 – ジオメトリの点属性をチャンネル化
SOP to CHOPは、SOP(ジオメトリ)の点属性(位置・カラー・法線・UV・カスタム属性)を読み出して、点ごとに 1 サンプルとなる CHOP チャンネルに変換する CHOPです。Point Group による部分抽出や Transform Object によるローカル座標化に対応し、CHOP to SOP と双方向のパイプラインを構成できます。
主な用途 🎯
- ジオメトリの点位置(P)をチャンネル tx/ty/tz に変換して制御信号として利用
- 頂点カラー(Cd)・法線(N)・UV 属性を CHOP に取り込みアニメーションの源として活用
- Point Group で部分点集合のみを抽出し、特定領域の頂点だけをチャンネル化
- カスタムアトリビュート(pscale 等)の取得でパーティクル・点群データを CHOP 側で処理
- CHOP to SOP との組み合わせで、CHOP で加工した値をジオメトリに戻す往復パイプラインを構築
データフロー 🔄
入力: SOP(ジオメトリ)
↓
点・属性の選択(Group / Position / Color RGB / Normal / UV 等)
↓
Transform Object でローカル化(任意)
↓
Custom Attribute / Rename Scope によるチャンネル名整形
↓
出力: 点ごとに 1 サンプルの CHOP チャンネル群
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
SOP to Page 📋
ソース指定 .source 🎯
SOP .sop 📦
– チャンネル生成元となるジオメトリを格納している Object / SOP のパス
– 指定した SOP の点属性が読み出される
Group .group 👥
– Point Group 名でフェッチ対象の点を絞り込み
– 空欄なら SOP 内の全点が対象になる
標準属性のチャンネル化 .stdattrs 🎚️
オンにした属性が SOP から CHOP チャンネルとして出力される(On/Off メニュー)
Position .position 📍
– 点位置属性(P)を取り出し tx / ty / tz チャンネルを生成
– 最も基本的なチャンネル化で、頂点座標をモーション信号として扱う際に必須
Color RGB .colorrgb 🎨
– 頂点カラー属性(Cd の RGB 成分)を cr / cg / cb チャンネルとして取得
– テクスチャ生成や色ベースの制御信号に利用
Color Alpha .coloralpha 🌫️
– 頂点カラーのアルファ成分(Cd の 4 番目)を alpha チャンネルとして取得
– 透明度ベースのマスキング用途で使用
Normal .normal 🧭
– 法線属性(N)を nx / ny / nz チャンネルとして取得
– 面の向きを制御信号として使う際に有効
Texture UV .textureuv 🗺️
– UV 属性(uv0, uv1)を u / v チャンネルとして取得
– テクスチャ座標に基づく数値処理に利用
Texture W .texturew 🧬
– 3 次元 UV の W 成分(uv2)を w チャンネルとして取得
– 3D テクスチャ・ボリュームサンプリング系の用途で使用
Point Index .pointindex 🔢
– 各点のインデックス番号を index チャンネルとして出力
– 順序や ID を CHOP 側のロジックに渡すときに使用
Normal Position XYZ .normpos 📐
– 正規化された点位置(バウンディングボックス基準)を取得
– 形状の相対位置で制御を行うときに使用
カスタム属性の取得 .customattrs 🛠️
標準属性以外のカスタムアトリビュート(pscale 等)を CHOP チャンネルとして取り込むためのパラメータ
Custom .custom 🧩
– オンにするとカスタムアトリビュートの取得モードに切り替わる
– 下記 Attribute Scope / Rename Scope と組み合わせて使用
Attribute Scope .attribscope 🔍
– 取得対象となるカスタムアトリビュート名のパターン
– 例: pscale でパーティクルスケール属性を抽出
Rename Scope .renamescope 🔁
– 取得したカスタムアトリビュートに付与する新しいチャンネル名のパターン
– デフォルトでは P 属性を tx / ty / tz に変換するなどの命名規則
座標変換とサンプリング .transform 🌐
Transform Object .transobj 🧭
– 指定 Object の原点・回転を基準にした相対座標で点位置を出力
– ワールド座標ではなく対象オブジェクトのローカル空間で値が必要なときに使用
Sample Rate .rate ⏱️
– 出力チャンネルのサンプルレート(samples / sec)
– 後段の Time Slice 系処理と合わせて挙動が変わる
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: 点位置でパーティクルの初期配置を制御 ✨
入力 SOP → SOP to CHOP (Position=On) → Replicator / Geo instancing
ジオメトリ上の各点座標を CHOP に取り出して、インスタンス配置のソースに渡す典型構成です。
- 形状を表す SOP (Grid / Sphere 等) を用意
- SOP to CHOP の SOP パラメータでその SOP を指定し、Position を On
- 出力
tx/ty/tzを Geometry COMP の Instancing にバインド - 頂点 1 つにつき 1 インスタンスが配置される
Example 2: 頂点カラーをチャンネル化してビジュアル連動 🎨
Point SOP / Attribute Create → SOP to CHOP (Color RGB=On) → Math CHOP → 出力
頂点に書き込んだ Cd (color) を CHOP に出して、各点の色を制御信号として利用します。
- Point SOP / Attribute Create SOP で頂点に Cd 属性を付与
- SOP to CHOP で Color RGB を On にし
cr/cg/cbを取得 - 後段の Math CHOP で色域変換やレンジ整形
- ライト強度・パーティクル色など任意のパラメータに Export
Example 3: Point Group で部分頂点だけを抽出 🎯
Group SOP → SOP to CHOP (Group=mygroup) → Select CHOP → 用途別出力
SOP 内の特定 Point Group だけをチャンネル化して、局所領域の制御に使う構成です。
- Group SOP で対象となる点群を named group として作成
- SOP to CHOP の Group パラメータにそのグループ名を入力
- 対象点のみが
tx/ty/tzとして出力される - 部分形状のモーション制御や局所アニメーションのソースとして使用
Example 4: CHOP to SOP との双方向パイプライン 🔄
SOP → SOP to CHOP → Math / Filter CHOP → CHOP to SOP → 加工済 SOP
SOP to CHOP で点属性を取り出し、CHOP 側で加工してから CHOP to SOP でジオメトリに戻す典型ループです。
- SOP to CHOP で位置 (P) を
tx/ty/tzに変換 - Math CHOP や Filter CHOP で値を時間的・空間的に変調
- CHOP to SOP で同じチャンネルを元 SOP の P 属性に書き戻す
- ジオメトリが CHOP 側のロジックで滑らかに変形される
関連オペレータ 🔗
類似機能OP 🔍
- DAT to CHOP — ジオメトリではなく DAT テーブルの値を CHOP チャンネル化
- TOP to CHOP — テクスチャ画素値を CHOP チャンネル化
組み合わせ推奨OP 🔄
- Math CHOP — 取得した点座標の値域変換・スケーリングに最適
- Filter CHOP — 点属性をフレーム方向に平滑化する後段処理
- Select CHOP — tx/ty/tz など特定チャンネルだけを取り出して下流に渡す
- Analyze CHOP — 点群の最大値・平均・ピークなど統計値を集約
前処理・後処理CHOP 🎯
Info CHOP情報 📊
SOP 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: チャンネルが何も出力されない
✅ Solution:
- SOP パラメータが正しい SOP のパスを指しているか確認
- Position / Color RGB / Normal などの属性スイッチがすべて Off になっていないか確認
- Group パラメータに存在しないグループ名を指定していないか確認(一致する点がないと空出力になる)
❌ Problem: サンプル数が想定と違う
✅ Solution:
- SOP の頂点数(点数)と出力サンプル数は一致する仕様、SOP 側の点数を Info で確認
- Group で部分抽出している場合は、その Group に含まれる点数まで減ることに注意
- サンプル数を均一にしたい場合は後段で Resample CHOP を併用
❌ Problem: カスタムアトリビュートが取れない
✅ Solution:
- Custom を On にした上で Attribute Scope に対象属性名を入力する
- SOP 上で実際にその属性が定義されているか、SOP の Info(中ボタンクリック)で確認
- Rename Scope のパターンが一致していないと意図したチャンネル名にならない
❌ Problem: 座標値がワールド座標ではなく原点付近に出る/逆に巨大な値になる
✅ Solution:
- Transform Object が指定されているか確認、指定 Object のローカル空間で値が返る
- ワールド座標が欲しい場合は Transform Object を空にしてジオメトリを直接参照
- 値域を扱いやすく整える場合は Math CHOP の Range 変換でノーマライズ
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

