TouchDesignerのBullet Solverでピンポンゲーム
概要
TouchDesignerの Bullet Solver を使って、ピンポンゲームを作りました。下の円盤を動かして、ボールを打ち返すシンプルなゲームです。
Bullet Solver COMP と Bullet Solver CHOP
TouchDesignerで物理演算をする場合、Bullet Solver COMP と Bullet Solver CHOP の2つがあります。
Bullet Solver COMP はシミュレーション本体で、 Actor COMP(剛体オブジェクト)を配置して重力や反発係数を設定すると、毎フレーム物理計算を行い、各 Actor のトランスフォームを自動で更新してくれます。
Bullet Solver CHOP で状態を参照することができ、各アクターの位置・速度・衝突情報などが取得できます。
衝突判定の実装
Collision Info チャンネルを使う
Bullet Solver CHOP には colliding や colliding_actor_id といった衝突の情報が用意されています。取得には2つの設定が必要で、Bullet Solver COMP の「Perform Contact Test」をオンにしたうえで、Bullet Solver CHOP の「Collision Info」もオンにする必要があります。
有効にすると、Bullet Solver CHOP の出力は以下のようなチャンネルを持ちます。

actor_id の取得
衝突相手を特定するには colliding_actor_id と各アクターの actor_id を照合します。actor_id はop('pad').idのように記述して取得できます。

衝突時に円盤を光らせる
colliding チャンネルが 1 になったタイミングで、円盤マテリアルのemitをアニメーションさせて光らせています。
レトロ演出

Cache TOP の Step Size を設定してわざとフレームレートを落とすことで、古いゲームっぽいカクつき感が生まれます。
