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

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

Cache Blend POP による複数フレームの重み付きブレンド処理を示す図

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

概要 📖 – 複数フレームを重みで混ぜる

Cache Blend POPは、Cache POP に蓄積された複数の過去フレームを、指定インデックスと重みで合成して 1 つの POP として出力する POPです。Cache POP パラメータで参照先のキャッシュを指定し、Sequential Cache ブロック (Cache Index / Cache Weight) で取り出すスナップショットと重みを列挙します。CHOP パラメータを使えば、インデックスと重みを CHOP チャンネルで動的に駆動でき、Interpolate Frames でキャッシュ間補間も有効化できます。

主な用途 🎯

  • Cache POP に蓄積された過去フレーム同士の重み付きブレンド (モーフィング再生)
  • CHOP チャンネル駆動による動的なインデックス・重みアニメーション
  • Interpolate Frames によるキャッシュ間補間 (スローモーション / 時間軸スクラブ)
  • 複数キャッシュフレームを同時に呼び出して加重平均 (フレームミキシング)
  • Index Channel Unit (I/F/S) 切替えによる秒・フレーム・スナップショット番号での柔軟な参照

データフロー 🔄

入力: Cache POP (時系列キャッシュ蓄積済み)

Cache Blend POP (Cache POP 参照 + Sequential Cache ブロックで複数 index+weight 指定 / または CHOP で動的駆動)

出力: 重み付きブレンドされた POP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Cache Blend Page 📋

Cache POP 参照 🔗

Cache POP .cachepop 🔗
– フレーム取り出し元となる Cache POP へのパス参照
– 同一ネットワーク内の Cache POP を指定し、そのバッファ内のスナップショットを Sequential Cache ブロックや CHOP 経由で呼び出す

CHOP 駆動制御 🎚️

CHOP .chop 🎚️
– インデックスと重みを CHOP チャンネルで供給するための CHOP 参照
– 指定すると Sequential Cache パラメータの代わりに CHOP の各サンプルが 1 つのブレンド対象 (index + weight) として扱われる
– CHOP のサンプル数だけブレンド対象が定義される

Index Channel .indexchan 🔢
– CHOP 内で キャッシュインデックスとして使用するチャンネル名
– 各サンプル値が Index Channel Unit の単位で解釈され、Cache POP 内のスナップショットを指す

Weight Channel .weightchan ⚖️
– CHOP 内で ブレンド重みとして使用するチャンネル名
– サンプルごとの重み値で各キャッシュフレームの寄与度を制御 (通常は合計が 1.0 になるよう正規化)

Index Channel Unit .indexchanunit 📏

CHOP の Index Channel 値を解釈する単位

項目 内部名 説明
I (indices) .indices 値を Cache POP 内のスナップショット番号 (整数 index) として解釈
F (frames) .frames 値をタイムライン fps 基準のフレーム数として解釈し、対応するスナップショットを参照
S (seconds) .seconds 値を秒単位として解釈し、対応するスナップショットを参照

フレーム補間 🌊

Interpolate Frames .interp 🌊
– オン: 指定されたインデックスが整数値でない場合、前後のキャッシュフレーム間を線形補間して出力 (スムーズな時間軸サンプリング)
– オフ: 最も近いキャッシュフレームをそのまま使用 (離散的なスナップショット)
– 補間が成立するには前後のスナップショットが同一ポイント数である必要がある

Sequential Cache ブロック (cache0index / cache0weight) .cache 🧩

Cache (Sequential Parameter Blocks) .cache 🧩
– ブレンド対象とするキャッシュフレームを列挙する Sequential Parameter Blocks の起点
– 各ブロックは Cache Index (取得するスナップショット位置) と Cache Weight (ブレンド重み) のペアを持つ
– ブロック数を増やすことで複数フレームを同時にブレンド可能 (CHOP パラメータ未使用時の primary な指定方法)

Cache Index .cache0index 🎯
– 取り出す Cache POP 内のスナップショット位置を指定
– 同サブグループの Cache Index Unit (Index / Frames / Seconds) で値の解釈単位を切替

