Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College.

Similar presentations


Presentation on theme: "Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College."— Presentation transcript:

1 Computer Graphics: Programming, Problem Solving, and Visual Communication
Steve Cunningham California State University Stanislaus and Grinnell College PowerPoint Instructor’s Resource

2 Implementing Modeling in OpenGL
Going from concepts to images

3 Modeling Topics Specifying geometry GLU and GLUT tools Transformations
Transformation Stack Drawing text Inverting the eyepoint transformation Display lists

4 Specifying Geometry General model is glBegin(grouping_mode); vertex list glEnd(); The grouping mode identifies how the vertices are to be used The vertices in the vertex list can be done manually or by computation

5 Specifying Geometry (2)
There are many different grouping modes that OpenGL recognizes Simple modes: GL_POINTS GL_LINES GL_TRIANGLES GL_QUADS GL_POLYGON

6 Specifying Geometry (3)
Geometry compression modes: GL_LINE_STRIP GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUAD_STRIP

7 Specifying Geometry (4)
Some details of OpenGL geometry: All OpenGL polygons are assumed to be convex Polygons use vertices as if they were from a triangle fan Quad strips use vertices as if they were for triangle strips, so the order is different from GL_QUADS

8 Specifying Geometry (5)
The vertex list can use vertices of many different types The vertex data type is specified in the the particular glVertex* function name glVertex[2|3][i|f|d]{v} There are additional options, but they are not often used

9 Specifying Geometry (6)
As you specify the geometry with the vertices, you can specify other data for each vertex (e.g. appearance data) glColor*(…) glNormal*(…) glTexCoord*(…) Vertices can be given individually or as vertex arrays, reducing function calls

10 Some Sample OpenGL Objects
Triangle fan used to create a cone Triangle strips used to create a surface (one strip shown)

11 Appearance Information
Simple OpenGL drawing uses edges that are one pixel wide and are not antialiased You can specify point sizes and line width You can antialias points, lines, and polygon edges glEnable(type) as appropriate glHint(type, value)

12 Clipping Besides the automatic clipping on the view volume, you can specify other clipping by defining clip planes Clip planes are defined by the coordinates in the plane equation glClipPlane(number,plane) Clip planes may be enabled or disabled as your program runs

13 GLU Quadric Objects The GLU utilities include a number of useful objects gluSphere gluCylinder gluDisk All require that you first create a general GLUquadric pointer: GLUquadric* gluNewQuadric(void)

14 GLU Quadric Objects (2) GLU quadric objects are created by invoking a function that uses the GLUquadric* value The function also defines granularity and size You can select whether the object is solid or wireframe You can specify if you want to have normals or texture coordinates generated automatically

15 GLUT Objects GLUT provides a number of additional graphical objects you can use easily Cone Sphere Cube Torus Dodecahedron Icosahedron Octahedron Tetrahedron Teapot Each of these can be either wireframe or solid

16 Examples of GLU and GLUT Objects

17 Transformations in OpenGL
Rotation glRotatef(angle, x, y, z) Translation glTranslatef(tx, ty, tz) Scaling glScalef(sx, sy, sz) Individually these are simple, but they can be composed to create complex transformations

18 Transformation Stacks
You can create a stack for any of the standard OpenGL transformations The modelview transformation stack is critically important to manage the scene graph glMatrixMode(GL_MODELVIEW); glPushMatrix(); glPopMatrix();

19 Text in OpenGL Text is handled by a GLUT function that writes a character at a time in the font (usually bitmapped) you choose glutBitmapCharacter(font, char) Text you create this way is simply placed on the screen and cannot be selected

20 Inverting the Eyepoints
We saw that it can be useful to move the eyepoint in your model Of course, you could call glutLookAt(…) with new viewing data each time you redraw the scene The viewing data uses raw coordinates, though, and this could be difficult to calculate with many eye motions

21 Inverting the Eyepoint (2)
The eyepoint motion will probably be set by using simple transformations If these simple transformations are T1*T2*T3* … *TN then their inverse is TN-1*…*T3-1*T2-1*T1-1 and each of the inverses is simple

22 Inverting the Eyepoint (3)
In order to make the eyepoint placement easy, you can simply apply the needed inverse transformations at the top of the scene graph (at the beginning of the display function) and then use the default view

23 Creating Display Lists
Display lists are OpenGL’s way to compile geometry This lets the system work on geometry that has been optimized, making it faster to draw complex objects glNewList(i); glEndList(); You can then use this geometry with glCallList(i);


Download ppt "Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College."

Similar presentations


Ads by Google