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

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

TOP to CHOP で TOP 画像のピクセルを CHOP チャンネルへ取り込む図

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

概要 📖 – TOP 画像のピクセルを CHOP チャンネルに変換

TOP to CHOPは、TOP の画像ピクセルをサンプリングし、RGB / RGBA 各成分を CHOP チャンネルとして出力する CHOPです。GPU 側で生成・処理した画像データを CPU 側の制御信号に変換する橋渡し役で、Download Type で同期・非同期転送を選択できます。

主な用途 🎯

  • TOP 画像のピクセル値を CHOP チャンネルとして取得(RGB / RGBA 各チャンネルを個別の CHOP チャンネルへ展開)
  • GPU 演算結果の CPU 側読み出し(GLSL TOP や Feedback TOP の結果を制御信号として利用)
  • 画像の特定ピクセル・行・列のサンプリング(Crop モードで Pixel / Row / Column / Block / Full Image を選択)
  • センサーやカメラ映像の輝度値解析(Active Channel と Exclude NaNs で有効ピクセルだけを取得)
  • UV 座標から動的にピクセルをサンプリング(入力 CHOP の UV チャンネルで lookup 位置を制御)

データフロー 🔄

入力: TOP 画像

Image Page(Download Type / Color Space / Active Channel)

Crop Page(Pixel / Row / Column / Block / Full Image)

Extend Page(境界処理 Hold/Cycle/Mirror/Default)

Channel Page(Start / Sample Rate / Extend)

出力: CHOP チャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Image Page 🖼️

TOP 入力 .top 🎯

サンプリング対象の TOP を指定

TOP .top 🎯
– サンプリング対象となる TOP オペレータのパスを指定
– 任意の TOP(Movie File In / Render / GLSL / Feedback など)を入力可能

Download Type .downloadtype ⬇️

GPU からのデータ転送方式(同期・非同期)の選択

項目 内部名 説明
Immediate (Slow) .immediate そのフレーム内で即時に GPU からダウンロード(レンダリングを stall させる)
Next frame (Fast) .nextframe 次フレームに遅延してダウンロード(高速、レンダリングを stall させない)

チャンネル名プリフィックス .channel_prefix 🏷️

RGBA 各成分から生成される CHOP チャンネルの名前プリフィックス

