| Q&A |
Bullet
Physics,
Erwin Coumans
March 2010, |
| |
 |
“
We are working towards general data parallel optimizations,
both for OpenCL and Direct Compute.
Performance gains vary, in some cases the GPU can be
up to 10 times faster.”
<Bullet
Physics used in 2012, ©Columbia pictures |
|
| |
|
| Q1 |
According
to a survey published in Game Developers Magazine, Bullet is
a popular Physic engine among games developers (3rd engine after
PhysX and Havok). According to you, what are the key features
that make developers preferring Bullet? |
| A1 |
The
key features are
1) Bullet is fully open source under a permissive license (Zlib
license)
2) Bullet is free for commercial use for any purpose, no strings
attached
3) Bullet C++ code can be fully customized, optimized and extended
as you like
4) Bullet has been used in several well-known games and movies
5) Bullet performs well, it has good stability and is under
active development |
| |
|
| Q2 |
What
is the license of Bullet? Does it offer more flexibility than
its competitors? |
| A2 |
Bullet's
Zlib license is very permissive, you can freely use it in commercial
projects. Zlib is similar to MIT and BSD license, you are not
even required to mention if you use Bullet.
This license is much better than Havok and PhysX. Both of them
don't provide full source code (for example Havok practically
never provides the most interesting parts of their source code,
such as the innerloop of the constraint solver or the GSK/EPA
collision detection code). Those proprietary licenses encourage
vendor lock-in. Both Havok and PhysX also typically have logo
display requirements,
unlike Bullet. |
| |
|
| Q3 |
Cinema4D,
Blender, Maya, Lightwave Core can use Bullet. Is it important
that physics attributes are defined in the DCC software? What
is the best workflow? |
| A3 |
More
complex setup such as ragdoll limits can be easier setup in
a DCC tool. Most game developers use an authoring tool with
Bullet support. From the authoring tool you can save collision/physics
data using the .bullet file format, or your own. |
| |
|
| Q4 |
Havok
is popular because of it's integration in 3ds max. Do you plan
to add a better support of 3ds max and Softimage? |
| A4 |
We
plan on providing an open source 3ds max plugin. Note that several
game developers already wrote their own max plugin for Bullet. |
| |
|
| Q5 |
Collada
is trying to standardize the export of physics data from a DCC
tool. Does it really work? Have you heard of developers that
successfully base their workflow on Collada for physics data? |
| A5 |
The
idea behind COLLADA is great, but there are still no decent
DCC plugins. Lack of a stable standard import/export library
means that everyone writes their own, causing many incompatibilities.
We recently switched to the binary .bullet format
for better compatibility. The chunk-based .bullet format is
loosely based on EA IFF 85, like AIFF, TIFF and the Blender
.blend format. The exporter/import is very compact and build
into the Bullet SDK, and deals with all platform conversions
and forward/backward compatibility.
|
| |
|
| Q6 |
What
do you think of projects such as PAL (Physics Abstraction Layer)? |
| A6 |
An
abstraction layer might be handy at the start of a new project,
when evaluating several physics engines. But during full production
using a native API is better. You might want to optimize, extend
the library, use its unique features, file formats etc. |
| |
|
| Q7 |
Computing
physics algorithms consumes a lot of resources. Bullet is one
of the first physic engine to take advantage of OpenCL. Why
OpenCL? What kind of performance gains can user expect? |
| A7 |
We
are working towards general data parallel optimizations, both
for OpenCL and Direct Compute.
Performance gains vary, in some cases the GPU can be up to 10
times faster. |
| |
|
| Q8 |
There
have been rumors about nVidia PhysX multicore support. AMD is
claiming that PhysX does not take advantage of multicore architecture.
What are the capabilities of Bullet in the field of multicore? |
| A8 |
Bullet
already can process narrowphase collision detection in parallel.
We have a MiniCL wrapper that can process OpenCL kernels on
multi-core CPUs, so all OpenCL optimizations also apply for
multi-code CPU. |
| |
|
| Q9 |
Are
physics engines used for serious games, science visualization
and simulation? Do physic engines such as Bullet offer sufficient
precision models to be used in non-game applications? |
| A9 |
The
precision is not good enough for scientific simulation. Bullet
is used for medical training etc but it should not be used for
anything risky.
The approximations are generally good enough for games and special
effects in film. |
| |
|
| Q10 |
DCC
softwares use more and more physics in Special Effects for particles,
mesh deformations (Softimage ICe, Houdini). Do you think that
physic engines will be able to handle more FX in games? |
| A10 |
Bullet
has been extensively used for special effects in films, such
as 2012, Hancock, Sherlock Holmes etc.
Many Hollywood studios have integrated Bullet rigid body simulation
in their pipeline. Physics engines will also be able to handle
more FX in games, with fracture, cloth, sph fluid simulation,
particle effects etc. |
| |
|
| Q11 |
Can
iphone games take advantage of Bullet engine? |
| A11 |
Yes,
Bullet was the first 3D physics engine available for iPhone.
The open source SIO2 and Oolong Engine for iPhone use Bullet. |
| |
|
| Q12 |
What
would be the next milestones for physics engine and Bullet? |
| A12 |
Bullet
3.x is the next milestone, with OpenCL and Direct Compute support.
Other milestones include improved authoring tools support including
a visual debugger/standalone physics editor. |
| |
|
| Q13 |
You
work at Sony. Do they think of Bullet, do they project to use
more and more Bullet for PS3 games? |
| A13 |
Sony
lets us work on optimized versions of Bullet for various PlayStation
platforms.
Also Sony provides support for those PlayStation optimized versions.
It is up to the individual game team to select the physics engine.
So we just have to keep on improving Bullet to stay attractive
for game developers. |
| |
|