gl.glLoadIdentity();
float rele = (float) Math.toRadians(ele);
float razi = (float) Math.toRadians(azi);
Quat4f rot = new Quat4f();
// Quaternion für 2. Achse (y, also nach oben) berechnen
// bei Drehung um "razi" im Bogenmaß. Entspricht Drehung
// nach links und rechts.
QuaternionUtil.setRotation(rot, cameraUp, razi);
Vector3f eyePos = new Vector3f();
eyePos.set(0f, 0f, 0f);
// 3. Koordinate setzen für den Abstand. 3. Achse bzw. z ist nach vorne.
VectorUtil.setCoord(eyePos, forwardAxis, -cameraDistance);
Vector3f forward = new Vector3f();
forward.set(eyePos.x, eyePos.y, eyePos.z);
if (forward.lengthSquared() < BulletGlobals.FLT_EPSILON) {
forward.set(1f, 0f, 0f);
}
Vector3f right = new Vector3f();
right.cross(cameraUp, forward);
Quat4f roll = new Quat4f();
QuaternionUtil.setRotation(roll, right, -rele);
Matrix3f tmpMat1 = new Matrix3f();
Matrix3f tmpMat2 = new Matrix3f();
tmpMat1.set(rot);