
概要 📖 – 入力ジオメトリを切替
Switch SOPは、複数の入力ジオメトリから指定した番号の 1 つだけを選んで出力する切替中継 SOPです。出力は Select Input (選択する入力番号) で決まり、最初の入力が 0、次が 1 と続きます。番号が入力数を超えたり負数になったりした場合は、Extend (範囲外時の処理) の設定 (丸め・巡回・往復) に従って安全に解釈されます。
主な用途 🎯
- 複数のジオメトリから 1 つを番号で選択出力し、配線を組み替えずに表示形状を切替
- シーン分岐の中継ノードとして、演出ステートの切替起点に配置
- エクスプレッション駆動の動的切替として、CHOP の値やタイマーで選択番号を動かす
- A/B 形状比較として、同じ下流に対し入力ジオメトリを瞬時に差し替え検証
- 番号の範囲外処理の制御として、丸め・巡回・往復のいずれかで安全に切替
データフロー 🔄
入力: 複数の SOP ジオメトリ (Box / Sphere / Grid 等を複数本接続)
↓
Switch 処理 (Select Input 番号で 1 本を選択)
↓
出力: 選択された 1 つのジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Switch Page 🎛️
選択する入力 .input 🔢
出力する入力ジオメトリの番号を指定:
- Select Input (選択する入力番号):
Select Input(選択する入力番号) — 出力したい入力の番号を指定します。最初の入力が0、2 番目が1、というように 0 から数えます。エクスプレッションを書けば CHOP の値やタイマーに応じて参照先が動的に切替わります
範囲外時の処理 .extend 🔁
選択番号が入力数を超えた / 負数になった場合の振る舞いを決定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Clamp | .clamp |
範囲外の番号を端の入力 (先頭 0 または末尾) に丸める |
| Loop | .loop |
末尾を超えると先頭に戻り、入力配列を巡回する |
| ZigZag | .zigzag |
末尾に達すると逆方向に折り返し、往復するように番号が解釈される |
実践アイデア 💡
Example 1: 形状を番号で切替 🔀
Box SOP / Sphere SOP / Torus SOP → Switch SOP (Select Input = CHOP 駆動) → Geometry COMP
複数の形状 SOP を Switch SOP の入力 0/1/2 に接続し、CHOP からの番号で表示形状を切替える基本パターン。配線を組み替えずに番号 1 つで出力ジオメトリを差し替えられるため、シーンの形状切替が手軽に行えます。
- 切替候補となる Box SOP / Sphere SOP / Torus SOP を用意
- それぞれを Switch SOP の入力 0 / 1 / 2 に接続
Select Input(選択する入力番号) に表示したい形状の番号を入力- Switch SOP の出力を Geometry COMP や下流の SOP に接続
- 番号を 0 → 1 → 2 と変えると、表示される形状が即座に切替わる
Example 2: 式で動的に切替 🔢
複数の形状 SOP → Switch SOP (Select Input = エクスプレッション) → 下流 SOP
Switch SOP の選択番号にエクスプレッションを書くことで、Constant CHOP の値・タイマー・スイッチ入力などの外部条件に応じて出力ジオメトリが実行時に切替わります。手動で番号を打ち替えなくても、信号駆動で自動的に形状を選び分けられます。
- 切替候補の形状 SOP を Switch SOP の入力に順番に接続
- 切替制御用に Constant CHOP を作成し、チャンネル
idxに番号を入れる Select Inputにint(op('constant1')['idx'])のようなエクスプレッションを入力- Constant CHOP の
idx値を変えると、出力されるジオメトリが動的に切替わる
Example 3: 番号の巡回と往復 🔁
SOP A / B / C / D → Switch SOP (Extend = Loop) → Output
範囲外時の処理を Loop に設定し、選択番号を単調に増やしていくことで入力配列を巡回させる演出パターン。ZigZag に切替えれば末尾で折り返す往復モーションになり、番号駆動の振る舞いが多彩になります。
- Switch SOP の
Extend(範囲外時の処理) をLoopに変更 - LFO CHOP 等で選択番号を単調に増加させる
ZigZagに変更すると末尾で折り返す往復切替モーションになる
関連オペレータ 🔗
類似機能OP 🔍
- Select SOP — ワイヤー接続ではなくパス文字列でジオメトリを参照する選択型 SOP。Switch SOP が「入力ワイヤーを番号で切替」するのに対し、Select SOP は「パス参照で取得」する点が差別化要素
- Switch CHOP — CHOP ファミリーでの入力切替。チャンネルデータの切替に使う兄弟 OP
- Switch MAT — MAT ファミリーでのマテリアル切替。レンダリング素材を番号で切替える兄弟 OP
組み合わせ推奨OP 🔄
- Merge SOP — 切替ではなく複数ジオメトリをまとめて 1 つに統合したいときに使う後段 SOP
- Object Merge SOP — 複数の SOP パスを一度に取得・統合する OP。Switch SOP が「1 つを選択」するのに対し全パスをまとめて取り込む
- Blend SOP — 瞬時切替ではなく形状同士を補間したいときに使う。Switch SOP の硬い切替に対し滑らかなブレンドを担う
- Transform SOP — Switch SOP で選択したジオメトリを下流で移動・回転・スケールするための変形 SOP
前処理・後処理SOP 🎯
Info CHOP情報 📊
Switch 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— プロセス開始以降に Switch SOP がクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 番号を変えても出力ジオメトリが切替わらない
✅ Solution:
Select Input(選択する入力番号) が実際に変化しているか、パラメータを右クリック →Show Parameter Valueで評価結果を確認- 切替候補の SOP が Switch SOP の入力に正しい順番で接続されているか、ノードビューで配線を目視確認
- 選択番号は 0 から数えるため、1 番目の入力を出すには
0を指定しているか確認
❌ Problem: 範囲外の番号で意図しない入力に切替わる
✅ Solution:
Extend(範囲外時の処理) をClamp/Loop/ZigZagから目的に合わせて選択- 番号駆動側 (CHOP 等) でクランプや剰余演算を入れ、入力数の範囲内に事前に収める
- 入力本数と選択番号の範囲が一致しているか、接続本数を再確認
❌ Problem: 切替時に下流の処理が重い / クックが多発する
✅ Solution:
- 切替の直後に Null SOP を挟んでキャッシュ点を作り、下流の再クックを抑える
- 切替候補の各 SOP が無効化・Bypass 状態になっていないか、選択中の入力が正常にクックしているかを Info CHOP で確認
- 頻繁に切替えない非選択側の重い処理は、上流に Null SOP を置いてクックを固定する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

