/Cirobb

A small 2D physics engine that explains the physics in videogames for educational use.

Primary LanguageCMIT LicenseMIT

♥️ Please help with a Star on Github ⭐

Cirobb V1.1.8

Cirobb is a 2D Rigid Body Physics Engine inspired by Box2D Lite that was created with the purpose of helping people who are starting in this wonderful world of physics for Videogames. The Engine uses the Erin Catto's Contact Persistence Algorithm and it's implementation of the PGS (Projected Gauss Seidel) solver to solve the MLCP very well known as a SI (Sequential Impulse).
it also has a very simple 2D Collision Detection to Calculate Contact Points, Normal Direction and Penetration.
The main Idea of this project is to explain in more detail how physics engines works,

If you want to make more complex simulations with many Constraints and Shapes. I recommend you use better Box2D which in my opinion I think it's the best 2D open source physics engine that exists.

Captures

img1 img3


Cirobb with Webassembly

Cirobb Engine V1.1.8 : https://jonpena.github.io/Cirobb-wasm

Demo Youtube Video

Cirobb Engine V1.1.4 : https://youtu.be/j2p6qmOVA7M

Future changes

Cirobb is a Physics Engine that is almost finished. Since the main idea is to create a simple introduction to 2D rigid body physics engines few modifications will be added to keep things Simple.

The Following Features will be added to the Cirobb Engine in the future:

  • Direct Solver to improve the convergence of the Velocity Solver.

  • The Distance Constraint. (Optional?)

  • Add Collision Detection against convex polygons.

  • Change Distance-Based Contact Points to Feature-Based Contact Points

Books and Resources to learn about physics engines

  • Erin Catto for his incredible slides and knowledges about Game Physics:

    • Iterative Dynamics with Temporal Coherence.

    • Modeling and Solving Constraints.

    • Soft Constraints.

    • Numerical_Methods.

    • Continuous Collision Detection.

    • Understanding Constraints.

  • Dirk Gregorius For his incredible slides about collision detection:

    • The Separating Axis test Between Convex Polyhedra.

    • Robust Contact Creation for physics Simulation.

  • Erwin Coumans For his slides and Physics Engine:

    • Forum Bullet.

    • Exploring MLCP Solvers And Featherstone.

  • Tonge Richard For his incredible Slides:

    • Iterative Rigid Body Solvers 2012.

    • Iterative Rigid Body Solvers 2013.

  • Brian Vincent Mirtich For introducing a different approach to Game Physics.

    • Impulse-based Dynamic Simulation of Rigid Body Systems.
  • Kenny Erleben : for his slides and thesis doctoral:

    • Book of Physics-Based Animation 2005.

    • Numerical Methods for Linear Complementarity Problems in Physics-based Animation.

  • David Baraff For his slides and Knowledges:

    • Analytical Methods for Dynamic Simulation of Non-penetrating Rigid Bodies.

    • Fast Contact Force Computation for Nonpenetrating Rigid Bodies.

    • Linear-Time Dynamics using Lagrange Multipliers.

    • Physically Based Modeling. Pixar Animation Studios.

  • Jim Van Verth For his Slides:

    • Numerical Integration.

    • Understanding Rotations.

  • Matthias Müller for his Slides About:

    • Position Based Dynamics.
  • Michael B. Cline for his Slides:

    • Post-Stabilization for Rigid Body Simulation with Contact and Constraints.
  • Randy Gaul for his Slide:

    • Separating Axis Test (SAT) and Support Points in 2D.
  • Books about Game Physics and Collision Detection :

    • Game Physics Pearls Gino van den Bergen and Dirk Gregorius.

    • Real-Time Collision Detection Christer Ericson.