Here's a quick video I recorded:
Currently I am using bullet physics to calculate my RigidBody physics actors. After each bullet step I basically run this code on my RigidBody game actors to get their position and rotation from bullet.
//the variable "physics" is the bullet RigidBody object
Vector3f c = physics.getCenterOfMassPosition(new Vector3f());
setLocation(new Vertex(c.x, c.y, c.z + 10));
Quat4f q = physics.getOrientation(new Quat4f());
setRotation(MathUtil.convertQuat2Euler3(new Quat(q.x, q.y, q.z, q.w)));
Problem A:
I'm currently converting the Quaternion that is returned by the RigidBody to an Euler angle then applying that to the object and rendering.
I'm like 99% sure thats causing gimbal lock. I can rewrite my renderer to use Quat's instead of Euler angles and solve the problem if that is it. It's a lot of work though so I want to confirm that this is the problem.
Problem B:
I have to add 10 to the location.z value of the RigidBody for some odd reason. I have no idea why.
Thanks :)