660 likes | 1.1k Views
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. Text Book:
E N D
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
Text Book: Donald Hearn, Pauline Baker M., “Computer Graphics with OpenGL”, Pearson Education, 3rd Edition, (2010) References: Edward Angel, “Interactive Computer Graphics- A top down approach using OpenGL”, Pearson Education, 5th Edition. Foley J. D., VanDam A., Feiner S. K., Hughes J. F., “Computer Graphics, Principles and Practice” , Addision-Wesley, 2nd Edition. Malay Pakhira K., “Computer Graphics Multimedia and Animation”, PHI Learning, . 2nd Edition. Amarendra Sinha N., ArunUdai D., “Computer Graphics”, Tata McGraw Hill publishing. Er. Rajiv Chopra “Computer Graphics”, S. Chand & Company Ltd. 2nd Edition. Narendra V G CSE MIT
Computer Graphics Applications Narendra V G CSE MIT
Computer Graphics is about animation (films) Major driving force now Narendra V G CSE MIT
Games are very important in Computer Graphics Narendra V G CSE MIT
Medical Imaging is another driving force Much financial support Promotes linking of graphics with video, scans, etc. Narendra V G CSE MIT
Computer Aided Design too Narendra V G CSE MIT
Scientific Visualisation To view below and above our visual range Narendra 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 Narendra V G CSE MIT
Computer Graphics ? Narendra V G CSE MIT
Computer Graphics • Computer graphics deals with all aspects of creating images with a computer • Hardware • Software • Applications Narendra V G CSE MIT
Example • Where did this image come from? • What hardware/software did we need to produce it? 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 Narendra V G CSE MIT
Basic Graphics System Output device Input devices Image formed in FB 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) 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 Narendra V G CSE MIT
Computer Graphics: 1960-1970 • Wireframe graphics • Draw only lines • Sketchpad • Display Processors • Storage tube wireframe representation of sun object 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 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 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 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 Narendra V G CSE MIT
Raster Graphics • Image produced as an array (the raster) of picture elements (pixels) in the frame buffer Narendra V G CSE MIT
Raster Graphics • Allows us to go from lines and wire frame images to filled polygons 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 Narendra V G CSE MIT
Computer Graphics: 1980-1990 Realism comes to computer graphics smooth shading environment mapping bump mapping 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) 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 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 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 Narendra 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 Narendra 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 Narendra V G CSE MIT
Summary • The course is about algorithms, not applications • Graphics execution is a pipelined approach • Basic definitions presented Narendra 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
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
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
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
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
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
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
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
Software Organization application program OpenGL Motif widget or similar GLUT GLX, AGLor WGL GLU GL X, Win32, Mac O/S software and/or hardware Narendra V G CSE MIT
OpenGL Architecture geometry pipeline Immediate Mode Per Vertex Operations & Primitive Assembly Polynomial Evaluator DisplayList Per Fragment Operations Frame Buffer CPU Rasterization Texture Memory Pixel Operations Narendra V G CSE MIT
OpenGL Functions • Primitives • Points • Line Segments • Polygons • Attributes • Transformations • Viewing • Modeling • Control (GLUT) • Input (GLUT) • Query Narendra V G CSE MIT
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
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
OpenGL function format function name dimensions glVertex3f(x,y,z) x,y,zare floats belongs to GL library glVertex3fv(p) pis a pointer to an array Narendra V G CSE MIT
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
A Simple Program Generate a square on a solid background Narendra V G CSE MIT
simple.c #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(); } Narendra V G CSE MIT