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

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

Switch POP の入力切替機能を示す図

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

概要 📖 –

Switch POPは、複数の入力 POP からインデックスで 1 本を選び出力するルーター POPです。整数 Index で入力を瞬時に切替え、小数 Index ではポイント数・頂点数・プリミティブ数が一致する隣接入力同士をブレンドします。

主な用途 🎯

  • 複数 POP からの入力切替(Index で出力先を選択)
  • 小数インデックスによる入力同士のブレンド(フレーム単位のクロスフェード)
  • シーン切替の中継ノード(演出ステート遷移の起点)
  • 属性スコープを指定したブレンド制御(Point / Primitive / Vertex 単位)
  • 条件分岐ジオメトリの構築(CHOP からの Index 駆動)

データフロー 🔄

入力: 複数 POP(Index で参照)

Switch 処理(Index 値に応じた選択 or ブレンド)

出力: 選択された 1 本の POP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Switch Page 📋

Index .index 🔢

出力対象の入力番号を指定:

  • Index 値: Index (出力する入力番号) — 0 から数え、出力したい入力 POP の番号を指定します。整数で切替、小数値で隣接入力同士をブレンド可能
  • 範囲外時の挙動: 範囲外 Index はデフォルトで Clamp され、最初または最後の入力に丸められます (詳細は次項 Extend)

Extend .extend 🔁

Index が入力数を超えた / 負数になった場合の処理方法

項目 内部名 説明
Clamp .clamp 範囲外 Index を端の入力 (0 または末尾) に丸める
Loop .loop 末尾を超えると先頭に戻り、入力配列を巡回する
ZigZag .zigzag 末尾に達すると逆方向に折り返し、往復するように Index が解釈される

Blend between Inputs .blend 🌗

小数 Index 時の入力ブレンド制御:

  • オン: Blend between Inputs (入力間ブレンド) — オンにすると Index が小数値の場合に隣接 2 入力をブレンドして出力します
  • 前提条件: ブレンドが成立するのは、隣接する 2 入力の ポイント数・頂点数・プリミティブ数が一致 しているときのみ。一致しない場合は Length Mismatch の挙動に従う
  • オフ時: Index は最寄りの整数に切り捨て、瞬時切替のみ

Length Mismatch .lengthmismatchnotif ⚠️

長さ不一致時の通知・動作設定:

  • Length Mismatch Notification: Length Mismatch (長さ不一致通知) — 入力同士の点数・頂点数・プリミティブ数が異なる場合の通知方法を指定するパラメータ
  • Length Mismatch Action: lengthmismatchaction (不一致時動作) — 入力範囲外を参照したサンプリング時に、どの属性値を採用するかを決定する設定

属性スコープ 🎯

ブレンド対象となる属性を Point / Primitive / Vertex の各カテゴリで指定

Point Attribute Scope .pointattrscope 🔵
Point Attribute Scope (ポイント属性スコープ) — ブレンド対象とするポイント属性のパターン文字列
– デフォルトは * (全ポイント属性)、ワイルドカードで属性名を絞り込み可能

Primitive Attribute Scope .primattrscope 🔺
Primitive Attribute Scope (プリミティブ属性スコープ) — ブレンド対象とするプリミティブ属性のパターン文字列
– デフォルトは * (全プリミティブ属性)

Vertex Attribute Scope .vertattrscope 🔻
Vertex Attribute Scope (頂点属性スコープ) — ブレンド対象とする頂点属性のパターン文字列
– デフォルトは * (全頂点属性)

Input シーケンス .input 🔌

入力 POP の管理:

  • Input (シーケンスヘッダ): input (入力ブロック) — Switch POP の入力を管理するシーケンシャルパラメータブロックの開始
  • In POP(s): input0pop (入力 POP 参照) — 現在のシーケンスブロックに対する入力 POP のパスを指定。シーケンスブロックを追加することで複数入力に対応

Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
  • 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約

Delete Input Attributes .delinputattrs 🗑️

出力属性の絞り込みパターン:

  • Delete Input Attributes パターン: 出力に残したい属性名のパターン (例: P N Cd) を指定。指定外の属性は破棄される
  • 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約

実践アイデア 💡

Example 1: シーン演出の切替 🔀

Particle POP A / B / C → Switch POP (Index from CHOP) → Render TOP

ライブ演出で複数のパーティクル POP シーンを Switch POP で 1 本に集約し、CHOP からの Index 信号でフレーム単位に切替えるルーター構成。整数 Index で瞬時切替、小数 Index でフェード遷移が成立します。

  1. 演出シーンとなる Particle POP を 3 系統用意
  2. Switch POP の入力 0/1/2 にそれぞれ接続
  3. Constant CHOP または MIDI 入力で Index を駆動
  4. Index を整数で切替、小数で隣接シーンをクロスブレンド

Example 2: 形状のクロスフェード 🌗

Box POP / Sphere POP → Switch POP (Blend ON, Index=0→1) → Geometry COMP

ポイント数・頂点数が一致する 2 つの形状 POP を Switch POP に接続し、Index を 0 から 1 へ補間することで形状同士のモーフィング (形状ブレンド) を実現するフロー。

  1. ポイント数を揃えた 2 つの POP を入力に接続
  2. Blend between Inputs をオンに設定
  3. Index を 0.0 から 1.0 へアニメーション駆動
  4. Point Attribute Scope でブレンド対象属性を絞り込み

Example 3: ループ切替演出 🔁

POP A / B / C / D → Switch POP (Extend=Loop) → Output

Extend モードを Loop に設定し、Index を単調増加させることで入力配列を巡回させる演出パターン。ZigZag に切替えれば往復モーションになり、Index 駆動の振る舞いに変化を付けます。

  • Switch POP の Extend を Loop に変更
  • LFO CHOP 等で Index を単調増加させる
  • ZigZag に変更すると往復切替モーションになる

関連オペレータ 🔗

類似機能OP 🔍

  • Switch CHOP — CHOP ファミリーでの入力切替
  • Select POP — 別ネットワークの POP を参照する選択型

組み合わせ推奨OP 🔄

  • Blend POP — 重み付きブレンド専用の上流・下流連携
  • Merge POP — 切替ではなく全入力を合成したいとき
  • Transform POP — 切替後の出力に変換を後段適用
  • Null POP — 切替結果を下流に分岐させる中継

前処理・後処理POP 🎯


Info情報 📊

Switch POPは Info CHOP による詳細情報取得に対応しています。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 小数 Index でブレンドが効かない
✅ Solution:

  • Blend between Inputs がオンになっているか確認
  • 隣接入力のポイント数・頂点数・プリミティブ数が一致しているか確認 (不一致時はブレンド不可)
  • 前段で属性数を揃えるため Delete Input Attributes や統一形状の生成を検討

❌ Problem: 範囲外 Index で意図しない入力に切替わる
✅ Solution:

  • Extend の設定を Clamp / Loop / ZigZag から目的に合わせて選択
  • Index 駆動側 (CHOP 等) でクランプ・剰余演算を入れて事前制御
  • 入力数と Index 範囲が一致しているか接続を再確認

❌ Problem: ブレンド時に属性が欠落 / 想定外の値になる
✅ Solution:

  • Point Attribute Scope / Primitive Attribute Scope / Vertex Attribute Scope でブレンド対象属性を明示指定
  • Length Mismatch の動作設定を確認し、範囲外参照時の値の取り扱いを揃える
  • 上流で属性名を P N Cd 等に統一して入力同士の整合性を担保

参考資料 📚

その他 🔗

公式リソース 📖

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