230 likes | 290 Views
Dive into the world of computer graphics with OpenGL. Learn about the tools, elements of pictures, raster images, graphing, and display devices. Get started with drawing in OpenGL and explore its applications.
E N D
Chapter 1: Introduction • Admin: • Lecture slots: Monday 8-9:45, Tuesday 9:15-11:00. • Book: F. Hill, Computer Graphics Using OpenGL (Little Big Bookstore) • Evaluation: 3hr closed book, 8th week (50%) + weekly pracs (50%) • Pracs: Windows or Linux, OpenGL. CAREFUL when using 3D Studio Max. • This is a fun course, but also a LOT of hard work. CS Hons RW778 Graphics
Chapter 1 : Introduction • Week 1: Introduction and OpenGL (Hill, Ch. 1,2). • Week 2: Windows and viewports; vector tools (Hill, Ch. 3,4). • Week 3: Vector tools (continued) (Hill, Ch. 4). • Week 4: Transformations on objects (Hill, Ch. 5). • Week 5: Polygonal meshes (Hill, Ch. 6). • Week 6: 3D viewing (Hill, Ch. 7). • Week 7: Lighting and face realism (Hill, Ch. 8). • Week 8: Exam Wednesday 09:00 CS Hons RW778 Graphics
Chapter 1: Introduction • 1.1 What is computer graphics (CG)? • Simply pictures • Tools • Field of study • 1.2 Where is CG used? • Art, entertainment, publishing • Image processing • Process monitoring, simulations, CAD • Scientific visualization CS Hons RW778 Graphics
Chapter 1: Introduction • 1.3 Elements of pictures created in CG • Output primitives and attributes: • Polylines • Text • Filled regions • Raster images • 1.3.1 Polylines • Connected sequence of straight lines CS Hons RW778 Graphics
Chapter 1: Introduction • Edge, vertex, polygon, simple polygon • Attributes: color, thickness, dashing, endpoint blending CS Hons RW778 Graphics
Chapter 1: Introduction • 1.3.2 Text • Font, color, size, spacing, orientation • Tilting (graphs) • 1.3.3 Filled regions • Filled shape – boundary (polygon) • Filling used for shadow effects CS Hons RW778 Graphics
Chapter 1: Introduction • 1.3.4 Raster image • Consists of cells (called pixels) with color value • Stored as array of numerical values • Bitmap : 0-1 • Created as hand-designed, or computed, or scanned. • Computed: straight lines – “jaggies” • Easy manipulation (filters, cleanup) CS Hons RW778 Graphics
Chapter 1: Introduction • 1.3.5 Shades of gray and color in raster images • Pixel depth : n bits => 2n values (at least 256) • Smaller pixel depth => loss in quality. Banding. • Color: RGB • Color depth => sum of bits for each color • High quality (true color) : 24 bits (eye perception) • 1.4 Graphics Display Devices • 1.4.1 Line drawing (plotters): cross-hatching CS Hons RW778 Graphics
Chapter 1: Introduction • 1.4.2 Raster displays (video monitor, flat-panel displays, printers) • Display surface (X,Y) • Frame buffer : memory to hold display pixels, with scan controller. CS Hons RW778 Graphics
Chapter 1: Introduction • Some hardware (video monitor) requires “refresh” : entire frame buffer scanned out to display many times per second. CS Hons RW778 Graphics
Chapter 1: Introduction • Video monitors : • CRT • Digital-to-analog converters (DACs) • Refresh 60x per second to prevent flicker. • Scanning per line CS Hons RW778 Graphics
Chapter 1: Introduction • 1.4.3 Indexed Color and the LUT • Programmable association between pixel value and color • Bits in frame buffer acts as index into LUT. • Palette: set of possible colors AT ONE TIME. • 1.4.4 Other raster display devices: flat-panel, LCD, active matrix panels, plasma panel • 1.4.5 Hard-copy raster devices: film recorder, laser printer, inkjet plotter. PostScript. • 1.5 Graphics input primitives and devices • Selfstudy. CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.1 Getting started • Environment: window, coordinate system, elementary drawing routines • 2.1.1 Device-independence and OpenGL • Libraries • 2.1.2 Windows-based Programming • Event-driven, event queue and callbacks • System-dependent (glut) • Example: Fig. 2.2 CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL #include <gl/Gl.h> #include <gl/glut.h> //<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>> void main(int argc, char** argv) { // initialize // create screen window glutDisplayFunc (myDisplay); glutMouseFunc (myMouse); glutKeyboardFunc (myKeyboard); glutMainLoop(); // go into a perpetual loop } CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.1.3 Opening a window for drawing (framework) #include <gl/Gl.h> #include <gl/glut.h> //<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>> void main(int argc, char** argv) { glutInit(&argc, argv); // initialize the toolkit glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // set display mode glutInitWindowSize(640,480); // set window size glutInitWindowPosition(100, 150); // set window position on screen glutCreateWindow("my first attempt"); // open the screen window glutDisplayFunc(myDisplay); // register redraw function myInit(); glutMainLoop(); // go into a perpetual loop } CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.2 Drawing basic graphics primitives • Establish coordinate system • Line drawing primitives : glBegin, glEnd, vertices • Example: glBegin (GL_POINTS); glVertex2i(100,50); glVertex2i(100,130); glVertex2i(150,130); glEnd(); • OpenGL commands: glVertex2i (…) CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • OpenGL data types : GLint, GLfloat • OpenGL state: current state variables. • glColor3f (red, green, blue) • glClear (GL_COLOR_BUFFER_BIT) • Establish coordinate system • Matrices and transformations (ch. 3) • Fig. 2.10: A complete OpenGL program • Note glFlush(); CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.2.1 Drawing dot constellations • The Big Dipper • The Sierpinski Gasket • Simple dot plots (note scaling and shifting, which are affine transformations) • 2.3 Line Drawings glBegin (GL_LINES); glVertex2i(40, 100); glVertex2i(202, 96); glEnd(); CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • More than 2 vertices : paired • 2.3.1 Drawing polylines and polygons • Polyline: collection of joined line segments, specified by ordered list of points. • OpenGL: GL_LINE_STRIP (open line segment) • GL_LINE_LOOP (closed line segment – not fillable area – GL_POLYGON) • Examples: line graphs, polylines from file, parameterizing figures, polyline drawer CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.3.2 Line drawing with moveto() and lineto() • Current position • 2.3.3 Drawing aligned rectangles • glRecti(x1,y1,x2,y2) • 2.3.4 Aspect ratio of aligned rectangle • width/height • NB! Work through all practice exercises on pp. 60—61. CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.3.5 Filling polygons • Must be convex! • 2.3.6 Other graphics primitives: • GL_TRIANGLES,GL_QUADS,GL_TRIANGLE_STRIP • GL_TRIANGLE_FAN,GL_QUAD_STRIP CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • 2.4 Simple mouse and keyboard interaction • glut callbacks on events: glutMouseFunc, glutMotionFunc, glutKeyboardFunc • 2.4.1 Mouse interaction : selfstudy • 2.4.2 Keyboard interaction : selfstudy • 2.6 Case studies: SELFSTUDY CS Hons RW778 Graphics
Chapter 2: Drawing in OpenGL • Programming Task 1 : Implement Case Study 2.5 (Polyline Stippling), p. 75, in Hill. • Familiarize yourself with OpenGL, Linux (or Windows) and C/C++. • The usual rules for programming projects hold: • No extensions (demo Monday 08:00) • No copying/cheating • Accompanying report to be handed in at demo CS Hons RW778 Graphics