   3D Collision Detection Library suggestions please
  Hi,I'm in a sudden need of a good 3d Collision Detection Library, and I was hoping someone could name/suggest some of the most well known/best ones.My requirements are:-free to use-tests for model-to-model collisions-works with models made of triangles (polyhedra, as in fully enclosed, connected shapes, no self intersections)-good performanceOne feature I'm really looking for:-ability to ignore touching collisions, or classify them as such. I'm only interested in knowing when two objects protrude into each other, just touching shouldn't be reported as a collision.Optional:-more information about the collision (i.e. which triangles intersect, etc.)So far I've heard of the following libraries:-ColDet-OPCODE-SOLID-RAPID-OZCollideI've only tried ColDet thus far, and while it works great, it does report touching models as collisions and I'm not sure how trivial it would be to modify it to avoid that.Perhaps there are other options that'll do what I want with less work. Any suggestions would be greatly appreciated.-------------------------------A short description of what I need it for: Here's a sample scene from my project.Basically, my scene consists of multiple models. Each model is made of connected triangles.What I need to do (at one time) is move around one of the objects, while the rest remain static. During that time, I want to test each new position of the moved object for collisions, and be able to detect one as soon as it occurs.   
  One of those libraries should work fine for your requirements. To add the collision report, when two objects are in touch, simply use a collision skin which is a bit (it hasn't to be much!) bigger than the original (graphical) object!Edit: Sorry, I misunderstood... To exclude "touching-collision reports", you could use a library, which returns you the penetration depth. If this PD is smaller than a certain value, you simply ignore the collision!   ;  NVidia kicks all of them, highly customisable, easy to use (and i'm new to c++ and game programming, trust me it's perfect). I suggest though that you start with tokamak because it gives you a good base, but if your not new you should have no problems with Nvidia.You can set skin wight and other stuff to determine the amount of overlap.If Nvidia doesn't have it i doubt anything else does.JamesCobras   ;  Ok, so I've tried OPCODE in addition to ColDet, and they are both extremely fast. OPCODE offers the option of returning *all* colliding triangles, not just the first pair.A simple, but obviously not the most efficient solution would be to process all the colliding pairs, and for each pair of triangles:-convert one triangle to a plane-test all 3 vertices of the other triangle vs. the plane, to see what half-space they belong to (i.e. left side, on the plane, or right side)-if there's at least one vertex on each side, then the two triangles are clearly intersecting and not just touchingEdit: This isn't entirely correct. I think I have to do this "conversion to plane" for both triangles, and if either case returns "no intersection" then they're not intersecting. It's sorta like SAT, isn't it?Edit 2: Even that case doesn't work. They're triangles, after all. Imagine a case of two non-parallel triangles such that their two edges touch (not at the endpoints). In any case, I don't think I need to worry about this anymore.It's not efficient because this test could, in theory, be done by the collision detection library itself with the necessary modifications, but oh well.I might just have to settle for objects that slightly float, rather than touch the surfaces they're attached to. After all, having them *exactly* touching something is only possible for clean numbers or axis-aligned polygons. As soon as there is rotation, the floating point accuracy limitations will prevent any exact touching per se.Quote:Original post by Black-PantherTo exclude "touching-collision reports", you could use a library, which returns you the penetration depth. If this PD is smaller than a certain value, you simply ignore the collision!Yes, that would be nearly perfect. Although it would probably involve (significant?) additional calculation overhead. Do you know any Col-Det libraries that have this feature? I haven't found one yet.Quote:Original post by JamesCobrasNVidia kicks all of them, highly customisable, easy to use (and i'm new to c++ and game programming, trust me it's perfect). I suggest though that you start with tokamak because it gives you a good base, but if your not new you should have no problems with Nvidia.Huh?NVidia is a graphics card company as far as I know, and I couldn't find any nvidia collision detection library on google.Did you mean Nvidia PhysX? In which case, that's a physics engine, and I think it might be overkill for what I need. But I'll consider it anyway, thanks.[Edited by - shurcool on May 15, 2009 5:08:49 PM]