computer graphics (cs 4731) lecture introduction to...

31
Computer Graphics (CS 4731) Lecture 1: Introduction to Computer Graphics Prof Emmanuel Agu Computer Science Dept. Worcester Polytechnic Institute (WPI)

Upload: others

Post on 23-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Computer Graphics (CS 4731) Lecture 1: Introduction to 

Computer Graphics

Prof Emmanuel Agu

Computer Science Dept.Worcester Polytechnic Institute (WPI)

Page 2: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

What is Computer Graphics (CG)?

Computer graphics: algorithms, mathematics, data structures ..… that computer uses to generate PRETTY PICTURES

Techniques (e.g. draw a line, polygon) evolved over years Built into programmable libraries

Computer‐Generated!Not a picture!

Page 3: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Photorealistic Vs Real‐Time Graphics

• Photo‐realistic: E.g ray tracingslow: may take days to render

• Real Time graphics: Milliseconds to render (30 FPS)But lower image quality 

This ClassNot this Class

Page 4: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Uses of Computer Graphics: Entertainment

Entertainment: games

Courtesy: Super Mario Galaxy 2

Courtesy: Spiderman

Movies

Page 5: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Uses of Computer Graphics

Image processing:

alter images, remove noise, super‐impose images

Original Image Sobel Filter

Page 6: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Uses of Computer Graphics

Monitor large systems or plants

Courtesy:

Dataviews.de

Simulators

Courtesy: Evans and Sutherland 

Page 7: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Uses of Computer Graphics

Computer‐aided design:

Courtesy: 

cadalog.com

Display math functionsE.g matlab

Page 8: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Uses of Computer Graphics Scientific analysis and visualization:

molecular biology, weather, matlab, Mandelbrot set

Courtesy: 

Human Brain Project, Denmark

Page 9: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

2D Vs. 3D 2‐Dimensional (2D)

Flat  Objects no notion of distance from viewer Only (x,y) color values on screen

3‐Dimensional (3D) Objects have distances from viewer (x,y,z) values on screen

• This class covers both 2D & 3D!• Also interaction: Clicking, dragging

Page 10: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

About This Course Computer Graphics has many aspects

Computer Scientists create/program graphics tools (e.g. Maya, photoshop) Artists use CG tools/packages to create pretty pictures

Page 11: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

About This Course Most hobbyists follow artist path. Not much math! This Course: Computer Graphics for computer scientists!!! Teaches concepts, uses OpenGL as concrete example Course is NOT

just about programming OpenGL a comprehensive course in OpenGL. (Only parts of OpenGL covered) about using packages like Maya, Photoshop

Page 12: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

About This Course Class is concerned with:

How to build/program graphics tools Underlying mathematics Underlying data structures Underlying algorithms

This course is a lot of work. Requires: Lots of coding in C/C++ Shader programming Lots of math, linear algebra, matrices

We shall combine:  Programmer’s view: Program OpenGL APIs Under the hood: Learn OpenGL internals (graphics algorithms, math, 

implementation)

Page 13: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Course Text Interactive Computer Graphics: A Top‐Down Approach with Shader‐based 

OpenGL by Angel and Shreiner (6th edition), 2012 Buy 6th edition                                                  …….. NOT 7th edition!!!

Page 14: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Syllabus Summary

2 Exams (50%), 4 Projects (50%) Projects:

Develop OpenGL/GLSL code on any platform, must port to Zoolab machine May discuss projects but turn in individual projects

Class website:  http://web.cs.wpi.edu/~emmanuel/courses/cs4731/A14/

Cheating: Immediate ‘F’ in the course Advice:

Come to class Read the text Understand concepts before coding

Page 15: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Elements of 2D Graphics Polylines Text Filled regions Raster images (pictures)

Page 16: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Elements of 2D Graphics Polyline: connected sequence of straight lines Straight lines connect vertices (corners)

blow-up

vertex

Page 17: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Polyline Attributes

Color Thickness  Stippling of edges (dash pattern)

Page 18: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Text Devices have:

text mode  graphics mode. 

