Download - CSE 307 COMPUTER GRAPHICS
04/20/23 08:01 PM 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
04/20/23 08:01 PM 2
Text Book:1. Donald Hearn, Pauline Baker M., “Computer Graphics with OpenGL”, Pearson Education, 3rd Edition, (2010)References:1.Edward Angel, “Interactive Computer Graphics- A top down approach using OpenGL”, Pearson Education, 5th Edition.2.Foley J. D., VanDam A., Feiner S. K., Hughes J. F., “Computer Graphics, Principles and Practice” , Addision-Wesley, 2nd Edition.3.Malay Pakhira K., “Computer Graphics Multimedia and Animation”, PHI Learning, . 2nd Edition.4.Amarendra Sinha N., Arun Udai D., “Computer Graphics”, Tata McGraw Hill publishing.
5.Er. Rajiv Chopra “Computer Graphics”, S. Chand & Company Ltd. 2nd Edition.
Narendra V G CSE MIT
04/20/23 08:01 PM 3
Computer Graphics Applications
Narendra V G CSE MIT
Computer Graphics is about animation (films)
Major driving force now
04/20/23 08:01 PM 4Narendra V G CSE MIT
Games are very important in Computer Graphics
04/20/23 08:01 PM 5Narendra V G CSE MIT
Medical Imaging is another driving force
Much financial support
Promotes linking of graphics with video, scans, etc.
04/20/23 08:01 PM 6Narendra V G CSE MIT
Computer Aided Design too
04/20/23 08:01 PM 7Narendra V G CSE MIT
Scientific Visualisation
To view below and above our visual range
04/20/23 08:01 PM 8Narendra V G CSE MIT
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
04/20/23 08:01 PM 9Narendra V G CSE MIT
04/20/23 08:01 PM 10
Computer Graphics ?
Narendra V G CSE MIT
Computer Graphics
• Computer graphics deals with all aspects of creating images with a computer– Hardware– Software– Applications
1104/20/23 08:01 PM Narendra V G CSE MIT
Example
• Where did this image come from?
• What hardware/software did we need to produce it?
1204/20/23 08:01 PM Narendra V G CSE MIT
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
1304/20/23 08:01 PM Narendra V G CSE MIT
Basic Graphics System
14
Input devices
Output device
Image formed in FB
04/20/23 08:01 PM Narendra V G CSE MIT
CRT
Can be used either as a line-drawing device (calligraphic) or to display contents of frame buffer (raster mode)
1504/20/23 08:01 PM Narendra V G CSE MIT
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
1604/20/23 08:01 PM Narendra V G CSE MIT
Computer Graphics: 1960-1970
• Wireframe graphics– Draw only lines
• Sketchpad• Display Processors• Storage tube
17
wireframe representationof sun object
04/20/23 08:01 PM Narendra V G CSE MIT
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
1804/20/23 08:01 PM Narendra V G CSE MIT
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
1904/20/23 08:01 PM Narendra V G CSE MIT
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
2004/20/23 08:01 PM Narendra V G CSE MIT
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
2104/20/23 08:01 PM Narendra V G CSE MIT
Raster Graphics
• Image produced as an array (the raster) of picture elements (pixels) in the frame buffer
2204/20/23 08:01 PM Narendra V G CSE MIT
Raster Graphics
• Allows us to go from lines and wire frame images to filled polygons
2304/20/23 08:01 PM Narendra V G CSE MIT
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
2404/20/23 08:01 PM Narendra V G CSE MIT
Computer Graphics: 1980-1990
Realism comes to computer graphics
25
smooth shading environment mapping
bump mapping
04/20/23 08:01 PM Narendra V G CSE MIT
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)
2604/20/23 08:01 PM Narendra V G CSE MIT
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
2704/20/23 08:01 PM Narendra V G CSE MIT
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
2804/20/23 08:01 PM Narendra V G CSE MIT
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
04/20/23 08:01 PM 29Narendra V G CSE MIT
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
04/20/23 08:01 PM 30Narendra V G CSE MIT
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
04/20/23 08:01 PM 31Narendra V G CSE MIT
Summary
• The course is about algorithms, not applications
• Graphics execution is a pipelined approach
• Basic definitions presented
04/20/23 08:01 PM 32Narendra V G CSE MIT
Programming with OpenGL
Basics
Objectives
• Development of the OpenGL API• OpenGL Architecture
– OpenGL as a state machine
• Functions – Types– Formats
• Simple program
Narendra V G CSE MIT 3404/20/23 08:01 PM
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 3504/20/23 08:01 PM
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 3604/20/23 08:01 PM
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 3704/20/23 08:01 PM
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 3804/20/23 08:01 PM
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 3904/20/23 08:01 PM
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 4004/20/23 08:01 PM
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 barsNarendra V G CSE MIT 4104/20/23 08:01 PM
Software Organization
Narendra V G CSE MIT 42
GLUT
GLU
GL
GLX, AGLor WGL
X, Win32, Mac O/S
software and/or hardware
application program
OpenGL Motifwidget or similar
04/20/23 08:01 PM
OpenGL Architecture
Narendra V G CSE MIT 43
Immediate Mode
DisplayList
PolynomialEvaluator
Per VertexOperations &
PrimitiveAssembly
RasterizationPer Fragment
Operations
TextureMemory
CPU
PixelOperations
FrameBuffer
geometry pipeline
04/20/23 08:01 PM
OpenGL Functions
• Primitives– Points– Line Segments– Polygons
• Attributes• Transformations
– Viewing– Modeling
• Control (GLUT)• Input (GLUT)• Query
Narendra V G CSE MIT 4404/20/23 08:01 PM
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 4504/20/23 08:01 PM
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 4604/20/23 08:01 PM
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
04/20/23 08:01 PM
OpenGL #defines
• Most constants are defined in the include files gl.h, glu.h and glut.h– Note #include <GL/glut.h> 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 4804/20/23 08:01 PM
A Simple Program
Generate a square on a solid background
Narendra V G CSE MIT 4904/20/23 08:01 PM
simple.c
Narendra V G CSE MIT 50
#include <GL/glut.h>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();
}04/20/23 08:01 PM
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 5104/20/23 08:01 PM
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 5204/20/23 08:01 PM
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 5304/20/23 08:01 PM
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 5404/20/23 08:01 PM
To display window and line segment #include<GL/gl.h>#include<GL/glu.h>#include<GL/glut.h>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(); }
04/20/23 08:01 PM Narendra V G CSE MIT 55
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}
04/20/23 08:01 PM Narendra V G CSE MIT 56
To display window and line segment