bounce/readme.md
2019-06-29 18:59:15 -03:00

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>