Sign in to follow this  
sirob

Physics engine woes.

Recommended Posts

sirob    1181
Okay, so I went physics engine shopping. I heard Tokamak was very good and quick, so I read about it and decided to try it. Downloaded, installed and wrote a test program in less than a day (falling cubes) and I was quite pleased, until I tried implementing more complex stuff, like a very thin plane and a convex mesh. Pretty quickly, I figued out Tokamak had problems with thin objects (stuff goes through them) and that convex meshes weren't really implemented yet. I must say, I am very disappointed, since I REALLY need convex meshes for my engine, even if I can live with some collision errors. So, I moved on, and tried Newton and True Axis (yes, two at a time). Newton didn't seem stable from what I could see in the demos, and since True Axis looked much better, I gave that a whirl. Took me less than an hour to port my cubes sample to True Axis, but when I was done, and tried to add in a convex mesh -- it simply wouldn't collide with anything. I checked the net, and apparently, this wasn't implemented well either. So, I decided to do some research, and came up with Novodex, being a good engine, on all accounts I could find. So, I download that and start reading the documentation, and well, it's simply not documented. I mean, it's SO complicated (which could be good), but I'm completely lost with it. There is absolutly 0 info about convex meshes anywhere in the documentation. Frankly, I havn't the slightest idea what to do, and which engine to go with. I'm looking for something that would let me add convex meshes on the fly (not compile them into a .BIN file first) and would allow me to easily perform collision with these meshes. I don't really need much more. Any suggestions here? which engine would be good? Is there any info on any of these engines that could help me out here? Thanks in advance, sorry for the long post.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
It seems you are looking for something very special.
You tried all of then and none were good enough for you?
The only choices left are the very expensive ones but none of them are any better than what Novodex is, so you will probably have problem there too.
I think for what you want the only solution left is to write your own it is quite simple. Just read Baraff, and Mirty and move from there.

Share this post


Link to post
Share on other sites
sirob    1181
I think writing my own is above my head for now. I'm not really looking for anything these engines don't say they do, they just don't do it. I mean, it's all there, they just don't collide.

Anywho, I've decided to try Newton, though I'm not too pleased with it's design.

I'll report in when that's done.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Take it easy, it is very typical for beginners to make mistakes when starting to work with a physics engine. You need to set the proper conditions in your scene and follow the instructions because not engine is ideally perfect.
Maybe you are trying too hard and want instant gratification. Using a physics library is a little more involved than using graphics engine at first specially it you had not prior experience.
All the engines you mention are quite capable of handling convex hull collision (ODE been the exception), maybe the interface is not what you desire but the only way you will be completely happy is if you wrote it yourself

Share this post


Link to post
Share on other sites
sirob    1181
Well, I'm sorry if I seem a bit rash, and I'm switching engine really quickly.

The main reason I'm trying them all, is that I'm having a very easy time moving between them, they are quite similar.

I'm just having a REALLY hard time finding information on any of these engines.

I'll finish up with Newton (since I already started with it), if that fails I'll give True Axis another go, somehow, but I doubt Tokamak would be able to fit my needs.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
You could ask for help on the respective forums. I would not put my hope too high on finding professional quality documentation on freeware libraries, hey commercial engine don’t even have that good doc either.
There is a reason for that, technical documentation is very expensive to produce and maintain, all theses projects run by one or two individual.
Usually you get the information on the forum or in some Wiki.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
All I can say is:
Novodex SDK Free for Non-Commercial use!

http://www.ageia.com/novodex.html

Share this post


Link to post
Share on other sites
Delfi    106
newton is pretty decent as i can say from my experiences, and better trimesh
support is also in working:

http://physicsengine.com/forum/viewtopic.php?t=1491&start=0



Share this post


Link to post
Share on other sites
dgreen02    1428
I'm in the process of switching my project over to Newton, I understand your problems and where you're coming from (I used Tokamak and ODE before Newton).

The character controller demo in the Newton sdk actually stretches the object based on it's movement vector so that it's impossible to move through a part the level (the level is a arbitrary triangluar mesh).

I really like the way newton is setup, and it seems stable from what I've seen. The demos that come with the sdk don't show the potential of it, try downloading some 3rd party demos/playgrounds that have been created they really show some of the cool stuff you can do. The stuff in the sdk seems to be basic examples, not really showcases of the ability of the library.

I'd recommend giving Newton a decent shot, and if you're still unhappy... Novodex seems very cool if you can get past the complexity (their Rocket-demo-package-thing is amazing).

- Dan

Share this post


