本文へスキップ

TouchDesignerのBullet Solverでピンポンゲーム

2026.06
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 の出力は以下のようなチャンネルを持ちます。

Collision Infoを有効にしたBullet Solver CHOPの出力

actor_id の取得

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

Select CHOPのChannel Namesでactor_idを取得する

衝突時に円盤を光らせる

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

レトロ演出

Cache TOPのStep Size

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

TOPのコンポジット

参考