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

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

Laser CHOP がジオメトリからレーザー走査用の点列を生成する図

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

概要 📖 – SOP / CHOP / POP からレーザー描画用ストリーム生成

Laser CHOPは、SOP / CHOP / POP のジオメトリをレーザー描画用の x, y, r, g, b 点列に変換する CHOPです。Step Size と Corner Hold で走査品質を調整し、Output Sample Rate(既定 48000sps)でレーザー DAC に同期したサンプルを出力します。

主な用途 🎯

  • SOP / CHOP / POP のジオメトリをレーザー走査用の x, y, r, g, b 点列に変換
  • Step Size / Blanking Step Size による走査速度・空走区間の制御
  • Corner Hold(最小・最大)で角の鋭さを保つホールド時間の自動算出
  • Pre / Post Blanking Delay と Color Delay によるレーザー機器の応答補正
  • Output Sample Rate(既定 48000sps)でレーザー DAC の駆動レートに同期

データフロー 🔄

入力: SOP / CHOP / POP の点群

Source OP 選択(SOP / CHOP / POP)

Step Size / Blanking Step Size でサンプル化

Corner Hold(Min / Max)で角を保持

Color Scale と Pre/Post Blanking Delay

出力: x, y, r, g, b の時系列サンプル(Output Sample Rate)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Laser Page 📋

Active .active 🔌

Laser CHOP の有効化スイッチ:

  • Active: オフのときは全チャンネルをゼロ出力にする

Source OP .source 🎛️

レーザー描画のソースオペレータ種別

項目 内部名 説明
SOP .sop SOP の position / color アトリビュートをソースに使用
CHOP .chop CHOP の x, y チャンネル(任意で z, r, g, b, id)を点列としてサンプル
POP .pop POP の position / color アトリビュートをソースに使用

ソース OP パス .sourcepaths 📥

Source OP メニューに対応した SOP / CHOP / POP のパス入力

SOP .sop 🎯
– 参照する SOP のパス
– position と color、LasCorner 等のアトリビュートからレーザー点列を生成

CHOP .chop 🎚️
– 参照する CHOP のパス
– 必須チャンネル: x, y。任意: z, r, g, b, id(id でシェイプを区切る)
– 任意の追加色チャンネル(RGB 以外のレーザー出力対応)と lascorner / lascornerholdadd / lascornerholdlookupfactor を認識

POP .pop 🎯
– 参照する POP のパス
– position と color、LasCorner 等のアトリビュートからレーザー点列を生成

出力レートとトランスフォーム .outputrate ⚙️

出力サンプルレートと座標トランスフォーム

Output Sample Rate .outputrate ⚙️
– Laser CHOP の出力サンプルレート(レーザー DAC への送信レート)
– 既定 48000 sps、60fps では 1 フレームあたり 800 点を出力可能

Swap Output .swap 🔄
– 出力の x 軸と y 軸を入れ替える

X Scale .xscale 📏
– 出力の水平方向スケール

Y Scale .yscale 📏
– 出力の垂直方向スケール

Rotate .rotate 🔄
– 出力の回転量

Camera .camera 🎥
– SOP をカメラ視点で描画する場合に参照する Camera COMP のパス

Update Method .updatemethod 🔁

ソースから新しいサンプルを取得するタイミングの制御。1 フレームで描画しきれない高密度入力で挙動が変わる

項目 内部名 説明
When All Points Drawn .alldrawn 前フレームのすべての点を描画し終えたタイミングでソースから新しいサンプルを取り込む(既定)
Every Frame .everyframe 前フレームの描画完了を待たず毎フレーム入力を更新する(描画途中でも値を入れ替える)

デバッグ・フレームマーカー .debug 📋

フレーム先頭のパルスとデバッグ用ステートチャンネルの追加

Frame Start Pulse .startpulse 📋
– フレーム先頭に全カラー -1 のサンプルを 1 つ挿入する
– 受信側でフレーム境界を検出する用途