Link to post
Share on other sites
sirob    1181
I've had my look at Novodex, and I've set it as a last resort. If newton fails me, I'll give True Axis another try. If that fails, I'm gonna try Tokamak with customCollisionCallback (which is undocumented :(), and if that fails, I'll try Novodex. Doing around 50 lines of code to init an engine where I don't event have basic documentation for the operations I need isn't really high up in my priority list.

Anyhow, I should finish with newton tomorrow, and I'll post here :).

Share this post


Link to post
Share on other sites
Rompa    307
We're currently using True Axis. If you got no collision, try reversing the winding order of your meshes - the collision is single sided. Contact support or post on the forums because more than likely its something you're doing wrong. We got up and running inside of an hour with our collision world and it works a treat.

Share this post


Link to post
Share on other sites
Arelius    196
Do you mean Concave objects aren't supported, because as I am aware, those are the ones causing problems...

And I really must recomend Novodex, other then needing a license to use it comercially, it really is the best... and just think, you will have Hardware PPU support when that comes out later this year. I also have to say, that I have had no problem with convex objects in Novodex (however I still use there shapes most of the time)

Share this post


Link to post
Share on other sites
jovani    100
I never had any problems with the Newton convex hulls. I had tested with points arrays over 100000 vertices and it takes about a second to build it.
For 10000 points or less is fraction of a second.

Share this post


Link to post
Share on other sites
sirob    1181
*sigh*

Heres the thing. I really like the way True Axis is built up, it's entire structure is right. Unfortunatly, I can't get past the InitialiseFromPointList function not working.

As far as newton is concerned, I just don't like the way it's built. Like, a million procedures to do anything, and bojects with no exposed members or function, it just doesn't feel right.

As for novodex, I have the SDK installed, but it's extremely complicated and only very partially documented, I don't see myself getting along with it.

I'll wait some more for an answer on the True Axis forum, then I'll see.

Share this post


Link to post
Share on other sites
Daggett    161
Defiantly go for Novodex, granted it's documentation is very thin, but it is there (NovodeX SDK 2.2\SDKs\Physics\doc\PhysicsSDK.pdf (please notes it's now a tad out of date with the realease of 2.2)). And there are tons of tutorials to get you started. It took me a few days to learn how to use it, but you'll be very glad you took the time, you get Havok quality physics for free!

Share this post


Link to post
Share on other sites
Rompa    307
Perhaps while you're waiting for a response, you could use Qhull or something to create a convex hull yourself and try that with TrueAxis? Just curious as to convexity being the problem?

Share this post


Link to post
Share on other sites
Sweenie    180
Quote:
As far as newton is concerned, I just don't like the way it's built. Like, a million procedures to do anything, and bojects with no exposed members or function, it just doesn't feel right.

I guess Newton is made that way to support a wider range of languages.
It's extremly easy to use in almost any language, just like OpenGL.

If you want a more objectoriented feel to it you could always create some classes yourself.
When I think about it I believe I saw somewhere in the Newtonforum about someone who done just that.
...
ah, here it is...
http://www.newtondynamics.com/forum/viewtopic.php?t=1197
Download the archive in the last thread.

Share this post


Link to post
Share on other sites
Kasper Fauerby    240
Hmm, I didn't really have that many problems integrating Novodex 2.1.1 in my engine. I chose it *exactly* because I needed convex meshes and the other engines I looked at (same ones as you) really only worked with primitives like spheres, boxes, planes etc. Novodex handles convex meshes in a really cool way IMO and does not require any preprocessing or extreme memory usage. I simply registered all my static non-convex poly-soup level geometry as collision geometry, set up my dynamic convex objects as actors - and it quickly worked :)

I recently downloaded Novodex 2.2 and it seems they have changed a lot since 2.1.1 - as you mention they now use a "baker" concept for pre-processing meshes into something they can use. I also found the documentation in 2.2 to be quite lacking, so I understand your frustration. From the samples it appears that it is not nessesary to "bake" the meshes into a file if you don't want to - you can "bake" it to memory and construct your actor from the result.

So, I guess my advice to you is to keep trying with Novodex and possibly use 2.1.1 (if you can find it). Also, try looking at the samples that comes with the Novodex SDK because if their documentation can't help you then perhaps you can figure it out by looking at some code.

- Kasper Fauerby

Share this post


Link to post
Share on other sites
jovani    100
I have not had any problem setting up the Newton engine either, in fact I found quite easy and very object oriented.
Newton programming model is event driven, you need to set everything in advance and it communicate with the application via callbacks.
I like the fact that it is data less like Opengl, but it could be confusing if you are not used to that programming style.
However like Sweeny says there are general-purpose cpp classes that encapsulate the engine in a more procedural oriented way.
Quote:
Original post by Kasper Fauerby
I chose it *exactly* because I needed convex meshes and the other engines I looked at (same ones as you) really only worked with primitives like spheres, boxes, planes etc. Novodex handles convex meshes in a really cool way IMO and does not require any preprocessing or extreme memory usage. I simply registered all my static non-convex poly-soup level geometry as collision geometry, set up my dynamic convex objects as actors - and it quickly worked :)

That may be truth for Novodex, but it is not the only truth, convex collision is the Newton engine is way powerful, fast and in does not use external process or extra memory either.
Quote:
Original post by Rompa
Perhaps while you're waiting for a response, you could use Qhull or something to create a convex hull yourself and try that with TrueAxis? Just curious as to convexity being the problem?

Before using Newton I tried Tomakak and qhull fail in some cases too. I have not seen that with Newton.
Quote:
Original post by Daggett
Defiantly go for Novodex, granted it's documentation is very thin, but it is there (NovodeX SDK 2.2\SDKs\Physics\doc\PhysicsSDK.pdf (please notes it's now a tad out of date with the realease of 2.2)). And there are tons of tutorials to get you started. It took me a few days to learn how to use it, but you'll be very glad you took the time, you get Havok quality physics for free!

Again that maybe truth with Novodex (partially because it is not totally free), That is truth for the other engine too, you just need to know how to use them,
Here a re few sample of realistic simulations using all kind of convex collisions:
http://www.sgross.com/plugins/plugin6/sample_e.html
http://newton.delphigl.de/playground_domino.wmv
http://www.futurepinball.com/


I am not saying go for Newton or for Novodex, you already decide to go with a fine engine True Axis. I am just saying Novodex users some time are carry away with the speed and they to think the things it does are unique to novodex, but that is not truth there is nothing in Novodex that can not be done with the Newton engine.

[Edited by - jovani on July 4, 2005 5:27:37 AM]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this