Graphics mode: Text is drawn 

Text mode: Text  not drawn uses character generator

Text attributes: Font, color, size, spacing, and orientation

Outlined text

Shadow Text

SMALL CAPS

Little Text

Rotated Text

Big Text

Page 19: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Filled Regions 

Filled region: shape filled with some color or pattern Example: polygons

A

DC

B

Page 20: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Raster Images

Raster image (picture) consists of 2D matrix of small cells (pixels, for “picture elements”), in different colors or grayscale. 

Middle image: magnified showing pixels (squares)

Page 21: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Computer Graphics Tools Hardware tools

Output devices: Video monitors, printers Input devices: Mouse/trackball, pen/drawing tablet, keyboard Graphics cards/accelerators (GPUs)

Software tools (low level) Operating system Editor Compiler Debugger Graphics Library (OpenGL)

Page 22: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Graphics Processing Unit (GPU)

OpenGL implemented in hardware => FAST!! Programmable: as shaders Located either on PC motherboard (Intel) or Separate 

graphics card (Nvidia or ATI)

GPU on PC motherboard GPU on separate PCI express card

Page 23: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Computer Graphics Libraries Functions to draw line, circle, image, etc Previously device‐dependent 

Different OS => different graphics library Tedious! Difficult to port (e.g. move program Windows to Linux) Error Prone

Now device‐independent libraries APIs: OpenGL, DirectX Working OpenGL program minimal changes to move from Windows to 

Linux, etc

Page 24: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

OpenGL Basics

OpenGL’s function is Rendering (or drawing) Rendering? – Convert geometric/mathematical object 

descriptions into images OpenGL can render:

2D and 3D Geometric primitives (lines, dots, etc) Bitmap images (pictures, .bmp, .jpg, etc)

OpenGL Program OpenGL

Page 25: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

GL Utility Toolkit (GLUT) OpenGL does NOTmanage drawing window

OpenGL Window system independent Concerned only with drawing (2D, 3D, images, etc) No window management (create, resize, etc), very portable

GLUT:  Minimal window management Interfaces with different windowing systems Easy porting between windowing systems. Fast prototyping

GLUT

OpenGL

Page 26: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

GL Utility Toolkit (GLUT) No bells and whistles

No sliders No dialog boxes No elaborate menus, etc

To add bells and whistles, use system’s API or GLUI: X window system Apple: AGL Microsoft :WGL, etc

GLUT(minimal)

Slider Dialog box

Page 27: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

OpenGL Basics Low‐level graphics rendering API

Maximal portability Display device independent (Monitor type, etc)

Operating system independent (Unix, Windows, etc)

Window system independent based (Windows, X, etc)

OpenGL programs behave same on different devices, OS

Page 28: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Simplified OpenGL Pipeline Vertices go in, sequence of steps (vertex processor, clipper, 

rasterizer, fragment processor) image rendered This class: learn algorithms and order of these steps

Vertex Shader

Fragment(Pixel)Shader

Converts3D to 2D

Page 29: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

OpenGL Programming Interface Programmer view of OpenGL? Application Programmer Interface (API) Writes OpenGL Application programs. E.g

glDrawArrays(GL_LINE_LOOP, 0, N);

glFlush( );

Page 30: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

Framebuffer

Dedicated memory location:  Draw in framebuffer => shows up on screen Located either on CPU (software) or GPU (hardware)

frame buffer

pixel at address [x,y]

0 639

479

0 x

ydisplay surface

scancontroller

x

y

x

y

spot at (x,y)

geometricpositionlogical

address

at (639, 0)

at (639, 479)

convert pixelvalue to color

Page 31: Computer Graphics (CS 4731) Lecture Introduction to Graphicsweb.cs.wpi.edu/~emmanuel/courses/cs4731/A14/slides/lecture01.pdf · Computer Graphics (CS 4731) ... Lots of math, linear

References Angel and Shreiner, Interactive Computer Graphics (6th

edition), Chapter 1 Hill and Kelley, Computer Graphics using OpenGL (3rd

edition), Chapter 1