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

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

Raster SOP で TOP 画像をピクセル単位の点群ジオメトリに変換する図

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

概要 📖 – 画像を点群に変換する

Raster SOPは、入力 TOP の画像データを左から右・上から下にピクセル単位で走査し、画素ごとに 1 つのポイントを出力する SOPです。出力された点群は Laser CHOP と組み合わせることでレーザーディスプレイやオシロスコープへの画像出力に応用でき、輪郭のみを取り出す Trace SOP とは異なり、画像の全ピクセルを点として出力するのが特徴です。

主な用途 🎯

  • TOP の画像をピクセル単位で点群ジオメトリに変換し、画像 1 枚から幅 × 高さの数だけポイントを 1 ノードで生成
  • レーザーディスプレイへの画像出力に応用 (後段 Laser CHOP で X-Y-blanking 信号に変換しガルバノ式レーザープロジェクタへ送信)
  • オシロスコープへのベクトル画像表示に応用 (Laser CHOP + Audio Device Out CHOP 経由でステレオ音声 X-Y 信号化、オシロスコープの X-Y モードに入力)
  • Direction で走査方向 (水平・垂直) を切替、表示装置のスキャン方向や画像の向きに合わせた点群並びを生成
  • Download Type で GPU 転送タイミングを制御、Next frame (Fast) を選ぶことでレンダリングを止めずに高速処理 (1 フレーム遅延と引き換え)
  • 画像処理結果を点群として後段 SOP パイプラインへ橋渡し、Transform SOP や Particle SOP と組み合わせて画像ベースの 3D ジオメトリ加工に展開
  • 輪郭のみ抽出する Trace SOP に対し、全画素を点として出力する役割で、塗りつぶし型のラスタ画像表現に対応 (Trace SOP はベクトル輪郭、本 SOP はピクセル点群)

データフロー 🔄

入力: TOP (画像データ)

Direction で走査方向 (Horizontal / Vertical) を選択

画像の各ピクセルからジオメトリポイントを 1 つずつ生成

Download Type で GPU 転送タイミング (Immediate / Next frame) を指定

出力: 点群ジオメトリ SOP (Laser CHOP / Geometry COMP 等へ接続)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Raster Page 📷

入力 TOP の指定 🎯

TOP .top 🎯
TOP (入力 TOP のパス) — ラスタライズ対象とする TOP オペレータのパスを指定 (例: moviefilein1../top_source)
– 指定された TOP の各ピクセルから 1 つのジオメトリポイントが生成される
– 出力ポイント数は入力 TOP の解像度 (幅 × 高さ) と等しい — 1920 × 1080 の TOP を指定すると約 200 万ポイントになるため、Resolution TOP で解像度を下げてから渡すのが基本

走査方向 .direction 🧭

ピクセルを走査する進行方向の選択

項目 内部名 説明
Horizontal .horizontal 水平方向に走査 (各行を左から右へ読み取り、行を上から下へ進める)
Vertical .vertical 垂直方向に走査 (各列を上から下へ読み取り、列を左から右へ進める)

※ 注意: 画像の構図 (横長か縦長か) や表示装置のスキャン方向によって最適な走査方向が変わります。レーザー / オシロスコープ出力では、表示側の掃引方向に合わせると描画品質が安定します。

引用元: 公式 docs

GPU 転送タイミング .downloadtype ⏱️

GPU から CPU へピクセルデータを転送するタイミングの選択

項目 内部名 説明
Immediate (Slow) .immediate 即時転送 — 同じフレーム内に結果ポイントが取得できるが、レンダリングが転送完了まで待機 (ストール) するため低速になる
Next frame (Fast) .nextframe 次フレーム転送 — レンダリングをストールさせず高速に処理するが、結果ポイントの取得が 1 フレーム遅延

※ 注意: Next frame (Fast) は高解像度・高フレームレートでパフォーマンスを優先する場面に有効ですが、ポイント出力が 1 フレーム遅延します。入力 TOP の動きと出力ポイントの厳密な同期が必要な場合は Immediate (Slow) を選択します。

引用元: 公式 docs


実践アイデア 💡

Example 1: 画像輪郭をレーザー描画 🔴

Movie File In TOP → Monochrome TOP → Edge TOP → Threshold TOP → Raster SOP (Direction=Horizontal) → Laser CHOP → Audio Device Out CHOP

Edge TOP と Threshold TOP で輪郭線のみを残した画像を Raster SOP でピクセル点群に変換し、Laser CHOP 経由でガルバノ式レーザープロジェクタの X-Y-blanking 信号として送信する基本パターン。輪郭抽出を挟むことで描画ポイント数が劇的に減り、レーザーミラーの追従が現実的な速度に収まる。

  1. Movie File In TOP / Video Device In TOP で表示したい画像を読み込み
  2. Monochrome TOP で 1 チャンネルに統一し、Edge TOP / Threshold TOP で輪郭線のみを残す (全画素描画はレーザー負荷が高すぎるため)
  3. Raster SOP の TOP パラメータに前段 TOP のパス (例: threshold1) を指定
  4. DirectionHorizontal に設定し、左→右・上→下の走査順を選択
  5. Download TypeNext frame (Fast) に設定して描画ストールを回避
  6. 後段に Laser CHOP を接続し、Audio Device Out CHOP 経由で X / Y / blanking 信号をレーザープロジェクタへ送信

Example 2: オシロスコープで画像表示 📺

Movie File In TOP → Monochrome TOP → Raster SOP (Direction=Vertical) → Laser CHOP → Audio Device Out CHOP

Raster SOP のピクセル点群を Laser CHOP でステレオ音声 X-Y 信号に変換し、オシロスコープの X-Y モードで画像をベクトルディスプレイとして表示する例。音響系装置と映像作品の連携、レトロな波形表現、ライブビジュアルでの DIY ベクタースクリーン的演出に使われる。

  1. Movie File In TOP で表示したい画像 / 短いループ動画を読み込み (低解像度の方がオシロスコープ追従が容易)
  2. Monochrome TOP で輝度を 1 チャンネルに統一し、走査ノイズの源となる色情報を除外
  3. Raster SOP の TOP に Monochrome TOP のパスを指定、DirectionVertical に設定
  4. 後段に Laser CHOP を接続して X / Y / Z (blanking) チャンネルを生成
  5. Audio Device Out CHOP に接続し、L = X / R = Y の 2 チャンネルステレオ出力としてオーディオインターフェイスからオシロスコープへ送信
  6. オシロスコープを X-Y モードに切り替えると、画像がベクトル波形として描画される

Example 3: 画像から点群を 3D 加工 ✨

Movie File In TOP → Resolution TOP → Raster SOP → Transform SOP → Geometry COMP → Render TOP

Raster SOP で TOP 画像をピクセル単位の点群ジオメトリに変換し、後段の Transform SOP / Noise SOP で 3D 空間内に配置・押し出し・変形させて画像由来のポイントクラウドアートを構築する例。Resolution TOP で解像度を絞ることでポイント数とクックコストを現実的な範囲に抑える。

  1. Movie File In TOP で対象画像を読み込み、Resolution TOP で 256 × 256 など扱いやすい解像度に縮小 (ポイント数はピクセル数と等しいため)
  2. Raster SOP の TOP に Resolution TOP のパスを指定
  3. Download TypeNext frame (Fast) に設定してレンダリングを止めず処理
  4. 後段に Transform SOP を接続し、点群を 3D 空間内の任意位置にスケール / 回転 / 移動
  5. 必要なら Noise SOP / Point SOP で点の Z 座標を画像輝度に応じて変調 (ヒートマップ的押し出し効果)
  6. Geometry COMP に接続して Camera / Light / Render TOP で 3D 表示

関連オペレータ 🔗

類似機能OP 🔍

  • Trace SOP — 画像から塗りつぶし点群ではなく輪郭シェイプのみを抽出する SOP (Raster は全画素、Trace は輪郭のみ)
  • Particle SOP — ポイント群をパーティクルとして扱い物理シミュレーションを掛けるための SOP (Raster で生成した点群の後段で利用)

組み合わせ推奨OP 🔄

  • Laser CHOP — Raster の出力点群を X / Y / blanking 信号に変換し、レーザーディスプレイ / オシロスコープへ送信する後段 CHOP
  • Transform SOP — 生成された点群に 3D 空間内のスケール / 回転 / 移動を適用
  • Convert SOP — 点群を別ジオメトリタイプ (ポリゴン / NURBS 等) に変換して下流処理と互換させる
  • Sort SOP — Raster が出力する点群の順序を別軸 (X / Y / Z / ランダム) で並べ替え

前処理・後処理SOP 🎯


Info CHOP情報 📊

Raster 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 — プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: cook_time — 直近のクック所要時間 (ミリ秒、Immediate モード時は GPU 待ち時間も含む)
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号
  • cooked_this_frame: cooked_this_frame — 当該フレームでクックされた場合は 1

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

よくある問題と解決策 🔧

❌ Problem: 出力ポイント数が多すぎてフレームレートが落ちる
✅ Solution:

  • 前段に Resolution TOP を入れて入力画像の解像度を下げる (例: 1920 × 1080 → 256 × 256 で約 32 倍の軽量化)
  • Threshold TOP / Edge TOP で表示すべき画素のみを残し、輝度の低い領域を黒で塗りつぶしてから渡す
  • Download TypeNext frame (Fast) に切替えて GPU → CPU 転送によるレンダリングストールを回避

❌ Problem: レーザーやオシロスコープで画像が歪む / 崩れる
✅ Solution:

  • DirectionHorizontalVertical で切替え、表示装置の掃引方向と一致させる
  • Laser CHOP 側で blanking 信号 (Z 軸) を有効化し、描画外区間のミラー移動を消す
  • Monochrome TOP / Edge TOP で輝度を 1 チャンネル化・輪郭のみ抽出してミラー追従負荷を下げる

❌ Problem: 結果が 1 フレーム遅延して入力画像と同期しない
✅ Solution:

  • Download TypeImmediate (Slow) に切替えて同フレーム内で結果取得
  • リアルタイム同期が必須な場合は前段 Resolution TOP で解像度を下げて Immediate モードのコストを最小化
  • 後段 Laser CHOP / Audio Device Out CHOP のバッファサイズも確認し、出力経路側の遅延要因を除外

❌ Problem: 出力点群が期待通りに 3D 空間に配置されない
✅ Solution:

  • Raster SOP の出力は基本的に 2D 画像平面 (X-Y) 上に等間隔配置されるため、3D 配置には後段の Transform SOP でスケール / 回転 / 移動を適用
  • Geometry COMP 側の Transform でも全体の位置 / 回転 / スケールを調整可能
  • SOP to DAT で点群の実座標値を確認しデバッグ (画像座標と 3D 座標の対応関係を検証)

参考資料 📚

その他 🔗

公式リソース 📖

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