Jitter Physics 2, the evolution of Jitter Physics, is an impulse-based dynamics engine with a semi-implicit Euler integrator. It is a fast, simple, and dependency-free engine written in C# with a clear and user-friendly API.
Run a small demo directly in the browser!
There is a tiny demo available for the Godot engine.
The official NuGet package can be found here.
See below for a fully-featured demo.
Jitter is cross-platform. The src
directory contains four projects:
Project | Description |
---|---|
Jitter2 | The main library housing Jitter2's functionalities. |
JitterDemo | Features demo scenes rendered with OpenGL, tested on Linux and Windows. |
JitterBenchmark | The setup for conducting benchmarks using BenchmarkDotNet. |
JitterTests | Unit tests utilizing NUnit. |
To run the demo scenes:
- Install .NET 8.0
git clone https://github.com/notgiven688/jitterphysics2.git
cd ./jitterphysics2/src/JitterDemo && dotnet run -c Release
JitterDemo uses GLFW for accessing OpenGL and managing windows, and cimgui for GUI rendering. The project contains these native binaries in a precompiled form. On Linux you may have to install GLFW, e.g. on Ubuntu sudo apt-get install libglfw3-dev
.
- Speculative contacts (avoiding the bullet-through-paper problem).
- A variety of constraints and motors (AngularMotor, BallSocket, ConeLimit, DistanceLimit, FixedAngle, HingeAngle, LinearMotor, PointOnLine, PointOnPlane, TwistAngle) with support for softness.
- A sophisticated deactivation scheme with minimal cost for inactive rigid bodies (scenes with 100k inactive bodies are easily achievable).
- Edge collision filter for internal edges of triangle meshes.
- Substepping for improved constraint and contact stability.
- Generic convex-convex collision detection using EPA-aided MPR.
- "One-shot" contact manifolds using auxiliary contacts for flat surface collisions.
- Efficient compound shapes.
- Easy integration of custom shapes. Integrated: Box, Capsule, Cone, Convex Hull, Point Cloud, Sphere, Triangle, Transformed.
- Soft-body dynamics!
Find the documentation here.
- Develop and distribute NuGet packages and releases.
- Stabilize the engine and demo.
- Expand the documentation to cover more topics and functionalities.
Contributions of all forms are welcome! Feel free to fork the project and create a pull request.