Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (753) Games in Android Showcase (228) games submitted by our members Games in WIP (842) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Quaternion rotations and gimble lock  (Read 2006 times) 0 Members and 1 Guest are viewing this topic.
arthor

Junior Newbie

 « Posted 2006-03-11 12:12:33 »

Hi, I've been trying to implement a camera class for a couple of weeks now ive finally got something thats mostly working using quaternions for rotation and vectors for movement, but I think im suffering from gimble lock. The more i turn to the side the less height i can acheive turning upwards. Im fairly certain the vector section is correct and is mostly independant from the rotation.

Heres my code for the rotation

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34 `public void updateCamera(){   Quat4f rotation = new Quat4f();         AxisAngle4f axisAngleX = new AxisAngle4f(cameraX.x, cameraX.y, cameraX.z, (float)Math.toRadians(angleX));   AxisAngle4f axisAngleY = new AxisAngle4f(cameraY.x, cameraY.y, cameraY.z, (float)Math.toRadians(angleY));         Quat4f quatXRotation = new Quat4f();   Quat4f quatYRotation = new Quat4f();         quatXRotation.set(axisAngleX);   quatYRotation.set(axisAngleY);         rotation.mul(quatYRotation, quatXRotation);   rotation.normalize();      Matrix4f newViewMatrix = new Matrix4f();   newViewMatrix.set(rotation);   newViewMatrix.transpose();         float[] rotationMatrixArray = new float[]   {   newViewMatrix.m00, newViewMatrix.m01, newViewMatrix.m02, 0,   newViewMatrix.m10, newViewMatrix.m11, newViewMatrix.m12, 0,   newViewMatrix.m20, newViewMatrix.m21, newViewMatrix.m22, 0,    0, 0, 0, 1   };      gl.glLoadIdentity();      glu.gluPerspective(60.0, 800/600, 2.0, 500.0f);            gl.glTranslatef(cameraPosition.x, cameraPosition.y, cameraPosition.z);      gl.glMultMatrixf(rotationMatrixArray);   }`

Am i doing something completely wrong? Or do i need to approach this from a different angle.
Gannin

Senior Newbie

 « Reply #1 - Posted 2006-03-11 23:30:01 »

You would probably be better served by asking this question in one of the OpenGL forums here.
Jeff

JGO Coder

Got any cats?

 « Reply #2 - Posted 2006-03-12 01:11:34 »

AIUI the whoel point of Quaternions is that they *don't* suffer from gimble lock.

As this is a heavy 3D math question I would *defintiely* ask it in one of the 3D forums (JOGL or Java3D)

Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
zero

Junior Devvie

 « Reply #3 - Posted 2006-03-12 01:54:59 »

hey arthor,

what are the values for the vectors cameraX and cameraY? Simply, the axes <1,0,0>, <0,1,0>?
and do you change angleX/angleY on key strokes?

further, what is ment by 'The more i turn to the side the less height i can acheive turning upwards'?
Rotating around the y-axis, right?
Mike Jacobs

Junior Devvie

 « Reply #4 - Posted 2006-03-12 04:17:25 »

... the whoel point of Quaternions is that they *don't* suffer from gimble lock.

Jeff is right if the Quaternion is used to represent an orientation.  On the surface, it appears that the quaternions may be used to represent axis rotations.  I included an overview of Java 3D quanternions in this article that might prove useful (http://jdj.sys-con.com/read/99792.htm).  The quaternions are covered in the section entitled 'Slicker than Euler' on page 3.

Mike

Special Effects for Java 3D games: http://www.indietechnologies.com
arthor

Junior Newbie

 « Reply #5 - Posted 2006-03-12 12:14:35 »

Thanks for the interest, as sugessted ive posted again in one of the 3d forums, JOGL to be specific, hopefully that is a better place for the question. Ive also answered some of the questions asked in the new post

http://www.java-gaming.org/forums/index.php?topic=12801.0
Pages: [1]
 ignore  |  Print

 nelsongames (20 views) 2018-04-24 18:15:36 nelsongames (17 views) 2018-04-24 18:14:32 ivj94 (608 views) 2018-03-24 14:47:39 ivj94 (54 views) 2018-03-24 14:46:31 ivj94 (402 views) 2018-03-24 14:43:53 Solater (66 views) 2018-03-17 05:04:08 nelsongames (111 views) 2018-03-05 17:56:34 Gornova (177 views) 2018-03-02 22:15:33 buddyBro (747 views) 2018-02-28 16:59:18 buddyBro (94 views) 2018-02-28 16:45:17
 Java Gaming Resourcesby philfrei2017-12-05 19:38:37Java Gaming Resourcesby philfrei2017-12-05 19:37:39Java Gaming Resourcesby philfrei2017-12-05 19:36:10Java Gaming Resourcesby philfrei2017-12-05 19:33:10List of Learning Resourcesby elect2017-03-13 14:05:44List of Learning Resourcesby elect2017-03-13 14:04:45SF/X Librariesby philfrei2017-03-02 08:45:19SF/X Librariesby philfrei2017-03-02 08:44:05
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org