Bullet open source physics engine

Several of the top visual effects studios and game developers are now adopting the Bullet open source physics engine for collision detection and rigid body dynamics work. We talk exclusively to Bullet’s main author Erwin Coumans about the current implementation of the physics engine and its future development.

Bullet has certainly been used in some recent high profile films by major visual effects studios, who, says Coumans, often customize the code with their own in-house work and combine it with pre-fracturing tools. The physics engine was adapted by Digital Domain for the studio’s Los Angeles destruction effects in 2012, and by Framestore in its in-house fBounce tool for Sherlock Holmes. Weta Digital also integrated Bullet into its proprietary wmRigid software for rigid body simulation on The A-Team. Software companies, too, have now integrated Bullet into their applications. Cinema 4D uses it in MoDynamics and Houdini, 3ds Max, Carara, Blender and Maya also make use of the engine.

09Nov/2012/LAP210_1001
Bullet was used in 2012
09Nov/2012/LAP250_1050
Bullet is open source

According to Coumans, the significant adoption rate comes down to the fact that the cross-platform Bullet library is open source under the permissive ZLib license, unlike proprietary libraries such as Havok and PhysX. “Full access to the source code means that effects companies can fully customize the implementation,” notes Coumans. “Furthermore, Bullet has robust convex hull collision detection, unlike the Open Dynamics Engine. Convex hull collision detection is important when simulating fracturing objects.”

Coumans recently started at Advanced Micro Devices (AMD), having worked at Sony Computer Entertainment in R&D. “At AMD I will continue and expand the work I started at Sony on the open source Bullet physics library. My Open Physics team within AMD works on open standards for game and movie physics, in particular rigid body, soft body and cloth simulation,” says Coumans. “We try to provide low level re-usable components, so that developers can accelerate their in-house written physics engines. Aside from the open source version, there is an optimized and proprietary back-end for Sony PlayStation 3, and Sony continues to take care of this back-end called Physics Effects. The plan is to add additional optimized back-ends for XBox 360 and GPGPU through OpenCL and DirectX 11 DirectCompute.”

So how does Bullet work with collision detection pipelines? Here’s how Coumans summarizes it:

“The two main stages in most collision detection pipelines are the broadphase and the narrow phase. The broadphase stage reduces the total number of potential interacting objects, based on bounding volume overlap. In Bullet there are various broadphase implementations for different purposes. The most general purpose broadphase implementation is based on dynamic bounding volume hierarchies: axis aligned bounding box trees that are incrementally updated when moving, adding or removing objects. On the other hand there is a GPU accelerated broadphase through OpenCL, but this has certain restrictions on the object sizes.

The narrowphase stage deals with precise contact point generation between pairs of colliding objects. Bullet uses a few generic algorithms, google for GJK and EPA, that deal with a wide range of collision shape types. There is support for continuous collision detection that compute the time of impact between moving and rotating objects, but by default Bullet computes the closest distance and penetration depth at a discrete point in time, to generate contact point information.”

In terms of physics engine developments, including the use of physics processing units (PPUs), Coumans believes that a combination of CPU and GPU will continue to be developed. “NVIDIA abandoned their PhysX PPU and replaced it by GPU acceleration,” says Coumans. “There are many different ways to accelerate physics simulation, and GPUs are general purpose enough to accelerate simplified physics. In some cases the algorithms are more suitable for CPU due to branching and complexity, so a combination of CPU and GPU is more effective. In this perspective the upcoming Intel Sandy Bridge and AMD Fusion APUs are more promising: they combine the CPU and GPU on a single chip.”

The next release of Bullet (3.x) is planned for March this year at the Game Developers Conference in San Francisco. “Parts of the physics pipeline are accelerated through OpenCL and DirectX 11 DirectCompute,” says Coumans. “The current Bullet 2.77 version already provides such GPU acceleration for cloth simulation.”

Coumans thinks the biggest challenge with Bullet moving forward is allocating limited resources. “For example,” says Coumans “we need to choose between improving performance versus increasing quality. We don’t have enough resources to deal with all forum questions and processing all reported issues and patches. Furthermore the documentation is lacking and we need better authoring tools.”

Still, Bullet will remain an open source tool that, according to Coumans, hopefully prevents vendor lock-in for proprietary solutions. “Open source using permissive licenses such as Zlib, MIT or BSD is great for collaborations among industries and academia, and it helps innovation.”

To find out more about Bullet, go to http://bulletphysics.org

NOTE:
We had a few emails pointing out we excluded Softimage (by accident):
emails such as this:
“Bullet dynamics article mentions cararra using bullet but leaves out softimage there is plugin called momentum.”
Mike