One advantage of JBullet's collision system is that it has convex sweep tests (but use them with GhostObject for better performance). In my game
I use these for FPS character. It just uses two sweep tests of capsule against static geometry. First towards the direction it's moving and when it hits a wall it uses second to achieve sliding along the wall. There is also another sphere sweep test for vertical movement.
Convex sweep tests are really great because they can't miss and if you maintain some little margin you can't run into float imprecision either.
I love this game, and the physisc engine looks very nice, last time you post about your game I bring the link to my job and we all play your game for one hour instead of unreal ! this was pretty fun
as you told about static geometric/mesh collision I would like to point something out (just in case nobody think of this yet) :
computing sphere collision to static mesh is exacly the same as computing sphere collision to moving/rotating mesh it
just requiere to change the frame of reference
for the moving sphere
this barbare word just means to works in the object local axis, this way the moving/rotating object/mesh appear static to the moving sphere
and enable things like elevators / solid moving doors /etc... with no cost and without any collision engine modification.
how ? not really difficult but hard to explain...
- keep somewhere the position of the sphere in mesh local axis coordinate system (pos A)
- once object has been moved compute the new pos of the sphere in the mesh local axis coordinate system (pos B => maybe inside the mesh)
- substract those two pos, you then get a displacement vector from pos A to pos B in the mesh local axis system
- convert it back to world (using the current/moved mesh axis ) move your sphere from AWorld to BWorld
the mesh dont move any more from the point of view of the sphere its displacment has been reported/added to the sphere displacment and it appear as a static object
here is an online applet demo
=> click on the image at the top of the website, (there is an invisible glasses/plane on the top of the table so the ball cannot fall) as you can see both sphere and mesh are moving and colisions/phsics works using the above technic. you can zoom with right button and rotate with the left one.
EDIT : typos, also sorry but the top glasses make the demo not really well explaning I will try to put a sample online with a different 3d model to better show the result