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_matrices
What I did:
- before while loop in the constructor I add this part of code:
Mouse.setCursorPosition(800/2, 600/2);
Mouse.setGrabbed(true);
- in method “logicCycle()” before “// Translate camera” i added this part of code:
if(Mouse.isGrabbed()) {
horizontalAngle+= mouseSpeed * Mouse.getDX();
verticalAngle+= mouseSpeed * Mouse.getDY();
mouse();
}
where
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.