QuarkPhysics is a 2D physics engine designed for games. Its goal is to provide a reasonable approach to simulate rigid bodies, soft bodies, and different physics models together.
-
General Features
- Primitive shape types (circle, polygon, rectangle, etc.)
- Physical properties (mass, area, restitution, etc.)
- The API is designed specifically for 2D video games.
- Raycasting
- Collision layer masks for advanced collision filtering
- SAP for broadphase
- Supports sleeping islands to improve CPU performance.
- Flexible and advanced event system.
- It uses pixels directly as a unit without any abstractions.
- Unlimited shape-mesh support for bodies.
- Simple and consistent API
- External .qmesh file support. There is also QMeshEditor app for create/edit/manage qmesh files.
-
Rigid bodies
- Convex polygons support.
- Joints to connect bodies.
- Reasonable stability for stacked objects.
- Kinematic bodies for creating controllable physics objects.
- Area bodies for detecting and reporting collisions.
-
Soft Bodies
- Springs to connect particles.
- Mass-spring model.
- Area-volume preserving model.
- Shape matching features.
- Self collisions.
- PBD dynamics.
- Internal springs and internal particles for adding more complexity to soft body simulations.
- Customizable constraints for adding more control to simulations.
- Advanced particle methods.
You need to install SFML and CMake on your system before.
Download project, enter the main folder, and call this:
./build.sh -r
Or you can compile the project directly via gcc if you're on linux by calling this:
./run_linux_fast.sh -r
Copy the "QuarkPhysics" named subfolder in the main folder to your project and use it.
- nlohmann's json for the json parsing. (Importing meshes via *.qmesh files)
- SFML library for window,input,opengl.
- Doxygen-Awsome for the custom themed documentation.
1.0API revisions(v0.9x)Optimizations( v0.9x)
- 1.1
UV support to QMesh(v1.0.x)- Fluid dynamics
- 1.2
- Destructable rigid bodies.
- 1.3
- Continuous collision dedection (CCD)
- Multithreading