Quote:Original post by hplus0603
Actually, the Novodex SDK supports trimesh-trimesh collision, if both have pre-calculated PMaps.
Then they aren’t trimesh of arbitrary complexity are they? They is a boxel space quantization of the mesh.
Quote:Original post by hplus0603
Also, most of them have a special convex trimesh type which works more robustly than concave trimeshes; ODE does not. (you can use plain SAT etc on convex meshes)
They are not arbitrary complexity trimesh either, it is just a special case of triangular meshes called convex hull. Novodex is not the only engine that support then, all the others do too. Havok, Meqon, CmLab, Tokamak, Newton, True Axis.
For arbitrary complexity trimesh-trimesh, there are not known algorithm capable of doing two things 1 determine the closest distance between solid of a arbitrary complexity, and 2 calculating the minimum translation distance that will separate then if they are intersecting. So No there are not physics engine out there capable of handling solid or arbitrary complexity as triangular mesh.
There are methods like the boxel spaces(pmaps or whatever is called), complex partitions, lattices of particles, convex strips, iso-surfaces representation (marching cube), and others, than can do a good job but they all has short comings. And they engine supporting them, has then as check list features.
Quote:Original post by hplus0603
I find ODE to be much better than writing your own. You should use a trimesh for the static world, and use proxies (spheres, ccylinders, boxes) for the actors. I've never found performance to be a problem -- if it is for you, you should profile it and see where the time is going.
The problem is that with ODE, you can make demos that can show even thousand of boxes bouncing in a flat plane. But when you want to make something useful with those bodies, for example keeping then steady in some kind of useful configuration, then you have to start playing with parameters (they called tweak the physics).
Essentially you jack up the solver iteration to make more stable, and you have to apply an abnormal amount of penalty and damping to the bodies. In the end to get the same level of quality offered by any other engine, ODE is the slowest.
In addition of the top speed of and engine, you should also test the speed/quality curve in a more realistic application environment.
More realistic tests are things like making a stack of say 20 or 30 boxes of equal mass and keeping it on without auto sleep and zero damping. The stack should state put without swaying at all for at least 1 minute or so.
Another good test is placing some 100 or 200 mass unit boxes on top of a stack of 10 of 15 boxes each one mass unit, and check that the stack state put for 1 minute or so with out notizable interpenetration of oscilations.
Other test are bilateral joint stability, and flexibility (are they prone to blow up or dismember)
If these basic test are not satisfactory, is does not mean you can not use the engine, you can use it if your primary goal is row speed, but be prepare to wrestle the engine all the way from the start of development until the end and beyond.
[Edited by - jovani on August 28, 2005 8:04:34 AM]