Download presentation
Presentation is loading. Please wait.
Published byVernon Atkinson Modified over 9 years ago
1
6/10/2015 3:41:00 AM 1 CSE 307 COMPUTER GRAPHICS OVERVIEW OF GRAPHICS SYSTEMS GRAPHICS OUTPUT PRIMITIVES GEOMETRICAL TRANSFORMATIONS TWO DIMENSIONAL VIEWING THREE DIMENSIONAL VIEWING PARAMETRIC CURVES VISIBLE SURFACE DETECTION METHODS ILLUMINATION MODELS COMPUTER ANIMATION Narendra V G CSE MIT
2
6/10/2015 3:41:00 AM 2 Text Book: 1. Donald Hearn, Pauline Baker M., “Computer Graphics with OpenGL”, Pearson Education, 3 rd Edition, (2010) References: 1.Edward Angel, “Interactive Computer Graphics- A top down approach using OpenGL”, Pearson Education, 5 th Edition. 2.Foley J. D., VanDam A., Feiner S. K., Hughes J. F., “Computer Graphics, Principles and Practice”, Addision-Wesley, 2 nd Edition. 3.Malay Pakhira K., “Computer Graphics Multimedia and Animation”, PHI Learning,. 2 nd Edition. 4.Amarendra Sinha N., Arun Udai D., “Computer Graphics”, Tata McGraw Hill publishing. 5.Er. Rajiv Chopra “Computer Graphics”, S. Chand & Company Ltd. 2 nd Edition. Narendra V G CSE MIT
3
6/10/2015 3:41:00 AM 3 Computer Graphics Applications Narendra V G CSE MIT
4
Computer Graphics is about animation (films) Major driving force now 6/10/2015 3:41:00 AM4Narendra V G CSE MIT
5
Games are very important in Computer Graphics 6/10/2015 3:41:00 AM5Narendra V G CSE MIT
6
Medical Imaging is another driving force Much financial support Promotes linking of graphics with video, scans, etc. 6/10/2015 3:41:00 AM6Narendra V G CSE MIT
7
Computer Aided Design too 6/10/2015 3:41:00 AM7Narendra V G CSE MIT
8
Scientific Visualisation To view below and above our visual range 6/10/2015 3:41:00 AM8Narendra V G CSE MIT
9
Graphics Pipelines Graphics processes generally execute sequentially Typical ‘pipeline’ model There are two ‘graphics’ pipelines – The Geometry or 3D pipeline – The Imaging or 2D pipeline 6/10/2015 3:41:00 AM9Narendra V G CSE MIT
10
6/10/2015 3:41:00 AM 10 Computer Graphics ? Narendra V G CSE MIT
11
Computer Graphics Computer graphics deals with all aspects of creating images with a computer – Hardware – Software – Applications 11 6/10/2015 3:41:00 AMNarendra V G CSE MIT
12
Example Where did this image come from? What hardware/software did we need to produce it? 12 6/10/2015 3:41:00 AMNarendra V G CSE MIT
13
Preliminary Answer Application: The object is an artist’s rendition of the sun for an animation to be shown in a domed environment (planetarium) Software: Maya for modeling and rendering but Maya is built on top of OpenGL Hardware: PC with graphics card for modeling and rendering 13 6/10/2015 3:41:00 AMNarendra V G CSE MIT
14
Basic Graphics System 14 Input devices Output device Image formed in FB 6/10/2015 3:41:00 AMNarendra V G CSE MIT
15
CRT Can be used either as a line-drawing device (calligraphic) or to display contents of frame buffer (raster mode) 15 6/10/2015 3:41:00 AMNarendra V G CSE MIT
16
Computer Graphics: 1950-1960 Computer graphics goes back to the earliest days of computing – Strip charts – Pen plotters – Simple displays using A/D converters to go from computer to calligraphic CRT Cost of refresh for CRT too high – Computers slow, expensive, unreliable 16 6/10/2015 3:41:00 AMNarendra V G CSE MIT
17
Computer Graphics: 1960-1970 Wireframe graphics – Draw only lines Sketchpad Display Processors Storage tube 17 wireframe representation of sun object 6/10/2015 3:41:00 AMNarendra V G CSE MIT
18
Sketchpad Ivan Sutherland’s PhD thesis at MIT – Recognized the potential of man-machine interaction – Loop Display something User moves light pen Computer generates new display – Sutherland also created many of the now common algorithms for computer graphics 18 6/10/2015 3:41:00 AMNarendra V G CSE MIT
19
Display Processor Rather than have the host computer try to refresh display use a special purpose computer called a display processor (DPU) Graphics stored in display list (display file) on display processor Host compiles display list and sends to DPU 19 6/10/2015 3:41:00 AMNarendra V G CSE MIT
20
Direct View Storage Tube Created by Tektronix – Did not require constant refresh – Standard interface to computers Allowed for standard software Plot3D in Fortran – Relatively inexpensive Opened door to use of computer graphics for CAD community 20 6/10/2015 3:41:00 AMNarendra V G CSE MIT
21
Computer Graphics: 1970-1980 Raster Graphics Beginning of graphics standards – IFIPS GKS: European effort – Becomes ISO 2D standard Core: North American effort – 3D but fails to become ISO standard Workstations and PCs 21 6/10/2015 3:41:00 AMNarendra V G CSE MIT
22
Raster Graphics Image produced as an array (the raster) of picture elements (pixels) in the frame buffer 22 6/10/2015 3:41:00 AMNarendra V G CSE MIT
23
Raster Graphics Allows us to go from lines and wire frame images to filled polygons 23 6/10/2015 3:41:00 AMNarendra V G CSE MIT
24
PCs and Workstations Although we no longer make the distinction between workstations and PCs, historically they evolved from different roots – Early workstations characterized by Networked connection: client-server model High-level of interactivity – Early PCs included frame buffer as part of user memory Easy to change contents and create images 24 6/10/2015 3:41:00 AMNarendra V G CSE MIT
25
Computer Graphics: 1980-1990 Realism comes to computer graphics 25 smooth shadingenvironment mapping bump mapping 6/10/2015 3:41:00 AMNarendra V G CSE MIT
26
Computer Graphics: 1980-1990 Special purpose hardware – Silicon Graphics geometry engine VLSI implementation of graphics pipeline Industry-based standards – PHIGS – RenderMan Networked graphics: X Window System Human-Computer Interface (HCI) 26 6/10/2015 3:41:00 AMNarendra V G CSE MIT
27
Computer Graphics: 1990-2000 OpenGL API Completely computer-generated feature- length movies (Toy Story) are successful New hardware capabilities – Texture mapping – Blending – Accumulation, stencil buffers 27 6/10/2015 3:41:00 AMNarendra V G CSE MIT
28
Computer Graphics: 2000- Photorealism Graphics cards for PCs dominate market – Nvidia, ATI Game boxes and game players determine direction of market Computer graphics routine in movie industry: Maya, Lightwave Programmable pipelines 28 6/10/2015 3:41:00 AMNarendra V G CSE MIT
29
Graphics Definitions Point – a location in space, 2D or 3D – sometimes denotes one pixel Line – straight path connecting two points – infinitesimal width, consistent density – beginning and end on points 6/10/2015 3:41:00 AM29Narendra V G CSE MIT
30
Graphics Definitions Vertex – point in 3D Edge – line in 3D connecting two vertices Polygon/Face/Facet – arbitrary shape formed by connected vertices – fundamental unit of 3D computer graphics 6/10/2015 3:41:00 AM30Narendra V G CSE MIT
31
Graphics Definitions Raster – derived from TV systems for a row of pixels – commonly referred to as a scanline – does influence algorithms – reducing memory requirements, parallelism, etc. – is the derivation of rasterization, scan-line algorithms 6/10/2015 3:41:00 AM31Narendra V G CSE MIT
32
Summary The course is about algorithms, not applications Graphics execution is a pipelined approach Basic definitions presented 6/10/2015 3:41:00 AM32Narendra V G CSE MIT
33
Programming with OpenGL Basics
34
Objectives Development of the OpenGL API OpenGL Architecture – OpenGL as a state machine Functions – Types – Formats Simple program Narendra V G CSE MIT 34 6/10/2015 3:41:00 AM
35
Early History of APIs IFIPS (1973) formed two committees to come up with a standard graphics API – Graphical Kernel System (GKS) 2D but contained good workstation model – Core Both 2D and 3D – GKS adopted as IS0 and later ANSI standard (1980s) GKS not easily extended to 3D (GKS-3D) – Far behind hardware development Narendra V G CSE MIT 35 6/10/2015 3:41:00 AM
36
PHIGS and X Programmers Hierarchical Graphics System (PHIGS) – Arose from CAD community – Database model with retained graphics (structures) X Window System – DEC/MIT effort – Client-server architecture with graphics PEX combined the two – Not easy to use (all the defects of each) Narendra V G CSE MIT 36 6/10/2015 3:41:00 AM
37
SGI and GL Silicon Graphics (SGI) revolutionized the graphics workstation by implementing the pipeline in hardware (1982) To access the system, application programmers used a library called GL With GL, it was relatively simple to program three dimensional interactive applications Narendra V G CSE MIT 37 6/10/2015 3:41:01 AM
38
OpenGL The success of GL lead to OpenGL (1992), a platform-independent API that was – Easy to use – Close enough to the hardware to get excellent performance – Focus on rendering – Omitted windowing and input to avoid window system dependencies Narendra V G CSE MIT 38 6/10/2015 3:41:01 AM
39
OpenGL Evolution Originally controlled by an Architectural Review Board (ARB) – Members included SGI, Microsoft, Nvidia, HP, 3DLabs, IBM,……. – Relatively stable (present version 2.1) Evolution reflects new hardware capabilities – 3D texture mapping and texture objects – Vertex programs – Allows for platform specific features through extensions – ARB replaced by Kronos Narendra V G CSE MIT 39 6/10/2015 3:41:01 AM
40
OpenGL Libraries OpenGL core library – OpenGL32 on Windows – GL on most unix/linux systems (libGL.a) OpenGL Utility Library (GLU) – Provides functionality in OpenGL core but avoids having to rewrite code Links with window system – GLX for X window systems – WGL for Windows – AGL for Macintosh Narendra V G CSE MIT 40 6/10/2015 3:41:01 AM
41
GLUT OpenGL Utility Toolkit (GLUT) – Provides functionality common to all window systems Open a window Get input from mouse and keyboard Menus Event-driven – Code is portable but GLUT lacks the functionality of a good toolkit for a specific platform No slide bars Narendra V G CSE MIT 41 6/10/2015 3:41:01 AM
42
Software Organization Narendra V G CSE MIT 42 GLUT GLU GL GLX, AGL or WGL X, Win32, Mac O/S software and/or hardware application program OpenGL Motif widget or similar 6/10/2015 3:41:01 AM
43
OpenGL Architecture Narendra V G CSE MIT 43 Immediate Mode Display List Polynomial Evaluator Per Vertex Operations & Primitive Assembly Rasterization Per Fragment Operations Texture Memory CPU Pixel Operations Frame Buffer geometry pipeline 6/10/2015 3:41:01 AM
44
OpenGL Functions Primitives – Points – Line Segments – Polygons Attributes Transformations – Viewing – Modeling Control (GLUT) Input (GLUT) Query Narendra V G CSE MIT 44 6/10/2015 3:41:01 AM
45
OpenGL State OpenGL is a state machine OpenGL functions are of two types – Primitive generating Can cause output if primitive is visible How vertices are processed and appearance of primitive are controlled by the state – State changing Transformation functions Attribute functions Narendra V G CSE MIT 45 6/10/2015 3:41:01 AM
46
Lack of Object Orientation OpenGL is not object oriented so that there are multiple functions for a given logical function – glVertex3f – glVertex2i – glVertex3dv Underlying storage mode is the same Easy to create overloaded functions in C++ but issue is efficiency Narendra V G CSE MIT 46 6/10/2015 3:41:01 AM
47
OpenGL function format Narendra V G CSE MIT 47 glVertex3f(x,y,z) belongs to GL library function name x,y,z are floats glVertex3fv(p) p is a pointer to an array dimensions 6/10/2015 3:41:01 AM
48
OpenGL #defines Most constants are defined in the include files gl.h, glu.h and glut.h – Note #include should automatically include the others – Examples – glBegin(GL_POLYGON) – glClear(GL_COLOR_BUFFER_BIT) include files also define OpenGL data types: GLfloat, GLdouble,…. Narendra V G CSE MIT 48 6/10/2015 3:41:01 AM
49
A Simple Program Generate a square on a solid background Narendra V G CSE MIT 49 6/10/2015 3:41:01 AM
50
simple.c Narendra V G CSE MIT 50 #include void mydisplay(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush(); } int main(int argc, char** argv){ glutCreateWindow("simple"); glutDisplayFunc(mydisplay); glutMainLoop(); } 6/10/2015 3:41:01 AM
51
Event Loop Note that the program defines a display callback function named mydisplay – Every glut program must have a display callback – The display callback is executed whenever OpenGL decides the display must be refreshed, for example when the window is opened – The main function ends with the program entering an event loop Narendra V G CSE MIT 51 6/10/2015 3:41:01 AM
52
Defaults simple.c is too simple Makes heavy use of state variable default values for – Viewing – Colors – Window parameters Next version will make the defaults more explicit Narendra V G CSE MIT 52 6/10/2015 3:41:01 AM
53
Notes on compilation See website and ftp for examples Unix/linux – Include files usually in …/include/GL – Compile with –lglut –lGLU –lGL loader flags – May have to add –L flag for X libraries – Mesa implementation included with most linux distributions – Check web for latest versions of Mesa and glut Narendra V G CSE MIT 53 6/10/2015 3:41:01 AM
54
Compilation on Windows Visual C++ – Get glut.h, glut32.lib and glut32.dll from web – Create a console application – Add opengl32.lib, glut32.lib, glut32.lib to project settings (under link tab) Borland C similar Cygwin (linux under Windows) – Can use gcc and similar makefile to linux – Use –lopengl32 –lglu32 –lglut32 flags Narendra V G CSE MIT 54 6/10/2015 3:41:01 AM
55
To display window and line segment #include void init (void) { glClearColor(1.0,1.0,1.0,0.0) ;//set display-window color to white glMatrixMode(GL_PROJECTION); //set projection parameter gluOrtho2D(0.0,200.0,0.0,150.0); } void lineSegment(void) { glClear(GL_COLOR_BUFFER_BIT); //clear display window glColor3f(1.0,0.0,0.0); //set line segment color to red glBegin(GL_LINES); glVertex2i(180,15); //specify line-segment geometry glVertex2i(10,145); glEnd(); glFlush(); } 6/10/2015 3:41:01 AMNarendra V G CSE MIT 55
56
void main(int argc, char** argv) { glutInit(&argc, argv); // Initialize GLUT glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //set display mode glutInitWindowPosition(50,100); //set top-left display window position glutInitWindowSize(400,300); //set display window width and height glutCreateWindow(“An Example OpenGL Program”); //create dis-win init( ); //Execute initialization procedure glutDisplayFunc(lineSegment); //send graphics to display window glutMainLoop( );//Display everything and wait } 6/10/2015 3:41:01 AMNarendra V G CSE MIT 56 To display window and line segment
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.