I’ve seen jiglib, physx, and tokamak. Comment on these if you like or recommend another one. I need mesh collision so I can do physics with a terrain mesh. I do not need anything fancy like cloth, just an engine with good usability and documentation
ODE, Bullet, Newton Game Dynamics
Never used one though. But Bullet and ODE seem quite popular.
I’m going to add Newton to engine since I think it’s really great but I’m really not sure of how to do that yet (haven’t looked trough the tutorials well enough yet).
I have used PhysX and didn’t like it. The engine is OK for simple stuff, but once you do more complicated things you find that there are many bugs and the documentation becomes extremely poor. For your current use-case it is good enough, but in the future you might want to do more complex things and then PhysX might annoy you as much as it did annoy me. Also the support was either non-existing or the default reply “read the documenation” (although i usually stated, that i have a problem, that is NOT mentioned in the badly written documentation…).
Right now i use Havok and am very pleased with it. There is a free version of it for non-commercial use. The documentation is solid, if something is said to work that way, it really does. Especially their character controller is what i am very happy with, because even a simple game needs to be able to move characters through the world with proper behavior. This was the one thing that PhysX sucked so bad at, i had to program it mostly by myself, and my results were not that good, because things like having the characters be pushed by doors / elevators, react to objects thrown at them, not getting stuck, etc. is all very difficult to get working properly. Havok comes with all those features working out of the box.
PhysX is/was completely free last time i used it. Havok isn’t if you want to sell something.
I haven’t used any of the other engines.
In the end it depends on various factors. Should it be free? Should it be open-source? Can you live with non-commercial use only? Do you only want to use a few features, like raycasting, or do you want to do proper physics simulations? Do you plan on doing a game? I have once used PhysX only to do raycasts for calculating ambient occlusion. That worked extremely well and was much much faster than my own raycasting. If you plan on doing something like that, the decision is something entirely different, than if you plan on making some kind of game.
Hope that gives you some insights,
Havok sounds interesting, but I would like it to not have commercial constraints. ODE seems like the best choice so far followed by Jiglib. With ODE, it seems like a lot of people use it and there is a lot of documentation. With Jiglib, I am having a hard time finding good docs, but it has a very nice test program with the exact car physics that I want in the test demo. Not a lot of people seem to use it for C++/opengl, everyone seems to be using Jiglib for ASE and C#.
As for Newton, I have to still look into that further.
If you plan to sell your commercial PC Game above a retail value of $10 USD, (or equivalent amount in other currencies based on prevailing exchange rates at the time of launch), you must first request a no-charge PC Game distribution license from Havok at http://www.havok.com/PCgamedistribution, prior to retail release of your game. This PC Game distribution agreement is required to ensure you have complied with Havok logo, copyright, and attribution requirements, and that your application is a PC game (commercial non-game application distribution is not allowed). There will be no fee associated with this because the license fee has been covered by Intel under a commercial agreement with Havok.
as far as I can see havok is also free for commercial use for games
For your needs i would recommend ODE or Bullet. Bullet seems more advanced in features but i spent most of the time with ODE for simple physics or ragdoll simulation. Even better if you use an Physics Abstraction Layer to have one code and decide later which physics engine to use - commercial or open.