PDA

View Full Version : Looking with Camera?



GhostMonkey
04-24-2012, 06:07 AM
Hey, I'm trying to make a camera but when I use the arrow keys to look around like a head, I can only look 90 degrees in any direction. How do I get it to go a complete circle?

ZbuffeR
04-24-2012, 07:31 AM
Store facing angle in a variable, and glRotate modelview with it (provided you use reset the modelview each frame, and you should).

Then each time the left key is down, increment it with rotSpeed/frameTime. When right key is down, decrement.

If still can not solve it yourself, be more precise about what you have written, and post some code in proper [ code ] tags.

GhostMonkey
04-24-2012, 09:11 AM
I was trying to something similar, I have:


gluLookAt(cam.Posx, cam.Posy, cam.Posz, cam.ForwardX, cam.ForwardY, cam.ForwardZ, cam.upx, cam.upy, cam.upz);


So every frame I increment/decrement Forward.x to look around, I then tried incrementing ForwardZ when turning right but that still only allowed me to rotate 180 no matter what I set it too.

BionicBytes
04-24-2012, 09:40 AM
rotate 180 no matter what I set it too.

Well that's 90 degrees better than in your first post :-)

Post some code, properly formatted so we can see your camera code.

GhostMonkey
04-24-2012, 10:42 AM
Haha, still not much use though. Heres my Camera code:



void CameraUpdate()
{

float cosR, cosP, cosY;
float sinR, sinP, sinY;

cosY = cosf(cam.GetYaw()*3.1415/180);
cosP = cosf(cam.GetPitch()*3.1415/180);
cosR = cosf(cam.GetRoll()*3.1415/180);
sinY = sinf(cam.GetYaw()*3.1415/180);
sinP = sinf(cam.GetPitch()*3.1415/180);
sinR = sinf(cam.GetRoll()*3.1415/180);

ForwardVectorX = sinY * cosP*360;
ForwardVectorZ = sinP*360;
ForwardVectorY = cosP * -cosY*360;

// Look At Point
cam.ForwardX = cam.Posx + ForwardVectorX;
cam.ForwardY = cam.Posy + ForwardVectorZ;
cam.ForwardZ = cam.Posz + ForwardVectorY;

// Up Vector
cam.upx = -cosY * sinR - sinY * sinP * cosR;
cam.upy = cosP * cosR;
cam.upz = -sinY * sinR - sinP * cosR * -cosY;
}
Yaw, Pitch and Roll are all 1.0,
I then put the values into gluLookAt and changed them using:



if (keys[VK_RIGHT])
{
cam.ForwardX+=2.0f;
}

if (keys[VK_LEFT])
{
cam.ForwardX-=2.0f;
}

if (keys[VK_UP])
{
cam.ForwardY+=2.0f;
}

if (keys[VK_DOWN])
{
cam.ForwardY-=2.0f;
}



Thats for the 90 degrees turn, for 180 I just incremented/decremented cam.ForwardZ aswell.