This is a quick demo showing the current physics engine that I’ve been working on.
YEA WASN’T THAT THE BEST SIX SECONDS OF YOUR LIFE? JUST LOOK AT THAT BOX GO WOOOOOOOOO! I know it may not have looked like much, but that was actually my very first real test of my physics engine. At this point the engine is pretty much “complete” and has all the main features implemented. All that really remains left for the engine is a lot of polishing and optimizations.
Similar to the previous demo, I just tilted the ground plane and dropped a stack of boxes on it to show how they tumble down the slop and come to rest in a plausible manner.
This is one of the test scenes that I’ve seen a lot of rigid body engines fail at. I haven’t quite finished tuning all my values for my engine yet but I can still handle a pyramid of boxes falling and remaining relatively stable still.
This is the dominos scene inspired by the Non-convex Rigid Bodies with Stacking paper. Although I have to admit I kind of cheated since this engine is using a constraint-based solver so there’s no need for a contact graph or shock propagation algorithm to specifically handle this case. I think it’s still cool to see my physics engine handling this scene.
This demo shows the catapult scene by dropping a heavy box onto a ramp that correctly launches the smaller and lighter box into the air. My collision response scheme correctly handles the differences in mass and friction between objects, creating the expected behavior of the smaller box being catapulted.
The goal of this engine was to remake my other physics engine to be robust and easier to maintain. As such, the engine itself is heavily componentized and easily supports swapping features in and out quickly.
A small overview of some of the algorithms I’ve used for this engine:
- Integrator: Semi-implicit Euler
- Collision Broad Phase: Bounding Volumes
- Collision Narrow Phase: GJK + EPA
- Collision Resolution: Constraint-based Sequential Impulses