Bugfixes: Simplify and correct one derivation of a second derivative of energy function. Clear dynamic variables for static shapes Invalidate contact for a particle when its type switches from dynamic to static Improvements: Allow user to apply force to a particle Allow user to displace a particle Compute kinetic energy Store the mass of each particle, not only its inverse. It can improve performance because the solver needs the masses most of the time for computations Add some code to find shared and non-shared edges. These algorithms don't work for non-manifold meshes Remove some unecessary temporaries decreasing code readability
About
Bounce is a 3D physics engine for games.
To get started with Bounce see readme.txt.
Here is how to control the Testbed. The Testbed is a collection of non-unit tests and examples that helps the author debug features and is not part of the library.
Camera (as in Maya):
- Rotate the scene holding LSHIFT + LMB
- Translate the scene holding LSHIFT + RMB
- Zoom in/out the scene using LSHIFT + Mouse Wheel
Bounce is released under the zlib license.
Features
Common
- Efficient data structures with no use of STL
- Stack and small block allocators
- Built-in math library
- Tunable settings used across the entire library
Collision
- Dynamic tree broadphase
- Static tree "midphase"
- SAT
- GJK
- Spheres, capsules, hulls, triangle meshes
- Optimized pair management
Dynamics
- Contact, friction, restitution
- Mouse, spring, sphere, cone, revolute joint types
- Joint motors, limits
- Constraint graphs
- Simulation islands and sleep management
- Linear time solver
- Stable shape stacking
- One-shot contact manifolds
- Contact clustering, reduction, and persistence
- Contact callbacks: begin, pre-solve, post-solve
- Ray-casting and volume queries
Testbed
- OpenGL with GLFW and GLAD
- UI by imgui
- Mouse picking
- premake build system
Documentation
- Doxygen API documentation
Screenshots
Description
Languages
C
51.7%
C++
47.4%
Lua
0.6%
Makefile
0.3%