153 lines
3.9 KiB
Markdown
153 lines
3.9 KiB
Markdown
## Bounce
|
|
|
|
**Welcome! Bounce is a 3D physics engine for games.**
|
|
|
|
Feel free to ask questions, give feedback and suggestions using the issue tracker.
|
|
|
|
## License
|
|
|
|
Bounce is released under the [zlib license](https://en.wikipedia.org/wiki/Zlib_License). Please recognize this software in the product documentation if possible.
|
|
|
|
## Building
|
|
|
|
Bounce uses [premake](https://premake.github.io/) for generating project files in a platform agnostic manner. [premake](https://premake.github.io/) is available at https://premake.github.io/.
|
|
|
|
* Put premake into bounce/.
|
|
|
|
### Visual Studio 2017
|
|
|
|
* Ensure you have installed the Visual Studio 2015 libraries.
|
|
* Say { premake5 vs2017 } on a command line.
|
|
* Open build/vs2017/bounce.sln.
|
|
* Set testbed as the startup project.
|
|
* In the testbed debugging properties, set the Working Directory to ..\\..\examples\testbed.
|
|
* Press F5 to run.
|
|
|
|
### Linux
|
|
|
|
* On a clean Ubuntu 16.04 install these packages first:
|
|
|
|
* mesa-common-dev
|
|
|
|
* libgl1-mesa-dev
|
|
|
|
* libglu1-mesa-dev
|
|
|
|
#### x32
|
|
|
|
* Say { premake5 gmake } on a terminal.
|
|
* From build/gmake say { make config="debug_x32" }.
|
|
* Set the testbed directory as the working directory.
|
|
* Open testbed from /bin/x32/testbed/.
|
|
|
|
#### x64
|
|
|
|
* Say { premake5 gmake } on a terminal.
|
|
* From build/gmake say { make config="debug_x64" }.
|
|
* Set the testbed directory as the working directory.
|
|
* Open testbed from /bin/x64/testbed/.
|
|
|
|
### Mac
|
|
|
|
I don't run Mac currently and therefore can't test the build system in this platform.
|
|
|
|
## Documentation
|
|
|
|
* [Quickstart Guide](https://github.com/irlanrobson/bounce/blob/master/doc/quickstart_guide.docx)
|
|
|
|
### Doxygen
|
|
|
|
* Grab [Doxygen](http://www.doxygen.org) from http://www.doxygen.org.
|
|
* Say the following on the command line: doxygen doxyfile.
|
|
* Open doc/api/html/index.html.
|
|
|
|
User manual is a work in progress. Meanwhile, code comments and examples are the best way to learn how to use
|
|
Bounce. For examples, you can use the project testbed. testbed is a collection of visual tests and examples that can support the development of the library. As you would imagine, this application is not part of the library.
|
|
|
|
## Contributing
|
|
|
|
Please do not open pull requests with bugfixes or new features that require large changes. Open an issue first for discussion.
|
|
|
|
## Dependencies
|
|
|
|
* [Triangle](http://www.cs.cmu.edu/~quake/triangle.html)
|
|
|
|
Below are the external dependencies for testbed. If you don't care about testbed, then you don't need these dependencies.
|
|
|
|
* [GLFW](https://www.glfw.org/)
|
|
* [GLAD](https://glad.dav1d.de/)
|
|
* [imgui](https://github.com/ocornut/imgui)
|
|
* [RapidJSON](http://rapidjson.org/index.html)
|
|
|
|
## 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
|
|
|
|
### Quickhull
|
|
|
|
* Robust 3D convex hull creation and simplification
|
|
|
|
### Collision
|
|
|
|
* Dynamic tree broadphase
|
|
* Static tree "midphase"
|
|
* SAT
|
|
* GJK
|
|
* Spheres, capsules, convex hulls, triangle meshes
|
|
* Optimized pair management
|
|
|
|
### Dynamics
|
|
|
|
* Rigid bodies
|
|
* Contact, friction, restitution
|
|
* Mouse, spring, sphere, cone, revolute joint types
|
|
* Quaternion constraints
|
|
* 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
|
|
|
|
### Rope
|
|
|
|
* Rope
|
|
* Linear time solver
|
|
|
|
### Cloth
|
|
|
|
* Cloth
|
|
* Vertex contact, friction
|
|
* Strech, shear, spring, mouse force types
|
|
* Linear time solver
|
|
* Unconditional simulation stability
|
|
* Ray-casting
|
|
|
|
### Soft Body
|
|
|
|
* Soft body
|
|
* Vertex contact, friction
|
|
* Elasticity, plasticity
|
|
* Linear time solver
|
|
* Unconditional simulation stability
|
|
* Ray-casting
|
|
|
|
### Testbed
|
|
|
|
* OpenGL with GLFW and GLAD
|
|
* UI by imgui
|
|
* Mouse picking
|
|
* premake build system
|
|
|
|
### Documentation
|
|
|
|
* Doxygen API documentation</li>
|