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

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

Perform CHOP のパフォーマンス監視チャンネルを示す図

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

概要 📖 – プロジェクトのパフォーマンス監視と診断

Perform CHOPは、TouchDesigner プロジェクトのパフォーマンス・リソース・運用状態を 27 チャンネルで取得する CHOPです。FPS やフレーム時間といった描画性能から、GPU/CPU メモリ・OP 数・バッテリー状態まで一元的に取得でき、ライブ運用時の診断やボトルネック検出に欠かせません。

主な用途 🎯

  • FPS・フレーム時間・ドロップフレーム数のリアルタイム監視
  • GPU メモリ使用量・CPU メモリ使用量のリソース監視
  • アクティブ OP 数・総 OP 数のプロジェクト規模把握
  • Perform Mode / Perform Window フォーカス状態の運用状態取得
  • バッテリー残量・AC 接続状況のノート PC ライブ運用監視

データフロー 🔄

TouchDesigner ランタイム内部状態

Perform CHOP(27 チャンネル取得)

Trail CHOP / Logic CHOP 等で可視化・閾値判定

出力: 性能・診断データ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Perform Page 📊

描画性能チャンネル .perfchannels 🎞️

フレームレートやフレーム時間など描画性能に関するチャンネル:

  • Frames per Second (fps): 直近 1 秒間に描画されたフレーム数
  • Frame Time (msec): 各フレームのクック所要時間(ミリ秒)
  • Cook (cook): フレームがクックされたとき 1、スキップされたとき 0。Trail CHOP で可視化するとドロップ箇所が把握しやすい
  • Dropped Frames (droppedframes): 直前のフレームから現在フレームまでにドロップしたフレーム数
  • Movie Read Ahead Misses (mvreadahead): Movie File In の Read Ahead が指定フレーム数を維持できなかった回数
  • Time Slice Step (timeslicestep): 現在のクックでステップしたフレーム数。Time Slice の長さ(フレーム単位)
  • Time Slice Milliseconds (timeslicemsec): 現在の Time Slice の長さ(ミリ秒)
  • Cookrate (cookrate): プロジェクトの目標クックレート(root.time.rate、通常 60)
  • Cook State (cookstate): 実際にクックされたフレームを追跡。Trail CHOP に通すと clearly な履歴が見える
  • Cook Realtime (cookrealtime): リアルタイムフラグの状態を監視(リアルタイム駆動か否か)

メモリ・OP 統計チャンネル .memopstats 💾

GPU/CPU メモリ使用量と OP 統計のチャンネル:

  • GPU Mem Used (MB) (gpumemused): 使用中の GPU メモリ量(メガバイト)
  • Total GPU Mem (MB) (totalgpumem): システムで利用可能な GPU メモリ総量(メガバイト)
  • CPU Mem Used (MB) (cpumemused): 使用中の CPU メモリ量(メガバイト)
  • Total Active OPs (activeops): 現在アクティブにクックしている OP の数
  • Total Deactivated OP Calls (deactivatedops): Cooking Flag がオフのコンポーネントに対するクック呼び出しの回数
  • Total OPs (totalops): .toe ファイル内の総 OP 数

Perform Mode / フォーカスチャンネル .performstate 🪟

Perform Mode と Perform Window フォーカスの状態チャンネル:

  • Perform Mode (performmode): Perform Mode の現在状態を監視
  • Perform Window Focus (performfocus): Perform Window が現在フォーカスを持っているかどうか

GPU 温度・バッテリーチャンネル .hwstate 🔋

ハードウェア状態(GPU 温度・AC・バッテリー)のチャンネル:

  • GPU Temperature (Slow) (gputemp): GPU 温度を監視。NVIDIA GPU でのみ動作
  • AC Line Status (aclinestatus): ノート PC の AC 充電器が接続中なら 1、未接続なら 0
  • Battery Charging (batterycharging): バッテリーが充電中なら 1、それ以外は 0
  • Battery Life (batterylife): バッテリー残量(1 が満充電、0 が空)
  • Battery Time (batterytime): 残り使用可能時間の推定。AC 未接続かつ充電中でないときのみ有効

Python 式統計チャンネル .pystats 🐍

Python 式の最適化・キャッシュ状況のチャンネル:

  • Active Expressions (activeexpressions): プロジェクト内のアクティブな Python 式の数
  • Optimized Expressions (optimizedexpression): 最適化された Python 式の数
  • Expressions Using Cache (cachedexpressions): キャッシュ機構を利用している Python 式の数

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: FPS とドロップフレームのリアルタイム監視 📈

