Physics Engines Appraisal

Started by
23 comments, last by Salmod 18 years ago
Hi All, For my final year project at uni, I am investigating the effect of physics simulation on "presence" in virtual environments. The basic idea is to create a demo, like a house, where as much as possible is physically modelled and interactive. Once this demo is built, I would run some experiments with users and so on. I decided to use the Ogre3D engine for the graphics side of the demo, since it has an excellent feature set, is well designed using OO etc, and most importantly has great documentation/tutorials and a very active forum community. Since this is research project rather than a programming one, I didn't want to spend ages integrating a physics engine so I limited myself to those that had wrappers for Ogre already: Newton, ODE and PhysX. In the end I went for PhysX, my main reasons being: - It's fast - From what I can gather, it's as accurate as the other two and faster. - Good set of built in features - Excellent set of tutorials - NxOgre wrapper in active development, with a very helpful dev. - Free since my project is purely academic. I'm trying to write up a section in my report, giving an overview of the technology choices I made - but I'm finding it very hard to get concrete information on the various pro's and con's of particular engines (aside from comments in forums). Since the PPU has been released, the Ageia site is full of marketing hype for that... The Newton site just doesn't seem to say much at all... ODE has a 98 page manual from which I'm trying to skim through any relevant sections. I'm also reading Chris Hecker's articles on rigid body dynamics, and Baraff's siggraph 97 stuff to get more understanding of how physics engines in general work. Basically, what I need your help with, is finding some more concrete information on the pros and cons for the engines mentioned; and information on the underlying methods and implentations used in them. If you have links to articles/papers/official docs that would be ideal. However if you have some in-depth knowledge yourself, and could shed some light, that would be great also. Not meaning to offend, but if it is the later could you please mention why I should believe you. =p i.e. how you aquired such knowledge. Thanks in advance for any replies - really appreciate any help/pointers you can give! =) -[ salmod ]- [Edited by - Salmod on April 19, 2006 7:14:17 AM]
Advertisement
PhysX is the best on your list (combined Novodex and Meqon).
[google] is the best bet to find the info requested (try the search on this site).
See Nonconvex rigid bodies with stacking paper.
Check out the Bullet Forum.
Cheers for the reply :)

I would be grateful if you could give me some reasoning as to exactly why you'd say PhysX is the best out of the three?

I've been to the Bullet forum before, tried using their search thing, and haven't really been able to find what I was after either. Do you think I should try posting there as well?

Google (on this site and the web) has led me to the Baraff and Chris Hecker stuff, which is an interesting read - but still nothing specific to the engines in question.

I had a quick flick through the paper you mentioned - again it seems to be on the underlying theory for simulating physics, and doesn't use or mention any of the engines in question...

I suppose my question could be rephrased - without planning and executing some kind of rigorous practical performance shoot out with the engines in question, how would you go about writting a comparison of them?
****
Just my 2 cents

[Edited by - tomek_zielinski2 on April 19, 2006 3:58:45 PM]
Tomasz ZielinskiTMReality
I just noticed this post over at the Bullet forums: http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=262. It's a fairly old comparison of some physics engines(mainly Novodex vs Tokamak), but fairly useful nonetheless. Still not a huge help to me, so any more links/articles/info are welcome! ;)

@tomek_zielinski2

Could you please give me some reasoning as to why you think ODE is so bad?

Isn't the PhysX 6-degrees-of-freedom joint as good as a custom joint?

I don't need the PPU at all, but it could be useful in the future if I was to add say fluids to the demo - so having that option open is still a plus in my book. Also, this is not an engineering simulation or anything, so as long as stuff behaves reasonably accurately - in line with an average users expectation of how a certain object should behave (so that someone playing the demo doesn't think "omg that is ridiculous!"), then that is fine.

As I mentioned, I have already started using PhysX, for the reasons above - the strongest of which are the excellent wrapper for Ogre and the good documentation and tutorial set.

Thanks again for the input so far - more is definitely welcome! ;)
Quote:Original post by tomek_zielinski2
PhysX is much faster but is less capable and has strange festures(like "one-sided" materials).


My custom physics engine supports only two primitives: arbitrary convex hulls (any number of planes and their (convex hull) intersections as line segments) and one-sided cubic polynomial patches. By forcing the use of one-sided patches, all interaction topology must form closed volumes (can be concave). Thus, even for networked physics (where objects might end up with deep penetration), the engine can always determine what is inside and what is outside, and do the right thing. The code was greatly simplified by supporting ony these two primitives. Other primitives such as spheres, cylinders, general implicits, can be added later (not needed for the current game).

Salmod, have you seen the Ogre physics testbed/demo [edit: tomek mentioned it: Gangsta (w)rapper]? Not sure what happened to it, but they were switching between a variety of engines.

You might also contact Havok; it is the oldest and most mature commercial physics engine (incorporated Ipion's work/people). Since you are in school, they may allow you to use their software (especially if you were to write a paper comparing Havok to PhysX (perhaps create a higher level interface to allow dynamically switching between the two engines in real-time for the same scenes (or run them in parallel in two windows; that would be very cool: check behavioral plausibility/correctness. You could extend this system to also test against the free engines such as ODE, Newton, Bullet, etc.). Who knows, maybe the results of your work could be used as a foundation for a generalized open physics API...

WRT papers on this topic: I've read a lot of papers- I'm not aware of any paper that provides such a comparison of commercial engines. All the papers discussed new/different ways to perform certain aspects of computational physics.

If you'd like to examine two (relatively) simple impulse-based engines (with source code), see Erin Catto's 2D physics demo and Danny Chapman's Jiglib demo (google this site for the links). I also use an impulse-based design for my current game (relatively simple, fast enough so far).

[Edited by - John Schultz on April 19, 2006 2:54:11 PM]
****

[Edited by - tomek_zielinski2 on April 19, 2006 3:01:27 PM]
Tomasz ZielinskiTMReality
@ John Schultz

I think you are thinking of the Gangsta Wrapper that "monster" was developing: http://www.ogre3d.org/phpBB2/viewtopic.php?t=8291&postdays=0&postorder=asc&highlight=gangsta&start=0

It has some basic framerate comparsions in there, but nothing more in depth than that. It was intended to be the "generalized open physics API" that you suggest, rather than a test bed for engines - unfortunately it hasn't been actively worked on for ages and I'm not sure what happened to monster. :(

Doing the comparsion does sound like a very interesting project - given the lack of explicitly this kind of information at the moment... Unfortunately I don't have the time to do this right now, and it isn't the focus of the project I am currently working on.

@ tomek_zielinski2

Thanks for elaborating! :)

I won't be having anything too complicated in my demo, and unfortunately I don't have the time left to try new engines - I think PhysX will do fine, but like I said, I'm just trying to gather information for writting the formal report. ;)

A couple of last questions for you though. =p In what ways does PhysX cheat in comparison to Newton? And how did you learn this - by observing the behaviour, or something more concrete? I'm not trying to say you are wrong, I've generally heard the Newton is very accurate, but I've not been able to find out exactly HOW it is more accurate than PhysX...

**********
IMHO PhysX and Newton are for different purposes and it's pointless to directly compare them.
**********

[Edited by - tomek_zielinski2 on April 19, 2006 3:22:48 PM]
Tomasz ZielinskiTMReality
****

[Edited by - tomek_zielinski2 on April 19, 2006 3:30:23 PM]
Tomasz ZielinskiTMReality

This topic is closed to new replies.

Advertisement