Cache Index Unit .cache0indexunit 📏
– 同ブロックの Cache Index 値を解釈する単位 (Seconds / Frames / Index)
– Step Size とは独立して、キャッシュ内のスナップショット番号で直接指定したい場合は Index、時間軸ベースで指定したい場合は Seconds / Frames を選択

Cache Weight .cache0weight ⚖️
– このブロックで取得したキャッシュフレームのブレンド重み
– 全ブロックの重みの合計が 1.0 になるよう正規化すると、加重平均としての挙動になる
– 合計が 1.0 を超えると出力属性 (P / Color 等) が加算的に強調される


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: Sequential Cacheで2枚をモーフ 🎭

入力 POP → Cache POP (Cache Size = 60) / Cache Blend POP (Cache POP 参照 + cache0/cache1 ブロック) → Render TOP

Cache POP に 60 フレーム分のキャッシュを蓄積しておき、Cache Blend POP の Sequential Cache ブロックを 2 つ用意する。1 つ目を Cache Index = 0 (最新)、2 つ目を Cache Index = -30 (30 フレーム前) に設定し、両方の Cache Weight を 0.5 ずつにすると、現フレームと過去フレームの中間状態が得られる。Cache Weight を CHOP で 0→1 にアニメーションさせれば、過去状態から現在へのモーフィング再生が実現する。

  1. 入力 POP を Cache POP の input1 に接続し、Cache Size = 60、Step Size = 1 frame で蓄積
  2. Cache Blend POP の Cache POP パラメータに前段の Cache POP を指定
  3. Sequential Cache ブロックを 2 つに増やし、cache0 → Cache Index = 0 / Cache Weight = 0.5、cache1 → Cache Index = -30 / Cache Weight = 0.5 を設定
  4. Cache Index Unit = Frames を選択 (相対フレーム指定)
  5. Render TOP で出力を可視化し、Cache Weight を CHOP でアニメさせてモーフィング動作を確認

Example 2: CHOP 駆動で N フレーム同時ブレンド 🎚️

入力 POP → Cache POP (Cache Size = 120) / Cache Blend POP (CHOP 参照、indexchan/weightchan 指定) → Render TOP

Cache POP に 120 フレーム分の履歴を保持し、Cache Blend POP の CHOP パラメータに 8 サンプルの CHOP を接続する。CHOP には index 用と weight 用の 2 チャンネルを用意し、8 つの過去フレームを同時にブレンドする。Index Channel Unit = F (frames) にしておけば CHOP の index 値はそのままフレーム数として解釈され、weight チャンネルの値で各フレームの寄与度を CHOP 側から動的制御できる。残像エフェクトや時間軸ブラーに有効。

  1. Cache POP に 120 フレーム分のスナップショットを蓄積
  2. Constant CHOP / Pattern CHOP で 8 サンプルの index チャンネルと weight チャンネルを生成 (例: index = -0, -5, -10, …, -35 / weight は合計 1.0 になるよう正規化)
  3. Cache Blend POP の CHOP に上記 CHOP を接続
  4. Index Channel = indexWeight Channel = weightIndex Channel Unit = F (frames) を設定
  5. Render TOP で残像状の出力を確認、weight 分布を CHOP 側で調整して残像の長さ・濃度を制御

Example 3: Interpolateでサブフレーム再生 ⏱️

入力 POP → Cache POP (Step = 1 frame) / Cache Blend POP (cache0 を CHOP で小数 index 駆動, Interpolate Frames = on) → Render TOP

Cache POP に 1 フレームごとのスナップショットを蓄積し、Cache Blend POP の Sequential Cache ブロック 1 つだけを使ってフレーム間補間でスクラブ再生する。Cache Index を CHOP で -3.0, -2.5, -2.0 のように 0.5 刻みで動かし、Interpolate Frames をオンにすると、隣接スナップショット間が線形補間されてサブフレーム精度の滑らかな時間軸スクラブが実現する。シミュレーション fps の倍速見せに有効。

  1. Cache POP の Step Size Unit = Frames、Step Size = 1 で取込み
  2. Cache Blend POP の Cache POP に前段 Cache POP を指定、Sequential ブロックは 1 つのまま (cache0)
  3. Interpolate Frames をオンに切替え
  4. cache0 の Cache Index Unit = Frames を選択、Cache Index パラメータに LFO CHOP 等の小数値出力を Reference 接続
  5. 前後のスナップショットのポイント数が一致していることを Info DAT で確認 (不一致だと補間が無効化される)

