Frequently Asked Questions
From Physics Simulation Wiki
Frequently Asked Questions (FAQ)
Can Bullet be used commercially?
Yes. Bullet is free for commercial use and 100% open source. Please post on the forum if you use it.
Does it inter-operate or compete with ODE?
It inter-operates. ODE can benefit from the collision detection features like GJK convex primitives and persistent manifold. Bullet can benefit from ODE, it can use the lcp solver, and from the ODE user community for its feedback.
Does it compete with Havok, Novodex, Meqon, Solid?
No. Bullet is primarily meant for sharing knowledge and experience amongst self-sufficient physics developers and enthusiasts. Commercial libraries are preferable if you want professional support and platform specific optimizations.
Can I contribute?
Yes, see Contributing.
Where does the software come from?
Author, Erwin Coumans, was previous Havok and Blender employee and the software is developed during spare time using public resources.
- Math classes are used with permission from Gino van den Bergen.
- Parts of the GJK simplex solver are from Christer Ericson's Realtime Collision Detection book.
- Physics framework developed for Blender.
- An iterative solver is taken from ODE.
- Screwing motion for algebraic time of impact from Stephane Redon.
What units should I use?
The most common units people use are:
- Measure length in meters.
- Measure time in seconds.
- Measure mass in kilograms.
- Measure force in newtons.
The long answer is "SI units".
The longer answer is that furlongs per fortnight per hour is a perfectly meaningful representation of accelleration, but trying to actually use it is just a universe of pain. Stick to SI units.
Bullet just works with numbers so in principle you can use any units you want. If you do deviate from these units you need to be aware that there are interdependencies between e.g. lengths and torques so you should know a bit about mechanics in general before proceeding. See Scaling The World.
Can Bullet simulate 2D worlds as well as 3D worlds?
Yes, by constraining 3D motion to the 2D plane in question. See Code Snippets.