Presentation is loading. Please wait.

Presentation is loading. Please wait.

Reference1. [OpenGL course slides by Rasmus Stenholt]

Similar presentations


Presentation on theme: "Reference1. [OpenGL course slides by Rasmus Stenholt]"— Presentation transcript:

1 Reference1. [OpenGL course slides by Rasmus Stenholt]
CS380 LAB II OpenGL Bochang Moon Reference1. [OpenGL course slides by Rasmus Stenholt] Reference2. [

2 Goal Introduce OpenGL programming
Help you do CS380 homework by yourself

3 Notice Use Noah board for your questions (

4 Outline Transformations Modeling Transformations Draw 3D objects
Translate Rotate Scale

5 Transformations All transformations in OpenGL are carried out by matrices There are different matrices for different purposes The modelview matrix GL_MODELVIEW The projection matrix GL_PROJECTION The texture matrix GL_TEXTURE All matrices are post-multiplied I.e. the current matrix M becomes MN when N is performed Post-multiplication is closely linked to matrix stacks

6 Transformations Matrices All matrices in OpenGL are 4x4
Why use 4-D matrices for 3-D graphics? A 4x4 matrix can rotate and translate the same vector in one operation A 4x4 matrix can make the otherwise non-linear perspective projection linear Modern CPUs are very efficient at handling 4x4 matrices

7 Transformations Specify which matrix is the current matrix Mode
GL_MODELVIEW Applies subsequent matrix operations to the model view matrix stack GL_PROJECTION Applies subsequent matrix operations to the projection matrix stack etc. void glMatrixMode( GLenum   mode);

8 Set a view int main( int argc, char* argv[] )
{ glutReshapeFunc( reshape ); } void reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); double aspect = width/double(height); gluPerspective(45, aspect, 1, 1024); }

9 Set a view fovy aspect zNear zFar
glMatrixMode(GL_PROJECTION); glLoadIdentity(); double aspect = width/double(height); gluPerspective(45, aspect, 1, 1024); void gluPerspective( GLdouble   fovy, aspect, zNear, zFar); fovy View angle, in degrees, in the y direction aspect Ratio of x (width) to y (height) zNear Distance from the viewer to the near clipping plane (positive) zFar Distance from the viewer to the far clipping plane (positive)

10 Set a view Detailed explanations about Viewing Transformation will be provided in the next week.

11 Draw 3D objects Use a set of OpenGL primitives e.g.,
glBegin(GL_TRIANGLES); glVertex3f( 0.0f, 1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glEnd();

12 Draw 3D objects GLUT provide simple 3D objects e.g., Teapot object
void glutSolidTeapot(GLdouble size); void glutWireTeapot(GLdouble size);

13 Draw 3D objects void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); glColor3f(r,g,b); glutWireTeapot(0.5); glFlush(); }

14 Translations Multiply the current matrix by a translation matrix
x, y, z Specify the x, y, and z coordinates of a translation vector void glTranslatef( GLfloat   x, y, z);

15 Translations Multiply the current matrix by a translation matrix
void glTranslatef( GLfloat   x, y, z); Translation matrix (4x4) 1 X Y Z

16 Review of Translations
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0);

17 Review of Translations
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); Model view matrix

18 Review of Translations
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); 1 Model view matrix

19 Review of Translations
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); 1 1 -1 1 -1 Model view matrix

20 Review of Translations
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); Again?? 1 -1 1 -1 1 -2 Model view matrix

21 Review of Translations
void display(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0,0,-1.0); glColor3f(r,g,b); glutWireTeapot(0.5); glFlush(); }

22 Tutorials Move your teapot based on key inputs ‘l’: left ‘r’: right
‘u’: up ‘d’: down ‘f’: move out ‘n’: move in ‘l’ ‘f’

23 Tutorials float xpos = 0.0; float ypos = 0.0; float zpos = -2.0;
void keyboard(unsigned char key, int x, int y){ if (key == 'l') xpos -= 0.1; else if (key == 'r') xpos += 0.1; else if (key == 'u') ypos += 0.1; else if (key == 'd') ypos -= 0.1; else if (key == 'f') zpos -= 0.1; else if (key == 'n') zpos += 0.1; glutPostRedisplay(); } void display(){ glTranslatef(xpos,ypos,zpos); }

24 Rotations angle x, y, z angle of rotation, in degrees
void glRotatef( GLfloat   angle, x, y, z); angle angle of rotation, in degrees x, y, z x, y, and z coordinates of a vector, respectively Normalized vector (If not, GL will normalize it)

25 Rotations void glRotatef( GLfloat angle, x, y, z); ? 1
x, y, z); ? 1 The questions will be resolved in the CS380 lecture “Modeling Transformations“.

26 Rotations void display(){ … glTranslatef(xpos,ypos,zpos);
glRotatef(30,0,0,1); } 30 degrees rotation based on a normalized vector (0, 0, 1)

27 Tutorials Rotate your teapot on X axis e.g., 30, 60, and 90 degrees

28 Tutorials 30 degrees on X axis 60 degrees on X axis
glRotatef(30,1,0,0); 60 degrees on X axis glRotatef(60,1,0,0); 90 degrees on X axis glRotatef(90,1,0,0);

29 Scaling x, y, z scale factors along the x, y, and z axes, respectively
void glScalef( GLfloat   x, y, z);

30 Scaling void glScalef( GLfloat   x, y, z); X Y Z 1

31 Scaling void display(){ … glLoadIdentity(); glTranslatef(0,0,-3);
glScalef(2,1,1); }

32 Review of Scaling void display(){ 1 … glLoadIdentity();
glTranslatef(0,0,-3); glScalef(2,1,1); } 1 Model view matrix

33 Review of Scaling void display(){ … glLoadIdentity();
glTranslatef(0,0,-3); glScalef(2,1,1); } 1 1 -3 1 -3 Model view matrix

34 Review of Scaling void display(){ … glLoadIdentity();
glTranslatef(0,0,-3); glScalef(2,1,1); } 1 -3 2 1 2 1 -3 Model view matrix

35 Questions Why use 4-D matrices for 3-D graphics?
Combine multiple transformations into a 4x4 matrix 1 -3 2 1 2 1 -3 Model view matrix

36 Next time Viewing Transformation in OpenGL


Download ppt "Reference1. [OpenGL course slides by Rasmus Stenholt]"

Similar presentations


Ads by Google