PDA

View Full Version : Camera Moving the Wrong Way Along X-Axis?



Skeith
04-28-2015, 02:48 PM
Hi All,

I've implemented a first-person camera using OpenGL and GLM, however I'm having some issues with translation along the x-axis. When I press A for example (expecting to go to the left) the camera goes to the right, vice versa for D and going right.

Here's the camera setup code, spawn position and look vector, so we start off looking down the positive Z axis, which should be into the screen (I'm using left-handed coordinates here):


gCamera.Setup( glm::vec3( 15.5f, 0.4f, 6.8f ), glm::vec3( 0.f, 0.f, 1.f ) );


Some setup in the camera constructor:


mPos = pos;
mForward = forward;
mUp = glm::vec3( 0.f, 1.f, 0.f );
mRight = glm::cross( mUp, mForward );


Then the translation code from the game:


if( mKeyboard.IsKeyDown( KEYBOARD::A ) )
gGameEvents.push( PlayerMovedEvent( glm::vec3( -0.001f, 0.f, 0.f ) ) );

if( mKeyboard.IsKeyDown( KEYBOARD::D ) )
gGameEvents.push( PlayerMovedEvent( glm::vec3( 0.001f, 0.f, 0.f ) ) );


Finally, the translation code from the camera class:


void FirstPersonCamera::Translate( float x, float y, float z ) {
glm::vec3 translation( x, y, z );

translation = glm::mat3( glm::rotate( mYaw, glm::vec3( 0.f,1.f,0.f ) ) ) * translation;
translation = glm::mat3( glm::rotate( mPitch, mRight ) ) * translation;

mPos += translation;
}


I'd really appreciate some help with this.

Thanks

Skeith
04-29-2015, 08:43 AM
Really? No-one can help with this?