Hello.
I'm trying to implement/add mouse to my test app. My test app is one of the LWJGL OpenGL 3.2 app from wiki page
http://lwjgl.org/wiki/index.php?title=The_Quad_with_Projection,_View_and_Model_matricesWhat I did:
- before while loop in the constructor I add this part of code:
1 2
| Mouse.setCursorPosition(800/2, 600/2); Mouse.setGrabbed(true); |
- in method "logicCycle()" before "// Translate camera" i added this part of code:
1 2 3 4 5 6
| if(Mouse.isGrabbed()) { horizontalAngle+= mouseSpeed * Mouse.getDX(); verticalAngle+= mouseSpeed * Mouse.getDY();
mouse(); } |
where
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 35 36 37 38
| float horizontalAngle = 3.14f; float verticalAngle = 3.14f; private float mouseSpeed = 0.005f;
private Vector3f direction = new Vector3f(); private Vector3f right = new Vector3f(); private Vector3f up = new Vector3f();
public void mouse(){ direction.set( (float)Math.cos(verticalAngle) * (float)Math.sin(horizontalAngle), (float)Math.sin(verticalAngle), (float)Math.cos(verticalAngle) * (float)Math.cos(horizontalAngle)); right.set( (float)Math.sin(horizontalAngle - PI/2.0f), 0, (float)Math.cos(horizontalAngle - PI/2.0f)); up = cross(right, direction); viewMatrix.m00 = up.x; viewMatrix.m01 = up.y; viewMatrix.m02 = up.z; viewMatrix.m10 = right.x; viewMatrix.m11 = right.y; viewMatrix.m12 = right.z; viewMatrix.m20 = direction.x; viewMatrix.m21 = direction.y; viewMatrix.m22 = direction.z; }
private Vector3f cross(Vector3f b, Vector3f c){ Vector3f cross = new Vector3f(); cross.x = (b.y*c.z) - (b.z*c.y); cross.y = (b.z*c.x) - (b.x*c.z); cross.z = (b.x*c.y) - (b.y*c.x); return cross; } |
Of course mouse working but not correctly, camera is set in strange positions.
Based on this example app (which display only square), when I turn to the right by 90 degrees and I move the mouse to up another 90 degrees square will be on bottom camera but still should be on the left.
Please HELP I start freaking out how to count this matrix. I assume i have bad count in mouse method.