I have a "camera" in my opengl program that I recently finished. However, I've noticed that whenever I rotate and then move again, the x, y, and z angles change. For example, when I press the "w" key, I move forward along the "z" axis. If I then rotate the camera 90 degrees, when I push the "W" key, I will actually be moving right, seemingly along the "x" axis. It makes sense why this happens, I'm just wondering why its happening. Here's the rotation function:
The keyboard function:Code :private void camera() { glRotatef(xrot, 1.0f, 0.0f, 0.0f); glRotatef(yrot, 0.0f, 1.0f, 0.0f); }
And my translate function:Code :if (Keyboard.isKeyDown(Keyboard.KEY_D)) { xpos -= 0.035 * delta; } if (Keyboard.isKeyDown(Keyboard.KEY_A)) { xpos += 0.035 * delta; } if (Keyboard.isKeyDown(Keyboard.KEY_W)) { zpos += 0.03f * delta; } if (Keyboard.isKeyDown(Keyboard.KEY_S)) { zpos -= 0.035 * delta; } if (Keyboard.isKeyDown(Keyboard.KEY_UP)) { xrot += 0.035; if (xrot > 360) { xrot -= 360; } } if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) { xrot -= 0.035; if (xrot > 360) { xrot += 360; } } if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { yrot += 0.035; if (xrot > 360) { xrot -= 360; } } if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) { yrot -= 0.035; if (xrot > 360) { xrot += 360; } }
any ideas on how to solve this? I would be very grateful.Code :glTranslated(xpos, ypos, zpos - 30);



Reply With Quote
