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

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

Bullet Solver CHOP の物理シミュレーション出力を示す図

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

概要 📖 – 物理シミュレーション結果の出力

Bullet Solver CHOPは、Bullet Solver COMP / Actor COMP のシミュレーション結果を Translation・Rotation・速度・衝突情報として出力する CHOPです。出力チャンネルは参照先 COMP 内のすべての Actor、もしくは指定した単一の Actor について生成され、Transform Space で座標系を切り替えできます。

主な用途 🎯

  • Bullet Solver COMP の剛体シミュレーション結果をチャンネル化
  • Actor COMP 単体の Translation / Rotation / Scale 取得
  • 衝突発生イベントとコリジョン相手のトラッキング
  • Linear Velocity / Angular Velocity による速度ベースの演出制御
  • World / Bullet Solver / Actor 各座標空間でのトランスフォーム取得

データフロー 🔄

入力: Bullet Solver COMP / Actor COMP の物理シミュレーション

Transform Space に応じた座標変換

出力: 各 Actor の trans/rot/scale/velocity/collision チャンネル

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

General Page 📋

Solver / Actor 参照 .comp 🔗

シミュレーション出力対象となる COMP の参照先指定:

  • Solver or Actor COMP: comp — Bullet Solver COMP を参照するとその配下のすべての Actor の結果を出力。Actor COMP を直接参照すると、その単一 Actor のみのチャンネルを出力

Transform Space .xformspace 🌐

出力するトランスフォーム値の基準座標系を選択するメニューパラメータ

項目 内部名 説明
World .world 出力トランスフォームをワールド座標系で表現
Bullet Solver .bulletsolver Bullet Solver COMP に対する相対トランスフォームを出力
Actor .actor Actor COMP に対する相対トランスフォームを出力

出力チャンネル選択 .channels 📡

Collision Info .collisioninfo 💥
colliding / colliding_actor_id / colliding_body_id / total_collisions の 4 チャンネルを CHOP に追加
– 利用には Bullet Solver COMP 側で Perform Contact Test が有効になっている必要がある

Translation .trans 📐
– 各 Actor の位置(tx, ty, tz)チャンネルを CHOP に追加

Rotation .rot 🔄
– 各 Actor の回転(rx, ry, rz)チャンネルを CHOP に追加

Scale .scale 📏
– 各 Actor のスケール(sx, sy, sz)チャンネルを CHOP に追加

Linear Velocity .linvel ➡️
– 各 Actor の線形速度チャンネルを CHOP に追加(並進方向の速度ベクトル)

Angular Velocity .angvel 🌀
– 各 Actor の角速度チャンネルを CHOP に追加(回転方向の速度ベクトル)

Sample Rate .rate
– 出力 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: 剛体オブジェクトのトランスフォーム取り出し 📦

Bullet Solver COMP → Bullet Solver CHOP (Translation+Rotation, World) → Geometry COMP
  1. Bullet Solver COMP に複数の Actor を配置し物理シミュレーションを構築
  2. Bullet Solver CHOP の comp に Bullet Solver COMP を参照
  3. Translation と Rotation を有効化、Transform Space を World に設定
  4. 出力チャンネルを Geometry COMP の trans / rot にエクスポートして可視化

Example 2: 衝突イベントによるサウンドトリガー 🔔

Bullet Solver COMP → Bullet Solver CHOP (Collision Info) → Trigger CHOP → Audio File In CHOP
  1. Bullet Solver COMP 側で Perform Contact Test を有効化
  2. Bullet Solver CHOP の Collision Info をオンにして colliding / total_collisions を取得
  3. Trigger CHOP で colliding の立ち上がりを検出してサウンド再生のトリガーに使用

Example 3: Actor 単体の速度ベース演出 💨

Actor COMP → Bullet Solver CHOP (Linear Velocity, Actor space) → Math CHOP → ビジュアル制御
  • Bullet Solver CHOP の comp に Actor COMP を参照
  • Linear Velocity / Angular Velocity を有効化、Transform Space を Actor に設定
  • Math CHOP で速度の大きさを正規化し、エフェクトのパラメータ駆動に活用

関連オペレータ 🔗

類似機能OP 🔍

  • Info CHOP — CHOP 自体のメタ情報取得

組み合わせ推奨OP 🔄

  • Math CHOP — 速度・トランスフォームの正規化やスケーリング
  • Trigger CHOPcolliding 立ち上がりからイベントを発火
  • Filter CHOP — 出力トランスフォームの平滑化
  • Select CHOP — 特定 Actor のチャンネルだけ抜き出して下流処理
  • Logic CHOP — 衝突情報を条件式に組み込む

前処理・後処理CHOP 🎯


Info CHOP情報 📊

Bullet Solver 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:

  • Bullet Solver COMP の Perform Contact Test を有効化
  • Collision Info パラメータがオンになっているか再確認
  • Bullet Solver COMP / Actor COMP の参照パスが正しいか comp パラメータを確認

❌ Problem: 出力トランスフォームの座標系が想定と違う
✅ Solution:

  • Transform Space を World / Bullet Solver / Actor から正しい基準系に切り替え
  • Actor COMP を直接参照する場合と Bullet Solver COMP を参照する場合で出力 Actor 範囲が変わる点を確認
  • 後段でMath CHOPを使い必要な座標変換を追加

❌ Problem: 出力チャンネルが揺れて細かく振動する
✅ Solution:

  • 後段でFilter CHOPを入れて平滑化
  • Sample Rate を下げて高周波成分を抑制
  • シミュレーション側のサブステップ数や質量・摩擦パラメータを再検討

参考資料 📚

その他 🔗

公式リソース 📖

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