bobert
07-11-2001, 09:18 AM
Hi, i have a nice little gl engine going, and i have begun implimenting the ability to "walk" through the scene.(in first person) However glTranslatef does not retain a heading...
So, if I rotate +30, then walk forwords, the resulting movment is the same as if i had never rotated.
ie: im walking sideways!
This is my camera and input code:
*-------------->8-----------------*
void MoveCam()
{glLoadIdentity();
glRotatef(CamVector.dirY,1.0f,0.0f,0.0f);
glRotatef(CamVector.dirX,0.0f,1.0f,0.0f);
glRotatef(CamVector.dirZ,0.0f,0.0f,1.0f);
glTranslatef(CamVector.posX,CamVector.posY, CamVector.posZ);
}
void ActionKeys()
{
if (!keys[VK_CONTROL]){
if (keys[VK_LEFT]) {CamVector.posX+=0.05f;}
if (keys[VK_RIGHT]){CamVector.posX-=0.05f;}
if (keys[VK_UP]) {CamVector.posZ+=0.05f;}
if (keys[VK_DOWN]) {CamVector.posZ-=0.05f;}
}
}
void Mouse()
{
GetCursorPos(&MousePos);
SetCursorPos(512,384);
CamVector.dirX -= ((float)(512) - MousePos.x)/500 * 8;
CamVector.dirY -= ((float)(384) - MousePos.y)/500 * 8;
if (CamVector.dirX >180) CamVector.dirX=-180;
if (CamVector.dirX<-180) CamVector.dirX= 180;
if (CamVector.dirY >180) CamVector.dirY=-180;
if (CamVector.dirY<-180) CamVector.dirY= 180;
}
*----------------->8-----------------*
So how would i store and retranslate with the heading?
THANX
-Bobert
So, if I rotate +30, then walk forwords, the resulting movment is the same as if i had never rotated.
ie: im walking sideways!
This is my camera and input code:
*-------------->8-----------------*
void MoveCam()
{glLoadIdentity();
glRotatef(CamVector.dirY,1.0f,0.0f,0.0f);
glRotatef(CamVector.dirX,0.0f,1.0f,0.0f);
glRotatef(CamVector.dirZ,0.0f,0.0f,1.0f);
glTranslatef(CamVector.posX,CamVector.posY, CamVector.posZ);
}
void ActionKeys()
{
if (!keys[VK_CONTROL]){
if (keys[VK_LEFT]) {CamVector.posX+=0.05f;}
if (keys[VK_RIGHT]){CamVector.posX-=0.05f;}
if (keys[VK_UP]) {CamVector.posZ+=0.05f;}
if (keys[VK_DOWN]) {CamVector.posZ-=0.05f;}
}
}
void Mouse()
{
GetCursorPos(&MousePos);
SetCursorPos(512,384);
CamVector.dirX -= ((float)(512) - MousePos.x)/500 * 8;
CamVector.dirY -= ((float)(384) - MousePos.y)/500 * 8;
if (CamVector.dirX >180) CamVector.dirX=-180;
if (CamVector.dirX<-180) CamVector.dirX= 180;
if (CamVector.dirY >180) CamVector.dirY=-180;
if (CamVector.dirY<-180) CamVector.dirY= 180;
}
*----------------->8-----------------*
So how would i store and retranslate with the heading?
THANX
-Bobert