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

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

SOP to CHOP の機能を示す図

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

概要 📖 – ジオメトリの点属性をチャンネル化

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 チャンネル群

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

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 に取り出して、インスタンス配置のソースに渡す典型構成です。

  1. 形状を表す SOP (Grid / Sphere 等) を用意
  2. SOP to CHOP の SOP パラメータでその SOP を指定し、Position を On
  3. 出力 tx / ty / tz を Geometry COMP の Instancing にバインド
  4. 頂点 1 つにつき 1 インスタンスが配置される

Example 2: 頂点カラーをチャンネル化してビジュアル連動 🎨

Point SOP / Attribute Create → SOP to CHOP (Color RGB=On) → Math CHOP → 出力

頂点に書き込んだ Cd (color) を CHOP に出して、各点の色を制御信号として利用します。

  1. Point SOP / Attribute Create SOP で頂点に Cd 属性を付与
  2. SOP to CHOP で Color RGB を On にし cr / cg / cb を取得
  3. 後段の Math CHOP で色域変換やレンジ整形
  4. ライト強度・パーティクル色など任意のパラメータに Export

Example 3: Point Group で部分頂点だけを抽出 🎯

Group SOP → SOP to CHOP (Group=mygroup) → Select CHOP → 用途別出力

SOP 内の特定 Point Group だけをチャンネル化して、局所領域の制御に使う構成です。

  1. Group SOP で対象となる点群を named group として作成
  2. SOP to CHOP の Group パラメータにそのグループ名を入力
  3. 対象点のみが tx / ty / tz として出力される
  4. 部分形状のモーション制御や局所アニメーションのソースとして使用

Example 4: CHOP to SOP との双方向パイプライン 🔄

SOP → SOP to CHOP → Math / Filter CHOP → CHOP to SOP → 加工済 SOP

SOP to CHOP で点属性を取り出し、CHOP 側で加工してから CHOP to SOP でジオメトリに戻す典型ループです。

  1. SOP to CHOP で位置 (P) を tx / ty / tz に変換
  2. Math CHOPFilter CHOP で値を時間的・空間的に変調
  3. CHOP to SOP で同じチャンネルを元 SOP の P 属性に書き戻す
  4. ジオメトリが 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、無効時は0
  • export_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 変換でノーマライズ

参考資料 📚

その他 🔗

公式リソース 📖

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