I created a simple test program that uses Odejava and JOGL which draws two falling cubes that land on a flat plane. The cubes were set to land right next to each other but when I used JavaCollision and the collide() call, I would get inaccurate collisions. Looking at the source I figured that this was because collide() called ODE's spaceCollide(), which only generates approximate collisions. When I wrote code to use dCollide() on the contacts generated from JavaCollision.collide(), the simulation did not have any visual problems. However my PF usage wouild increase by 10 MB/sec, which is bad. I found that the memory was being stolen by calls to dGeomGetBody() and dJointCreateContact(). This would happen even when I'd call dJointGroupEmpty(). I tried various strategies but it didn't work, and ended up switching to an odejava.dll distributed for JMonkey. This didn't have the memory problems, but it would complain that the step size for dCollide was inaccurate.
I have a few questions:
-If I can't end up using dCollide(), how do I make JavaCollision more accurate?
-How do I get Odejava to not use up so much PF?
-Is is possible to pass pointers to arrays of dContactGeom's so that dCollide works correctly?