• FEATURED

View more

View more

View more

Image of the Day Submit

IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

moving camera?

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

7 replies to this topic

#1En3my  Members

Posted 01 September 2001 - 09:34 AM

i am new to 3d programming and opengl, and i am still playing around trying to get the basics. some months ago i did a clone of the old classic sokoban using directx. since the logic and gameplay is very simple i thought it would be a good exercise trying to convert it to 3d. however i there is something fundamental i don't understand about camera movement. i hope someone reading this can help me out. what i did was to simply convert my 2d tile rendering code to 3d rendering. what i do is loop through an array containing the level data, and render to the screen. basically all i do is render a lot of textured cubes to the screen. since i don't understand camera movement i render using X Y coordinates creating the illusion of a top down perspective, but i will switch to X Z rendering as soon as i get the right camera perspective working. i would like to be able to look at the map from an isometric angle or something, but i can't get the gluLookAt function to work, since i am doing something wrong in my map rendering. i am still in a learning phase, started out 3d programming only last week. thanks in advance! if necessary i will post more info...
  // Part of rendering code glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); for (int z=0; z < MAPSIZE_Z; z++) for (int x=0; x < MAPSIZE_X; x++) { glLoadIdentity(); // zdepth is just a temp float used for zooming glTranslatef (x*2.0f, z*2.0f, zdepth); // i have to rotate since i switched from X Z // to X Y rendering. this makes the cubes face the // camera the right way glRotatef (90.0f, 1.0f, 0.0f, 0.0f); switch (map[x][z]) { case EMPTY: break; case WALL: glBindTexture (GL_TEXTURE_2D, texture[0]); glCallList(box); break; case FLOOR: glBindTexture (GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS); // code for drawing textured quad glEnd(); break; case BOX: glBindTexture (GL_TEXTURE_2D, texture[3]); glCallList(box); break; default: break; } // end switch } // end for // Some game logic goes here glFlush(); SwapBuffers(g_HDC); // End of rendering code 
Edited by - en3my on September 1, 2001 4:40:22 PM Edited by - en3my on September 1, 2001 4:41:55 PM

#2Sneftel  Senior Moderators

Posted 01 September 2001 - 10:18 AM

Matrix multiplication is not commutative... where you call gluLookAt in relation to glTranslate, glRotate, etc. matters. Make sure you have the order right.

#3En3my  Members

Posted 01 September 2001 - 10:40 AM

I tried calling gluLookAt() after my first call to glLoadIdentity() (before entering the for loop)... But it didn''t work...

#4ECKILLER  Members

Posted 01 September 2001 - 11:09 AM

Is your current matrix set to the model/view matrix ?

ECKILLER

#5En3my  Members

Posted 01 September 2001 - 11:12 AM

i did some experiments and placed the gluLookAt call inside the for loops, and it works... i still don''t understand why, so please explain if you know what is going on...

  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();for (int z=0; z < MAPSIZE_Z; z++) for (int x=0; x < MAPSIZE_X; x++) { glLoadIdentity(); gluLookAt(0.0f, 0.0f ,15.0f, 0.0f, 60.0f, -100.0f, 0.0f, 1.0f, 0.0f);

#6Sneftel  Senior Moderators

Posted 01 September 2001 - 11:18 AM

glLoadIdentity resets the transformation matrix. So if you called it after gluLookAt, gluLookAt''s effect would be nullified.

#7Null and Void  Members

Posted 01 September 2001 - 11:20 AM

You shouldn''t need to call gluLookAt each time it loops. Call it once (after a glLoadIdentity, outside the loop), then inside the loop use a glPushMatrix at the beginning, and a glPopMatrix at the end.

[Resist Windows XP''s Invasive Production Activation Technology!]

#8En3my  Members

Posted 01 September 2001 - 09:01 PM

thanks guys! now i have a better understanding on how things work!

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.