Debug Channel .debugchan 📋
– 各サンプルの状態を 1 ch 追加する(-1: Frame Start Pulse / 0: Color / 1: Corner Hold Point / 2: Start Point Hold Time / 3: Pre Blank On / 4: Post Blank On / 5: Blanking / 6: Pre Blank Off / 7: Post Blank Off)

コーナー検出アトリビュート名 .cornerattrs 🎛️

SOP / POP 入力時に使用するコーナー検出系のポイントアトリビュート名のオーバーライド

Corner Attribute Name .cornerattr 🎛️
– 角点を示すポイントアトリビュート名(既定 LasCorner

Corner Hold Add Attribute Name .cornerholdaddattr 🎛️
– 角点ホールド時間に加算する定数のアトリビュート名(既定 LasCornerHoldAdd

Corner Hold Factor Attribute Name .cornerholdfactorattr 🎛️
– 角点ホールドのルックアップ係数に使うアトリビュート名(既定 LasCornerHoldLookupFactor


Scanning Page 📐

Step Size .stepsize 📏

走査時の 1 サンプルあたりの移動量(描画中・空走中それぞれ)

Step Size .stepsize 📏
– 色を出力中(描画中)に x, y が 1 サンプルで移動できる距離
– 小さい値ほど線が滑らかになるが、1 フレームで描ける長さは短くなる

Blanking Step Size .bstepsize 📏
– 色を出力していないとき(空走中)に x, y が 1 サンプルで移動できる距離
– 通常は描画中より大きく取り、空走時間を短縮

Corner Hold .cornerhold 📐

角点でレーザーを停止させるホールド時間。前点・自点・次点の角度から線形補間して算出

Minimum Corner Hold .mincornerhold 📐
– 角度 180 度(直線)の点に適用される最小ホールド時間
– 直線上では実質ホールドしない値を設定

Maximum Corner Hold .maxcornerhold 📐
– 角度 0 度(鋭角)の点に適用される最大ホールド時間
– 最大値が最小値より小さい場合は最小値まで自動的に切り上げ

Corner Hold Lookup CHOP .cornerholdchop 🎚️
– min から max への補間に使うルックアップカーブの CHOP 参照
– 未指定のときは線形補間

Closed Shape Overlap .closedoverlap 🔁
– 閉じた形状の始点・終点を重ねるサンプル数(ms 指定)
– 色補間で形状の継ぎ目を均一化


Color Page 🎨

Color Scale .colorscale 🎨

出力カラーの強度スケーリング

Red Scale .redscale 🎨
– 赤チャンネルの強度スケール

Green Scale .greenscale 🎨
– 緑チャンネルの強度スケール

Blue Scale .bluescale 🎨
– 青チャンネルの強度スケール

Blanking Delay .blankingdelay ⚙️

色出力 ON / OFF 切り替え前後の待機時間(ms)。レーザー機器の応答遅延を補正する

Pre Blanking On Delay .preblankon ⚙️
– 色を OFF にする前にその位置で待機する時間(ms)

Post Blanking On Delay .postblankon ⚙️
– 色を OFF にした後にその位置で待機する時間(ms)

Pre Blanking Off Delay .preblankoff ⚙️
– 色を ON にする前にその位置で待機する時間(ms)

Post Blanking Off Delay .postblankoff ⚙️
– 色を ON にした後にその位置で待機する時間(ms)

タイミングと補間 .timing 🎚️

フレーム先頭の待機・色チャンネルの遅延・補間と輝度ルックアップ

Start-Point Hold Time .starthold 🎚️
– 新しいデータフレームの先頭点で待機する時間(ms)

Color Delay .colordelay 🎚️
– 出力カラーチャンネルの遅延量(ms)

Interpolate Colors .interpcolors 🔄
– 点と点の間でカラーを補間する

Brightness Curve Lookup CHOP .brightnesscurvechop 🎚️
– 閉じた形状のソフトエッジブレンドに使うルックアップカーブの CHOP 参照


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: SOP のラインジオメトリをレーザー描画ストリームに変換 🎯

Line SOP → Laser CHOP (Source OP: SOP) → Laser Device CHOP
  1. 描画したいラインを Line SOP で構築
  2. Laser CHOP の Source OP を「SOP」、SOP パスに上記 SOP を指定
  3. Step Size を小さく、Blanking Step Size を大きめに設定して走査効率を確保
  4. 出力を Laser Device CHOP に渡してレーザー機器に送信

Example 2: 音声波形を CHOP 経由でレーザー描画 🎵

Audio Device In CHOP → Math CHOP (x, y チャンネル化) → Laser CHOP (Source OP: CHOP) → Laser Device CHOP
  1. Audio Device In CHOP で音声入力を取得
  2. Math CHOP で振幅を [-1, 1] にスケーリングし、時間軸の x チャンネルと振幅の y チャンネルを構築
  3. Laser CHOP の Source OP を「CHOP」、CHOP パスに上記 Math CHOP を指定
  4. Output Sample Rate をレーザー DAC の駆動レート(例: 30000 / 48000sps)に合わせる
  5. Color Scale で発色強度を調整、Pre/Post Blanking Delay で機器応答に合わせて補正

Example 3: 閉形状の継ぎ目をなめらかに 🔁

Circle SOP → Laser CHOP (Closed Shape Overlap) → Laser Device CHOP
  1. 閉じた形状を Circle SOP / Sort SOP で用意
  2. Laser CHOP の Source OP を「SOP」に設定
  3. Closed Shape Overlap を 1〜3 ms 程度から開始し、継ぎ目の段差が消えるまで微調整
  4. Interpolate Colors を ON にして始点・終点のカラー補間で輝度差を均一化

関連オペレータ 🔗

類似機能OP 🔍

  • Laser Device CHOP — Laser CHOP の出力を EtherDream / Helios / ShowNET 等のレーザー機器に送信
  • DMX Out CHOP — ライティング機器用のシリアル出力(レーザーではなく一般照明制御)

組み合わせ推奨OP 🔄

  • Laser Device CHOP — Laser CHOP の x, y, r, g, b 出力をレーザー機器に送信
  • Math CHOP — x, y, r, g, b の値域を [-1, 1] や [0, 1] に正規化
  • Filter CHOP — ジッタの多い入力を平滑化してから走査
  • Trail CHOP — レーザー軌跡のプレビュー・デバッグ表示
  • CHOP to TOP — レーザー走査内容を 2D テクスチャ化してプレビュー

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Laser 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:

  • 1 フレームで描画しきれない高密度入力が原因。Step Size を大きく / Blanking Step Size を大きくしてサンプル数を削減
  • Update Method を「Every Frame」に切り替えて毎フレーム入力を更新
  • Output Sample Rate を上げる(レーザー DAC の最大値まで)
  • 前段に Resample CHOP を入れて入力点数を削減

❌ Problem: 角がなまる / 鋭角が丸まって出る
✅ Solution:

  • Maximum Corner Hold を増やして鋭角点での停止時間を長くする
  • SOP / POP の角点に LasCorner アトリビュートを付けてマーキング(Corner Attribute Name で名前を変更可)
  • Corner Hold Lookup CHOP に min→max のカーブを与えて中間角度の挙動を調整

❌ Problem: 色のオン・オフ切り替えで端がぼやける / 残像が出る
✅ Solution:

  • Pre Blanking On Delay / Post Blanking On Delay を増やしてレーザーの立ち下がり遅延を補正
  • Pre Blanking Off Delay / Post Blanking Off Delay で立ち上がり側も同様に補正
  • Color Delay を機器仕様に合わせて調整(DAC とガルバノの応答差を吸収)

❌ Problem: 閉じた形状の継ぎ目に段差が見える
✅ Solution:

  • Closed Shape Overlap を 1〜数 ms に設定し始点・終点を重ねる
  • Interpolate Colors を ON にしてカラー補間
  • Brightness Curve Lookup CHOP でソフトエッジブレンドのカーブを与える

参考資料 📚

その他 🔗

公式リソース 📖

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