Red .r 🔴
– 赤ピクセルから生成される CHOP チャンネルのプリフィックス(デフォルト r
– 複数行ある場合はスキャンライン番号がサフィックスとして付く(例: r0, r4

Green .g 🟢
– 緑ピクセルから生成される CHOP チャンネルのプリフィックス(デフォルト g
– 複数行ある場合はスキャンライン番号がサフィックスとして付く(例: g0, g4

Blue .b 🔵
– 青ピクセルから生成される CHOP チャンネルのプリフィックス(デフォルト b
– 複数行ある場合はスキャンライン番号がサフィックスとして付く(例: b0, b4

Alpha .a
– アルファピクセルから生成される CHOP チャンネルのプリフィックス(デフォルト a
– 複数行ある場合はスキャンライン番号がサフィックスとして付く(例: a0, a4

Output Color Space .outputcolorspace 🎨

出力前にデータを変換する色空間

項目 内部名 説明
sRGB .srgb sRGB 色空間(sRGB transfer、SDR)
sRGB – Linear .srgblinear sRGB 色空間(linear transfer、SDR)
Rec.601 (NTSC) .rec601ntsc Rec.601 NTSC primaries(SDR)
Rec.709 .rec709 Rec.709 色空間(SDR)
Rec.2020 .rec2020 Rec.2020 色空間(HDR)
Rec.2020 ST2084PQ .rec2020st2084pq Rec.2020 + Perceptual Quantizer(HDR)
Rec.2020 HLG .rec2020hlg Rec.2020 + Hybrid Log Gamma(HDR)
DCI-P3 .dcip3 DCI-P3(D65 / 2.6 gamma、HDR)
DCI-P3 (D60) .dcip3d60 DCI-P3 D60 sim(HDR)
Display-P3 (D65) .displayp3d65 Display-P3 D65 + sRGB gamma(HDR)
Display-P3 (D65) – Linear .displayp3d65linear Display-P3 D65 + linear(HDR)
ACES2065-1 .aces2065-1 ACES AP0 + linear(HDR)
ACEScg .acescg ACES AP1 + linear(HDR)
ACESproxy .acesproxy ACESproxy + log transfer(HDR)
Passthrough .passthrough Working Color Space への変換なし、値をそのまま使用

Output Reference White .outputreferencewhite 💡

Working Color Space 変換時の Reference White の扱い

項目 内部名 説明
Default For Color Space .default 選択された色空間に応じて SDR / HDR の Reference White を自動選択
Standard (SDR) .sdr 出力色空間を SDR Reference White として扱う
High (HDR) .hdr 出力色空間を HDR Reference White として扱う

出力モード・フィルタ .output_filter 🎛️

スキャンラインの結合方式と NaN ピクセルの除外

Output as Single Channel Set .singleset 📦
– オン: 全スキャンラインを 1 つのチャンネルセットに連結(RGBA 画像なら 4 チャンネル)
– オフ: 各スキャンラインごとに別チャンネルセットを作成

Exclude NaNs .excludenans 🚫
– オン: いずれかの成分が NaN のピクセルを CHOP チャンネルから除外
– GLSL TOP やレンダリング結果に NaN が混入する場合の保険

Active Channel .activechannel 🎚️

指定した成分が非ゼロのピクセルだけを CHOP チャンネルに含めるフィルタ

項目 内部名 説明
None .none フィルタリングなし(全ピクセルを取得)
Red .red 赤成分が非ゼロのピクセルのみ取得
Green .green 緑成分が非ゼロのピクセルのみ取得
Blue .blue 青成分が非ゼロのピクセルのみ取得
Alpha .alpha アルファ成分が非ゼロのピクセルのみ取得(マスク的に使用)

RGBA Units .rgbaunit 📏

出力値のスケーリング範囲

項目 内部名 説明
0 to 1 .u1 0〜1 の正規化範囲(デフォルト、シェーダ感覚)
0 to 255 .u256 0〜255 の 8bit 範囲(一般的な画像処理感覚)
0 to 65535 .u65536 0〜65535 の 16bit 範囲(高精度画像)

Crop Page ✂️

Crop .crop ✂️

画像から抽出する範囲の指定方式

項目 内部名 説明
Pixel (U,V) .pixel U / V で指定した 1 ピクセルを抽出
Row (U) .row U で指定した 1 行を抽出(V Start / V End で範囲指定)
Column (V) .col V で指定した 1 列を抽出(U Start / U End で範囲指定)
Rows and Columns .block U / V Start・End で囲んだ矩形領域を抽出
Full Image .full 画像全体を抽出

UV Units .uvunits 📐

U / V Start・End パラメータの単位

項目 内部名 説明
0 to 1 .norm 0〜1 の正規化座標(解像度非依存)
Pixels .pixel ピクセル座標(解像度依存、$NR / $NC 変数を使用可)

UV 範囲・補間 .uv_range 🎯

サンプリング範囲と補間設定

U Start .ustart 📍
– U 方向のサンプリング開始位置
– 範囲外の値は Extend Page の境界条件で決まる

U End .uend 📍
– U 方向のサンプリング終了位置

V Start .vstart 📍
– V 方向のサンプリング開始位置

V End .vend 📍
– V 方向のサンプリング終了位置

Interpolate .interp 🔀

入力 CHOP で UV サンプリングするときの補間方式

項目 内部名 説明
Linear .linear 線形補間(隣接ピクセルを重み付け平均)

Extend Page ↔️

Image Left .imageleft ⬅️

U が 0 未満のときの境界処理

項目 内部名 説明
Hold .hold 端のピクセル値を保持
Cycle .cycle 反対側の端へループ
Mirror .mirror 鏡像で折り返し
Default Color .default Default Color パラメータの色を使用

Image Right .imageright ➡️

U が 1 を超えたときの境界処理

項目 内部名 説明
Hold .hold 端のピクセル値を保持
Cycle .cycle 反対側の端へループ
Mirror .mirror 鏡像で折り返し
Default Color .default Default Color パラメータの色を使用

Image Bottom .imagebottom ⬇️

V が 0 未満のときの境界処理

項目 内部名 説明
Hold .hold 端のピクセル値を保持
Cycle .cycle 反対側の端へループ
Mirror .mirror 鏡像で折り返し
Default Color .default Default Color パラメータの色を使用

Image Top .imagetop ⬆️

V が 1 を超えたときの境界処理

項目 内部名 説明
Hold .hold 端のピクセル値を保持
Cycle .cycle 反対側の端へループ
Mirror .mirror 鏡像で折り返し
Default Color .default Default Color パラメータの色を使用

Default Color .defcolor 🎨

境界処理が Default Color のときに使用する色

Red .defcolorr 🔴
– デフォルトカラーの赤成分

Green .defcolorg 🟢
– デフォルトカラーの緑成分

Blue .defcolorb 🔵
– デフォルトカラーの青成分

Alpha .defcolora
– デフォルトカラーのアルファ成分


Channel Page 🎚️

Start / Sample Rate .start_rate 🎬

出力 CHOP チャンネルの開始位置とサンプルレート

Start .start 🎬
– チャンネルの開始位置(右側の Start Unit で単位を指定)
– チャンネル長はスキャンラインのピクセル数で決まる

Sample Rate .rate 📡
– 出力 CHOP のサンプルレート(samples/sec)

Start Unit .startunit ⏱️

Start パラメータの単位

項目 内部名 説明
I (Samples) .samples サンプル単位
F (Frames) .frames フレーム単位
S (Seconds) .seconds 秒単位

Extend Left .left

チャンネル範囲より前(左側)にアクセスしたときの値

項目 内部名 説明
Hold .hold チャンネル開始値を保持
Slope .slope 開始時の傾きで外挿
Cycle .cycle チャンネルを繰り返し
Mirror .mirror 鏡像で繰り返し
Default Value .default Default Value パラメータの値を使用

Extend Right .right

チャンネル範囲より後(右側)にアクセスしたときの値

項目 内部名 説明
Hold .hold チャンネル終了値を保持
Slope .slope 終了時の傾きで外挿
Cycle .cycle チャンネルを繰り返し
Mirror .mirror 鏡像で繰り返し
Default Value .default Default Value パラメータの値を使用

Default Value .defval 🔢

Default Value 境界条件で使用する固定値

Default Value .defval 🔢
– Extend Left / Extend Right が Default Value のとき範囲外で使用する値


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: GLSL TOP の計算結果を CPU 側で取得 🧮

GLSL TOP → TOP to CHOP (Full Image / Next frame) → Math CHOP → 制御信号
  1. GLSL TOP で粒子位置や物理シミュレーションの結果を画像として出力
  2. TOP to CHOP の Crop を「Full Image」、Download Type を「Next frame (Fast)」に設定
  3. RGBA 各チャンネルから CHOP チャンネルが生成され、CPU 側で読み出し可能になる
  4. Math CHOP や Logic CHOP で後段処理して制御信号として活用

Example 2: カメラ映像の中央 1 ピクセルの輝度を取得 📷

Video Device In TOP → TOP to CHOP (Pixel, U=0.5 V=0.5) → Filter CHOP → 値
  1. Video Device In TOP でカメラ映像を取得
  2. TOP to CHOP の Crop を「Pixel (U,V)」、UV Units を「0 to 1」、U=0.5 / V=0.5 に設定
  3. 中央ピクセルの RGBA 値が CHOP チャンネルとして出力される
  4. Filter CHOP で時間方向にスムージングして安定した輝度値を得る

Example 3: Render TOP の特定行をオシロスコープ風に読み出す 📊

Render TOP → TOP to CHOP (Row, V=0.5) → Trail CHOP → 表示
  1. Render TOP の出力から特定行のピクセル列を取得
  2. TOP to CHOP の Crop を「Row (U)」、V を 0.5、U Start=0 / U End=1 に設定
  3. 1 行分のピクセルがチャンネルの時系列サンプルとして出力される
  4. Trail CHOP やオシロ風 UI に渡して波形として可視化

Example 4: Alpha マスクで有効ピクセルだけを取得 🎭

Composite TOP → TOP to CHOP (Active Channel: Alpha, Exclude NaNs) → 解析
  1. アルファ付きの Composite TOP(人物切り抜き映像等)を入力
  2. TOP to CHOP の Active Channel を「Alpha」、Exclude NaNs をオンに設定
  3. アルファが非ゼロのピクセル(被写体領域)だけが CHOP チャンネルに含まれる
  4. 後段でピクセル数のカウントや平均輝度の解析に利用

関連オペレータ 🔗

類似機能OP 🔍

  • CHOP to TOP — 逆方向の変換(CHOP チャンネル → TOP 画像)
  • Analyze CHOP — CHOP チャンネルから単一統計値(最大・平均・ピーク)を抽出

組み合わせ推奨OP 🔄

  • Math CHOP — TOP to CHOP 後段でピクセル値の範囲変換やノーマライズ
  • Filter CHOP — ピクセル値の時間方向スムージング
  • Analyze CHOP — 取得したチャンネルから平均・最大・ピーク等の統計値を計算
  • Trail CHOP — TOP to CHOP 出力の時間履歴を可視化
  • Logic CHOP — 輝度値の閾値判定でトリガーを生成

前処理・後処理CHOP 🎯


Info CHOP情報 📊

TOP to 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: レンダリングが重くなる・フレームレートが落ちる
✅ Solution:

  • Download Type を「Immediate (Slow)」にすると GPU 同期で stall が発生する。リアルタイム用途では「Next frame (Fast)」を使用
  • Crop を「Full Image」のまま大解像度 TOP を渡すと転送量が膨大になる。前段で Math CHOP ではなく Resolution TOP でダウンサンプリングしてから渡す
  • Active Channel や Exclude NaNs で本当に必要なピクセルだけに絞り、出力チャンネル数を最小化する

❌ Problem: 色の値が想定と違う・コントラストがズレる
✅ Solution:

  • Output Color Space の選択が出力先の色空間と一致しているか確認
  • 色変換を行いたくない場合は Output Color Space を「Passthrough」にして値をそのまま使用
  • Output Reference White の SDR / HDR 設定が Working Color Space と合っているか確認

❌ Problem: NaN / Inf が CHOP に混入する
✅ Solution:

  • Exclude NaNs をオンにして問題のあるピクセルを除外
  • 前段の GLSL TOP / Feedback TOP で 0 除算や log(0) 等を発生させていないか確認
  • 後段に Logic CHOP や Limit CHOP を入れて異常値を遮断

❌ Problem: サンプル数(チャンネル長)が想定と違う
✅ Solution:

  • Crop が「Full Image」「Row」「Column」「Block」のいずれかで取得範囲が変わる
  • UV Units が「0 to 1」と「Pixels」で U Start / U End / V Start / V End の意味が変わる
  • Output as Single Channel Set のオン・オフでチャンネルセット数が変わる

参考資料 📚

その他 🔗

公式リソース 📖

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