The first version of Bounce has been pushed to the following git repository: https://github.com/irlanrobson/bounce. Bounce is a 3D physics engine for games and interactive applications and hopefully will be a fun project to work on.

# Category Archives: Physics

# Bounce Update

Here is a compilation of a few physics demos using Bounce physics engine. It’s possible to visualize in these demos state-of-the art solutions for rigid body dynamics for games and interactive applications. In particular large block solvers and one-shot persistent contact manifolds. The camera controls are the same as in Maya, and continuous collision is disabled.

# Distance Constraint Derivation

Sometimes it’s desired to have a distance constraint. That constraint assumes a choosen separation distance for two points fixed in two bodies. I’ve written a derivation for it in 3D and shared here. An implementation should be pretty simple since we have minimally one Jacobian and solve a 1D linear system. Here is an example which you can use in your own projects.

# Fast Segment-AABB Collision Detection

Let’s say we need to compute the intersection point and normal from a line segment to an axis-aligned bounding box (AABB) bounds, and we neither want to perform expensive plane computations nor keep the AABB boundaries as an intersection of 6 axis-aligned planes (as it is a waste of memory). A quick way to do that is by evaluating the slab plane equation for each axis-aligned plane of the AABB.

# Bounce Lite Update

I’ve added two joint types to Bounce Lite. Ball-in-socket, and revolute with angle limits. Bounce Lite is available at its repository: here. There is a video below showing how five revolute joints can be used to simulate a small ragdoll.

# Mouse Constraint Derivation

You can read here how to compute the mouse constraint Jacobian, which I think is the simplest constraint along with a distance constraint. It can be helpfull when you’re selecting geometries in the scene using the mouse world space position (as a joint anchor point), since there is lack of controlability by directly applying forces at a particular point of a rigid body shape.

Errata: There is a minus sign before the stabilization term. It should be:

Lambda = (J * M * J^T)-1 * (-J * V – Beta / TimeStep * C)

Note: You can bound excessive impulses to avoid excessive velocity changes.

Thanks to Dirk Gregorius of Valve for pointing those things out via e-mail.

# Bounce Lite Release

I’m happy for distributing Bounce Lite, a portable 3D physics engine for games:

https://github.com/irlanrobson/Bounce-Lite

Bounce Lite is available at its GitHub repository. It is the second physics engine that I (Irlan) have written and the first that is publically distributed.