関連オペレータ 🔗

類似機能OP 🔍

  • Cache POP — Cache Blend が参照する蓄積側 POP (Cache がスナップショットを溜め、Cache Blend が取り出して合成)
  • Blend POP — 複数 POP 入力を重み付き合成する POP (Cache Blend は単一 Cache POP の異なるフレーム同士を合成、Blend は別々の POP 入力を合成)
  • Feedback POP — 1 フレーム遅延で前フレーム出力を入力に戻すループ構造 (Cache Blend は明示的な複数フレーム指定、Feedback は 1 フレーム遅延のみ)

組み合わせ推奨OP 🔄

  • Cache POP — 必須前段。Cache POP に蓄積されたスナップショットを Cache Blend が参照する
  • Particle POP — シミュレーション結果を Cache POP 経由で蓄積し、Cache Blend で過去状態と合成して trail / 残像表現
  • Attribute POP — Cache Blend の入力前で補間対象属性 (P / Color 等) を揃え、ポイント数不一致による補間無効化を防ぐ
  • Math POP — Cache Blend 後段でブレンド結果のスケーリング・色変換を適用

前処理・後処理POP 🎯


Info POP情報 📊

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

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: エラー数

出力ポイント・属性情報 🧬

  • num_points: ブレンド結果の出力ポイント数 (参照先 Cache POP のスナップショット 1 つ分のポイント数と一致)
  • num_point_attribs: 出力 POP の point 属性数
  • num_vertex_attribs: 出力 POP の vertex 属性数
  • num_prim_attribs: 出力 POP の primitive 属性数
  • num_prims: 出力プリミティブ数

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

よくある問題と解決策 🔧

❌ Problem: Cache POP を指定しても出力が空になる / 参照先のフレームが取れない
✅ Solution:

  • Cache POP パラメータに正しいパスが入っているか、参照先の Cache POP が同一ネットワーク内に存在するかを確認
  • 参照先 Cache POP の Active がオンで、Cache Size が 1 より大きい状態でスナップショットが実際に蓄積されているかを確認
  • Sequential Cache ブロックの Cache Index が Cache POP のバッファ範囲外を指していないか (例: Cache Size = 60 で index = -120 を指定すると無効) を確認

❌ Problem: Interpolate Frames が効かず、出力がカクついて見える
✅ Solution:

  • 前後のスナップショットのポイント数が一致しているか Info DAT で確認 (不一致だと線形補間は無効化され、最も近い 1 フレームが返る)
  • 前段に Attribute POP を入れ、補間対象の属性 (P / Color 等) が両フレームに揃っているか確認
  • Cache Index を整数値ではなく小数値 (例: -3.0, -2.5) で動かしているか確認 (整数のままだと補間する余地が無い)

❌ Problem: CHOP 駆動モードで重みが反映されない / 出力が単一フレームしか出ない
✅ Solution:

  • CHOP パラメータに CHOP がリンクされており、Index ChannelWeight Channel に正しいチャンネル名が入っているかを確認
  • Index Channel Unit (I / F / S) と CHOP のサンプル値が単位整合しているかを確認 (Frames 指定なのに秒値を入れていると意図しないインデックスを参照する)
  • weight チャンネルの値が全て 0 になっていないか、合計が 0 だと出力が空・極端値になる場合があるため CHOP 側で値分布を確認

❌ Problem: ブレンド結果が想定より明るい / 暗い・スケールが破綻する
✅ Solution:

  • 全 Sequential Cache ブロックの Cache Weight 合計が 1.0 になるよう正規化されているかを確認 (合計 > 1.0 で値が加算的に強調、< 1.0 で減衰)
  • CHOP 駆動モードでは Weight Channel のサンプル合計を CHOP 側で正規化する (Math CHOP の Range で 1.0 に揃える)
  • 色やスカラ属性の単位が線形空間かガンマ空間かを確認、必要に応じ Common Page の Parameter Color Space を見直す

参考資料 📚

その他 🔗

公式リソース 📖

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