PDA

View Full Version : changing modelview matirx on the fly



06-04-2004, 09:54 AM
i want to be able to make my 'guy' to walk arbitrarily instead of just forward backward.

I know to translate the whole 'person' forward and backward thinggy. I just wanna make it move like gaming thing. Of course, i dont need to make both button usable at the same time. just basic simple move.

TIA

06-06-2004, 10:04 PM
Originally posted by <noobie>:
i want to be able to make my 'guy' to walk arbitrarily instead of just forward backward.

I know to translate the whole 'person' forward and backward thinggy. I just wanna make it move like gaming thing. Of course, i dont need to make both button usable at the same time. just basic simple move.

TIA http://www.gametutorials.com/Tutorials/opengl/opengl_pg1.htm#Camera

Kumar K
06-07-2004, 03:09 AM
Use the following code this may help u in arbitary rotaions

-----------

struct CAMERA
{
float position[3];
float orientation[3];
};

CAMERA cameraData;

init func()
{
cameraData.position[0] = 0.0f;
cameraData.position[1] = 0.0f;
cameraData.position[2] = -500.0f;

cameraData.orientation[0] = 0.0f;
cameraData.orientation[1] = 0.0f;
cameraData.orientation[2] = 0.0f;

}

DisplayFunc()
{

glRotatef(cameraData.orientation[0], 1.0f, 0.0f, 0.0f);
glRotatef(cameraData.orientation[1], 0.0f, 1.0f, 0.0f);
glRotatef(cameraData.orientation[2], 0.0f, 0.0f, 1.0f);
glTranslatef(-cameraData.position[0],cameraData.position[1],cameraData.position[2]);

}

keyDown func()
{

case LEFT :
cameraData.orientation[1]--; break;
case RIGHT : cameraData.orientation[1]++; break;

case UP : fLinearVelocity += 20.0;
// Update linear position
fTime = fTime * fLinearVelocity;
fXDelta = fTime * (float)(sin(DEGTORAD(cameraData.orientation[1])));
fXDelta += cameraData.position[0]; fZDelta = fTime * (float)(cos(DEGTORAD(cameraData.orientation[1])));
fZDelta += cameraData.position[2]; cameraData.position[0] = fXDelta; cameraData.position[2] = fZDelta;
break;

case DOWN :
fLinearVelocity -= 20.0;
// Update linear position
fTime = fTime * fLinearVelocity;
fXDelta = fTime * (float)(sin(DEGTORAD(cameraData.orientation[1])));
fXDelta += cameraData.position[0];
fZDelta = fTime * (float)(cos(DEGTORAD(cameraData.orientation[1])));
fZDelta += cameraData.position[2];

cameraData.position[0] = fXDelta;
cameraData.position[2] = fZDelta;

break;
}

}