Perform CHOP (fps, droppedframes) → Select CHOP → Trail CHOP → CHOP to TOP

ライブパフォーマンス中に FPS とドロップフレームの履歴を視覚的に把握するためのモニタリングセットアップです。

  1. Perform CHOP を配置し、Scope を fps droppedframes に設定して必要なチャンネルだけを取得
  2. Select CHOP で fps チャンネルを取り出し、Trail CHOP に通して直近 N 秒の履歴を保持
  3. CHOP to TOP でグラフ化し、Perform Window のオーバーレイに描画
  4. ドロップフレーム検出時に Logic CHOP で閾値判定し警告色を切替

Example 2: GPU メモリ使用率による品質自動調整 🎚️

Perform CHOP (gpumemused, totalgpumem) → Math CHOP (除算) → Logic CHOP → 品質パラメータ Export

GPU メモリ使用率が一定を超えたらレンダリング解像度や Particle 数を自動的に下げ、フレーム落ちを未然に防ぐ自己調整パターンです。

  1. Perform CHOP で gpumemusedtotalgpumem を取得
  2. Math CHOP で gpumemused / totalgpumem の比率を計算
  3. Logic CHOP で 0.8 を超えたら 1 を出力
  4. 出力を Render TOP の解像度や Particle GPU の数に Export して動的に品質を抑制

Example 3: バッテリー残量を Perform Window に表示 🔌

Perform CHOP (batterylife, aclinestatus) → Math CHOP (×100) → Text TOP

ノート PC でのライブ運用時、バッテリー残量と AC 接続状態を Perform Window 上に常時表示し、ステージ上での電源トラブルを未然に検知します。

  1. Perform CHOP で batterylifeaclinestatus を取得
  2. Math CHOP で batterylife を 100 倍してパーセント値に変換
  3. Text TOP の text パラメータに Export して残量 % を描画
  4. aclinestatus が 0 になったらテキスト色を赤に切替

関連オペレータ 🔗

類似機能OP 🔍

  • Info CHOP — 個別 OP の詳細情報を取得する CHOP(Perform はプロジェクト全体のランタイム情報)

組み合わせ推奨OP 🔄

  • Trail CHOP — FPS・ドロップフレームの時間履歴を可視化
  • Logic CHOP — 閾値判定でアラート発火やフォールバック切替
  • Math CHOP — 比率計算(gpumemused / totalgpumem 等)や単位変換
  • CHOP to TOP — 性能データをグラフ TOP に変換して Perform Window 表示
  • Select CHOP — 27 チャンネルから必要なチャンネルだけを抽出

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Perform 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: GPU Temperature が常に 0 を返す
✅ Solution:

  • GPU Temperature チャンネルは NVIDIA GPU でのみ動作します。AMD/Intel GPU では値が取得できません
  • NVIDIA GPU でも最新ドライバが必要なケースがあるため、ドライバを最新版に更新する
  • Scope パラメータで gputemp を除外してチャンネル数を減らすか、不要なら無視する

❌ Problem: Battery 関連チャンネルがデスクトップ機で意味のない値を返す
✅ Solution:

  • Battery Life / Battery Time はノート PC のバッテリー API 前提のため、デスクトップ機では未定義
  • AC Line Status は常時 1 を返すのが正常
  • デスクトップ機専用プロジェクトでは Scope パラメータで battery 系チャンネルを除外して可読性を上げる

❌ Problem: fps が常に Cookrate 通りで頭打ちになる
✅ Solution:

  • fps は描画した直近 1 秒のフレーム数なので、Cookrate(root.time.rate)が上限
  • 上限を上げたい場合は root.time.rate を 120 等に変更(Time COMP 経由)
  • リアルタイムフラグがオンの場合はクックが間に合わなくても fps はあくまで描画達成数を示す

❌ Problem: Cook State / Cook チャンネルが常に 1 で変化しない
✅ Solution:

  • ビューア表示は現在フレームのみで過去のミスは見えない仕様。Trail CHOP に通して履歴を保持してから確認
  • Dropped Frames を併用するとドロップ箇所が数値で把握できる
  • Cookrate に対し Frame Time (msec) が 1000/Cookrate を超えたフレームでドロップが起きやすい

参考資料 📚

その他 🔗

公式リソース 📖

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