Changing NeHe's camera function to a gluLookAt function.
As the title says, how do you change the way NeHe madehis camera to a gluLookAt function? Every timer I try this, it comes out wrong. :/
Can some one help?
~Thanks in advanced.
.::WARNING!::. Axesor is a total newb or n00b! Beware his lack ofintellegence of OpenGL. Feel sorry for him and keep him in your thoughts.~Leader of the phsychoward
.............
This is the NeHe section right?
................. .. ...... .....
*sigh*
float rotx = 360.0f - cam.view.x;
float roty = 360.0f - cam.view.y;
glRotatef(rotx, 1,0,0);
glRotatef(roty, 0,1,0);
glTranslatef(-cam.pos.x, -cam.pos.y-crouch, -cam.pos.z);
Whereas the pos is define as
(UP):
cam.last_pos.x = cam.pos.x;
cam.last_pos.z = cam.pos.z;
cam.pos.x -= sinef(cam.view.y);
cam.pos.z -= cosf(cam.view.y);
This is the NeHe section right?
................. .. ...... .....
*sigh*
float rotx = 360.0f - cam.view.x;
float roty = 360.0f - cam.view.y;
glRotatef(rotx, 1,0,0);
glRotatef(roty, 0,1,0);
glTranslatef(-cam.pos.x, -cam.pos.y-crouch, -cam.pos.z);
Whereas the pos is define as
(UP):
cam.last_pos.x = cam.pos.x;
cam.last_pos.z = cam.pos.z;
cam.pos.x -= sinef(cam.view.y);
cam.pos.z -= cosf(cam.view.y);
.::WARNING!::. Axesor is a total newb or n00b! Beware his lack ofintellegence of OpenGL. Feel sorry for him and keep him in your thoughts.~Leader of the phsychoward
May 15, 2006 11:35 PM
My solution would be to replace all that code with the following line, but I'm not sure if this is right or not, I did not test this:
gluLookAt(
cam.pos.x, cam.pos.y + crouch, cam.pos.z,
cam.pos.x, cam.pos.y + crouch, cam.pos.z + 1, /* Look in the positive Z axis */
0, 1.0, 0);
That would take care of translation. The other part is created by modifying the up vector, which I usually just rotate after using a LookAt, but if you want, you can calculate it out as a combination of trig functions and a lot of math.
Hope this helps.
gluLookAt(
cam.pos.x, cam.pos.y + crouch, cam.pos.z,
cam.pos.x, cam.pos.y + crouch, cam.pos.z + 1, /* Look in the positive Z axis */
0, 1.0, 0);
That would take care of translation. The other part is created by modifying the up vector, which I usually just rotate after using a LookAt, but if you want, you can calculate it out as a combination of trig functions and a lot of math.
Hope this helps.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement