20

I am trying to pick a physics engine for a simple software application. It would be to simulate a rather small number of objects so performance isn't a huge concern. I am mostly concerned with the accuracy of the motion involved. I would also like the engine to be cross-platform between windows/linux/mac and usable with c++ code. I was looking at Bullet, Newton Game Dynamics, and ODE because they are open source. However, if Havok/PhysX are significantly more accurate I would consider those too.

All I seem to find are opinions on the engines, are there any thorough comparisons between the options? Or does anyone have experience trying the various engines out. Since what I'm trying to do is relatively simple there probably isn't a huge difference between them, but I'd like to hear what people have to say about the options? Thanks!

Anon
  • 5,103
  • 11
  • 45
  • 58
  • 3
    When you say accurate, what kind of motion do you have in mind? It's fairly straightforward to accurately model ballistic trajectories, but less so for anything involving collisions or other instantaneous events. Bullet for one has issues there, but I would suspect other physics engines do too. – Rob Agar Jun 20 '11 at 08:10
  • I wish to just model the kinematics of a single body (not necessarily rigid) in a variable gravity environment with various forces applied at certain times (i.e. a thruster kicking on suddenly). I don't really intend for any collisions. – Anon Jun 20 '11 at 22:43

6 Answers6

11

There is a nice comparison of ODE and Bullet here:

http://blog.wolfire.com/2010/03/Comparing-ODE-and-Bullet

Hope it can be useful in making a choice.

Roman Hwang
  • 405
  • 5
  • 10
8

Although it is a bit dated, there is a comprehensive comparison of (in alphabetical order) Bullet, JigLib, Newton, ODE, PhysX, and others available here:

The comparison considers integrators, friction models, constraint solvers, collision detection, stacking, and computational performance.

Michaelangel007
  • 2,798
  • 1
  • 25
  • 23
user598524
  • 141
  • 2
  • 5
6

Sorry, but you will never find a real comparison with respect to accuracy. I am searching for three months now for my master thesis and have not found it. So I started to do the comparison on my own but it's still a long way to go. I'm testing with 3d engines and even 2d engines and for now Chipmunk is the one with the highest accuracy so far. So if you have no need for 3d I would reccomend it. However if you have an urgent need for 3d and your problem is as simple as you described it (don't want to expand it in the future?) Bullet and ODE will do it. I would prefer Bullet because it is much more up-to-date and is still actively maintained. At least there is Newton, with which I am fighting right now. Therefore I can't give you pros and cons except that it is a bit more work to get familiar with the (crucial) bad documentation. Hope that helps. Best regards.

PWagner
  • 61
  • 1
4

Check out Simbody, which is used in engineering. It's particularly good for simulating articulated bodies. It has been used for more than 5 years to simulate human musculoskeletal dynamics. It's also one of the physics engines used in Gazebo, a robot simulation environment.

https://github.com/simbody/simbody

http://nmbl.stanford.edu/publications/pdf/Sherm2011.pdf

chrisdembia
  • 703
  • 7
  • 15
  • Actually it's not "the" physics engine; it's one of several supported and only recently got support in gazebo. – Catskul Jan 29 '14 at 00:58
4

One thing I found really valuable in ODE is the ability to change pretty much every single parameter 'on the fly'. As an example, the engine doesn't seem to complain if you modify the inertia or even the shape of a body. You could replace a sphere with a box and everything would just keep working, or change the size of the sphere. Other engines are not as flexible usually, because they do a lot of work internally for optimization purposes. As for accuracy, as far as I know, ODE still supports a very accurate (but slow) solver which is obviously not very popular in the games industry because you can't play around with more than 25-30 objects in real time. Hope this helps.

crisbia
  • 174
  • 3
  • 7
    So you can model [this](http://www.qwantz.com/fanart/superman.pdf) in ODE! – Chris Cunningham Jul 08 '11 at 19:05
  • 1
    +1 for this rare insight. Live editing is likely a requirement for me.. but .. are games not doing this all the time in Bullet and Newton as well? They adjust a lot of values runtime i recon, or is it that these mostly are limited to creating/removing and un-fixating objects? – Barry Staes Mar 20 '13 at 13:37
3

A physics abstraction layer supports a large number of physics engines via a unified API, making it easy to compare engines for your situation. PAL provides a unique interface for these physics engines:

  1. Box2D (experimental)
  2. Bullet
  3. Dynamechs(deprecated)
  4. Havok (experimental)
  5. IBDS (experimental)
  6. JigLib
  7. Meqon(deprecated)
  8. Newton
  9. ODE
  10. OpenTissue (experimental)
  11. PhysX (a.k.a Novodex, Ageia PhysX, nVidia PhysX)
  12. Simple Physics Engine (experimental)
  13. Tokamak
  14. TrueAxis

According to the December 2007 paper linked in this answer:

Of the open source engines the Bullet engine provided the best results overall, outperforming even some of the commercial engines. Tokamak was the most computationally efficient, making it a good choice for game development, however TrueAxis and Newton performed well at low update rates. For simulation systems the most important property of the simulation should be determined in order to select the best engine.

Here is a September 2007 demo by the same author:

https://www.youtube.com/watch?v=IhOKGBd-7iw

Community
  • 1
  • 1
Cees Timmerman
  • 17,623
  • 11
  • 91
  • 124