csc 8470 computer graphicsmdamian/past/graphicsfa10/notes/01-introduction.pdfcsc 8470 computer...

Post on 14-Mar-2020

26 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CSC 8470Computer Graphics

What is Computer Graphics?

For us, it is primarily the study of how pictures can be generated using a computer.

But it also includes: – software tools used to make pictures

– hardware for efficient graphics processing

– input devices for interacting with these pictures

– output devices for displaying the pictures

Graphics Application: Information Visualization

GOAL:– Visualization of complex multidimensional data

for analysis and presentation.

Examples:– Clinical trial data

– Business consultancy data

Graphics application: Direct Volume Rendering

GOAL:– Visualization of highly complex data

Texture adds a high visual dimension

Graphics Application: Biomedical Visualization

GOAL:– Improve the perception, analysis, understanding

of interactions between complex data

Graphics Application:Virtual Reality

GOAL:– Design effective simulation and education

applications by combining real and virtual elements

– Reduce cost & improve safety of applications

Graphics Application: Computer Aided Design

GOAL:– Develop novel interfaces for the efficient design of

products, scenes and characters. In general focus is on real-time performance and rapid prototyping, and/or visual realism.

Graphics Application: Advertisements

Graphics Application: Arts and Publishing

Graphics Application: Everyday Use

Course Goals

Learn the Process of Creating an Image

Learn Animation Basics

Animation Example

Data Crunching behind Avatar

Tools we Will Use

www.blender.org

www.opengl.org

www.povray.org

Main Topics

Basic Graphics Concepts

Graphics System and Architecture

Algorithms for simple graphics

Geometric Objects and Transformations

Viewing and Projection

Shading and Rendering

Texture Mapping

Lighting and Ray Tracing

Resources

Recommended:

Online material– References on the

class website

Grading

Assignments (60%)– Pencil and paper– Clean, readable, working code– On time (no late submission)– First assignment is available now

Exam (30%)Class Participation (10%)No makeup assignments or examsLecture attendance is mandatory

Any questions before we start?

Graphics Systems Basics

What is a digital image?Pixel:

Raster image:

Pixel Depth

Pixel depth:

Effect of Pixel Depth

Banding:

____ bits____ bits____ bits

Effect of Pixel Depth

Source: Wikipedia, http://en.wikipedia.org/wiki/Pixel_depth

2 bits (4 colors) 4 bits (16 colors)

Raster Displays

Path of electron beam

Display surface: Dotted with material that emits light when stimulated by electron beam. Beam must repeatedly stimulate dots row by row, b/c intensity fades when not stimulated.

Refresh rate:

Resolution:

Light

White light:

Raster Displays Revisited

LCD displaysLCD:

Color Models

Additive Color Model:

Subtractive Color Model:

Color Raster Images

Pixel color is encoded as ordered triple.

Color value (R,G,B)

Displayed

(0, 0, 0) Black

(0, 0, 1) Blue

(0, 1, 0) Green

(1, 0, 0) Red

(1, 0, 1) Magenta

(1, 1, 0) Yellow

(0, 1, 1) Cyan

(1, 1, 1) White

Frame Buffer

CPU Main Memory Graphics Card

-- Graphics Processing Unit(GPU)

-- Frame Buffer

System Bus

Special memory where pixel colors are stored.

Modeling-Rendering Paradigm

Modeling Rendering

The Concept of Pipeline

* +

b

c

a

Graphics Pipeline

VertexProcessor Clipper Rasterizer

FragmentProcessor

3D VerticesRasterImage

ALL done by the GPU on the graphics card!

Hands-On Session

A cross-platform Application Programming Interface (API) for producing 2D and 3D computer graphics

Developed by Silicon Graphics Inc. (1992)

See: http://www.opengl.org

OpenGL Graphics Programming

OpenGL– Industry standard API for 3D graphics

– Cross-platform – Windows, MAC, Unix

– Supported on all hardware platforms

OpenGL API (gl)– core of OpenGL API

OpenGL Utility API (glu)– additional functionality built on top of GL

OpenGL Utility Toolkit (glut)– Handles the windowing system, menus, events, etc.

Hands-on Activities

In the future you will write your own OpenGL program, but this time you’ll copy an existing program (squares.cpp) from the course website.

Get the activities handout from your instructor.

OpenGL Introduction

OpenGL Geometric Primitives

OpenGL Attributes

Sierpinski’s Triangle

Points, Lines, Polygons

Vertices

A vertex is a location in the plane – Specified by its x and y coordinates

– Used to define geometric primitives

– The simplest geometric primitive is a point

General form: glVertex*– Examples:

• glVertex2i(int x, int y);

• glVertex3f(float x, float y, float z);

• glVertex3fv(float vcoord);

glVertex*

OpenGL Primitives

glBegin( GL_POINTS );glVertex2i(100, 100);glVertex2i(400, 100);glVertex2i(250, 400);

glEnd(); x

y

500

500

x

y

500

500glBegin( GL_LINE_LOOP );glVertex2i(100, 100);glVertex2i(400, 100);glVertex2i(250, 400);

glEnd(); 

Many Questions

How to interpret the values of x, y?

In what units are they? Feet, meters or pixels?

Where is the origin?

Where on the screen does our image appear?

How large will the image be?

In what color are we drawing?

Screen (Graphics) vs. Viewing (Clipping) Window

glutInitWindowSize(600, 500);

glutInitPosition(200, 150);

glOrtho2D(0, 600, 0, 500);

x

y

screen win

viewing windowx

y

OpenGL Attributes

Examples:

glColor3f( 1.0, 0.0, 0.0 );

glClearColor( 1.0, 1.0, 1.0, 1.0 );

glPointSize( 4.0 );

glLineWidth( 2.0 );

Once an attribute is set, it stays that value until you later change it.

Hands-On SessionThe primitives.cpp ProgramCompile, Run & Play, eg:– Change point size to 8

– Change `GL_POINTS’ to:• GL_LINES

• GL_LINE_STRIP

• GL_LINE_LOOP

• GL_POLYGON

• GL_QUADS

• GL_TRIANGLES

• GL_QUAD_STRIP

• GL_TRIANGLE_STRIP

• GL_TRIANGLE_FAN

The Sierpinski Gasket

Algorithm:

Start with 3 corner vertices v1, v2, v3 and one interior point p

Repeat the following

Hands-on Session

The gasket.cpp Program

Compile, Run & Play

Change ‘GL_POINTS’ to GL_LINES

Comment out certain lines, e.g.– glClear(GL_COLOR_BUFFER_BIT);

(and resize your window)

What happens when you resize your window?

Sierpinski Gasket -- Triangle Bisection

Algorithm:

Start with 3 corner vertices v1, v2, v3 Repeat the following

Hands-on Session

Save a copy of your gasket.cpp code

Alter the code for the gasket to generate the Sierpinski gasket using triangle bisection

top related