
概要 📖 – 物理シミュレーション結果の出力
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 チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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
- Bullet Solver COMP に複数の Actor を配置し物理シミュレーションを構築
- Bullet Solver CHOP の
compに Bullet Solver COMP を参照 - Translation と Rotation を有効化、Transform Space を World に設定
- 出力チャンネルを Geometry COMP の trans / rot にエクスポートして可視化
Example 2: 衝突イベントによるサウンドトリガー 🔔
Bullet Solver COMP → Bullet Solver CHOP (Collision Info) → Trigger CHOP → Audio File In CHOP
- Bullet Solver COMP 側で
Perform Contact Testを有効化 - Bullet Solver CHOP の Collision Info をオンにして
colliding/total_collisionsを取得 - 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 CHOP —
colliding立ち上がりからイベントを発火 - Filter CHOP — 出力トランスフォームの平滑化
- Select CHOP — 特定 Actor のチャンネルだけ抜き出して下流処理
- Logic CHOP — 衝突情報を条件式に組み込む
前処理・後処理CHOP 🎯
- 前処理: Null CHOP
- 後処理: Math CHOP、Filter CHOP、Select CHOP、Trigger CHOP
Info CHOP情報 📊
Bullet Solver CHOP は Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_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 を下げて高周波成分を抑制
- シミュレーション側のサブステップ数や質量・摩擦パラメータを再検討
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

