• Advertisement
Sign in to follow this  

Camera Issues

This topic is 1932 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey guys, first post here.

I have a slight problem with my camera right now. When I press the right or left keys (A/D), the screen jumps in that direction(by a lot more then just the key press), movement goes as planned, and when the key is released the screen jumps back to where it would've been. Here's the relevant pieces of code:

The message loop:
[CODE]
while( msg.message != WM_QUIT )
{
if ( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
if (msg.message==WM_KEYDOWN) OnKeyDown(msg.wParam);
else if (msg.message==WM_KEYUP) OnKeyUp(msg.wParam);
else{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

else Render();
}
[/CODE]

[CODE]
void OnKeyDown(WPARAM key){
switch (key){
case 0x41:
ak=TRUE;
break;
case 0x53:
sk=TRUE;
break;
case 0x44:
dk=TRUE;
break;
case 0x57:
wk=TRUE;
break;
default:
break;
}
}
void OnKeyUp(WPARAM key){
switch (key){
case 0x41:
ak=FALSE;
break;
case 0x53:
sk=FALSE;
break;
case 0x44:
dk=FALSE;
break;
case 0x57:
wk=FALSE;
break;
default:
break;
}

}

if (ak==TRUE) EyePt-=sideVector;
if (sk==TRUE) EyePt-=CurrentView
if (dk==TRUE) EyePt+=sideVector;
if(wk==TRUE) EyePt+=CurrentView;
[/CODE]

I'm working on implementing a camera class, but right now I'm very confused as to why my camera jumps whenever the A/D buttons are pressed. SOrry for the messy coding. Edited by dakeeper1995

Share this post


Link to post
Share on other sites
Advertisement
I don't see anything obviously wrong from this code. What does your message handler do?

You can try setting break points for when a key is pressed/released and stepping through your program so you can watch values change and see if they are what they should be.

Share this post


Link to post
Share on other sites
A few other questions:

Where is sideVector defined/updated (in case it does get modified) and what is it initialized to?

How is EyePoint used in the rendering process?

Does EyePoint get reset anywhere in the render process or outside this message loop at all?

Share this post


Link to post
Share on other sites
I figured it out by myself actually. Sorry, I didn't provide more code because I cannibalized a whole bunch of projects together and, seeing as I'm new to programming, I doubt anyone could've understood what most of it was (I have very bad programming conventions)

In case anyone was wondering (or had/have the same problem), I calculated my look at point (D3DXMatrixLookAtLH pAt) before keyboard input changed pEye. My view matrix was passed to DirectX afterwards, so there was a small jump on my screen.

Solved by placing the four "if(...)EyePt..." lines before calculating pAt.

Thanks for the replies. Edited by dakeeper1995

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement