
概要 📖 – 別の場所のSOPを参照
Select SOPは、ワイヤー接続を使わず、ネットワーク内の別の場所にある SOP をパス文字列で指定して参照する選択中継 SOPです。Select SOP は Null SOP と類似した中継ノードですが、Null SOP が上流ワイヤー接続を必要とするのに対し、Select SOP は sop パラメータに指定したパス文字列で SOP を取得する点が異なります。これによりネットワーク図上の配線を増やさずに別 COMP 内・親階層・templates 配下の SOP を参照でき、動的なジオメトリ切替や集中管理レジストリ的な使い方が可能になります。さらに参照先が 1 つだけの場合は内部でメモリを共有するため、ジオメトリデータを複製せず効率的に取得できます。
主な用途 🎯
- ワイヤー接続なしで遠隔の SOP を参照し、ネットワーク図の配線を増やさずに別 COMP 内のジオメトリを取得
- 動的なジオメトリ切替として、
sop(参照先 SOP のパス) パラメータにエクスプレッションを書き状況に応じて参照先を切替 - ジオメトリレジストリ風の集中管理として、共有 SOP 群を 1 箇所にまとめ Select SOP 群からパス参照
- カスタム COMP の外部 SOP 参照として、サブネット内から親階層・別ブランチ・templates 配下の SOP を取得
- メモリ共有による効率化として、1 つの SOP のみ参照する場合は内部メモリを共有し、ジオメトリの複製を避ける
データフロー 🔄
参照元: ネットワーク内のいずれかの SOP (Box / Sphere / File In 等)
↓ (パス参照、ワイヤー無し)
Select SOP がsopパスで取得
↓
出力: 下流 SOP または Geometry COMP の SOP 参照先
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Select Page 🎯
参照先 SOP .sop 🎯
取得対象 SOP のパスを指定:
- SOP (参照先 SOP):
sop(参照先 SOP のパス) — 取得対象 SOP のパス。相対パス (例:../geo/box1) でも絶対パス (例:/project1/registry/main_geo) でも指定可能。エクスプレッションを記述すれば動的切替も可能。なお参照先が 1 つだけの場合は内部メモリが共有され、ジオメトリデータは複製されません
実践アイデア 💡
Example 1: 別 COMP を配線レス参照 🔌
/project1/source_geo/box1 (別 COMP 内) → Select SOP (sop = /project1/source_geo/box1) → Geometry COMP
別 COMP 内に置いたジオメトリ生成 SOP を、ワイヤー接続を引き回さずに参照したい場面で使う基本パターン。ネットワーク図が散らからず、subnet 境界をまたいだ参照も簡単に書けます。
- 参照元として Box SOP を別 COMP (例:
/project1/source_geo) 内に配置 - 参照したい場所に Select SOP を新規作成
- Select SOP の
sopパラメータに参照元のパス/project1/source_geo/box1を入力 - Select SOP の出力をそのまま Geometry COMP や下流の SOP に接続
- 参照元 Box SOP のパラメータを変更すると、Select SOP 経由で下流にも即座に反映される
Example 2: 式で参照先を動的切替 🔀
複数の SOP 候補 (geo_box / geo_sphere / geo_torus) → Select SOP (sop = エクスプレッション) → Geometry COMP
Select SOP の sop パラメータにエクスプレッションを書くことで、外部条件 (Constant CHOP の値・スイッチ・タイマー等) に応じて参照する SOP を実行時に切替できます。Switch SOP 方式 (全候補をワイヤー接続) では実現できない、パス文字列レベルでの軽量な動的選択が可能です。
- 用意するジオメトリ (例:
geo_box/geo_sphere/geo_torus) を同階層に配置 - 切替制御用に Constant CHOP を作成し、チャンネル
idxに0/1/2を入れる - Select SOP の
sopパラメータに次のエクスプレッションを入力:['geo_box','geo_sphere','geo_torus'][int(op('constant1')['idx'])] - Geometry COMP の
SOPパラメータに Select SOP のパスを指定 - Constant CHOP の
idx値を変更すると、Select SOP が参照する SOP が切替り、表示ジオメトリが動的に変化する
Example 3: 形状を集中管理 📚
ジオメトリ集約 COMP (/project1/geo_registry に Box / Sphere / Torus / File In SOP 多数) → 各シーン側の Select SOP 群がパス参照 → それぞれの Geometry COMP
プロジェクト規模が大きくなると、複数のシーンや COMP で同じジオメトリを使い回したくなります。Select SOP を使えばジオメトリ定義を 1 つの「ジオメトリレジストリ COMP」に集約し、各シーン側からはパス参照だけで取得できます。定義変更も 1 箇所で済み、メモリ共有も働くため効率的です。
- プロジェクトルート直下に ジオメトリレジストリ COMP (例:
/project1/geo_registry) を作成 - そこに使いまわす SOP を全て配置 (Box SOP / Sphere SOP / Torus SOP / File In SOP 等を命名付きで整理)
- 各シーンに Select SOP を配置し、
sopに/project1/geo_registry/<geo_name>を指定 - Geometry COMP の
SOP指定先は手元の Select SOP に統一 (シーン内で完結) - ジオメトリ定義を変更したいときは
/project1/geo_registry/内の SOP を 1 箇所更新するだけで全シーンに反映される
関連オペレータ 🔗
類似機能OP 🔍
- Null SOP — ワイヤー接続経由でジオメトリを中継するパススルー SOP。Select SOP が「パス文字列で取得」するのに対し Null SOP は「ワイヤー接続で中継」する点が差別化要素
- In SOP — カスタム SOP subnet の入力点。subnet 内部から外部 SOP を受取る用途で、Select SOP のような任意パス参照ではなく subnet I/O に限定される
- Out SOP — カスタム SOP subnet の出力点。In SOP と対になる subnet I/O 専用 SOP
- Object Merge SOP — 複数の SOP パスを一度にマージ取得できる兄弟 OP。Select SOP が「1 つの参照」なのに対し Object Merge SOP は「複数パスをまとめて統合」する用途
組み合わせ推奨OP 🔄
- Geometry COMP —
SOPパラメータに Select SOP のパスを指定する代表的な下流 COMP - Switch SOP — 複数のジオメトリをインデックスで切替える兄弟 OP。Switch SOP がワイヤー前提なのに対し Select SOP はパス文字列で切替できる、用途で使い分け
- Merge SOP — Select SOP で取得した複数ジオメトリを 1 つに統合する後段 SOP
- Transform SOP — Select SOP で取得したジオメトリを下流で移動・回転・スケールするための変形 SOP
- Replicator COMP — 複製した Geometry COMP 群が共通の Select SOP を SOP 参照することで、複製先全体のジオメトリを一括制御
前処理・後処理SOP 🎯
Info CHOP情報 📊
Select 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— プロセス開始以降に Select SOP がクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Select SOP を指定したのに下流にジオメトリが流れない (空 SOP になる)
✅ Solution:
sop(参照先 SOP のパス) パラメータに指定したパスが正しいか確認。スペルミス・大文字小文字・相対パスの基準位置を見直し、ノードビューで対象 SOP が存在するか目視で確かめる- 参照先の SOP が無効化・Bypass 状態になっていないか、その SOP 自体が正常にクックしているかを Info CHOP で確認 (
num_points/num_primsが 0 でないか) - 参照先 SOP がエラー状態になっている場合は、Select SOP からもエラーが伝播するため、参照先のエラーをまず解消する
❌ Problem: エクスプレッションでパスを切替えても参照先 SOP が更新されない
✅ Solution:
- エクスプレッションの結果が文字列として有効な SOP パスを返しているか、
sopパラメータを右クリック →Show Parameter Valueで実際の評価結果を確認 - エクスプレッション内で参照している CHOP / DAT が正常にクックしているか、依存元のクックタイミングを Info CHOP で確認
- Geometry COMP のクック順序が問題でキャッシュが古い場合は、ネットワーク全体のクックを強制更新 (
Force Cook) する
❌ Problem: Select SOP がパフォーマンスを圧迫する / メモリ使用量が予想より多い
✅ Solution:
- 同じ参照先を指す Select SOP が複数ある場合、各 Select SOP は独立してデータを取得します。参照元を 1 つの Select SOP に統一し、その出力を下流で分岐する構成に変える
- 参照先 SOP が頻繁にクックされる重い処理の場合は、上流側にも Null SOP を挟んでキャッシュ点を作る
- 参照先が 1 つだけの場合は内部メモリ共有が働くため、不要な Select SOP は削除して参照点を最小化する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Select SOP
- TouchDesigner公式ドキュメント – Null SOP
- TouchDesigner公式ドキュメント – In SOP
- TouchDesigner公式ドキュメント – Out SOP

