cs 248 assignment 1 paint program introduction to computer graphics help session presented by georg...

26
CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Introduction to Computer Graphics Help Session Session presented by Georg Petschnigg presented by Georg Petschnigg Stanford University Stanford University October 4, 2002 October 4, 2002

Post on 21-Dec-2015

218 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

CS 248 Assignment 1Paint Program

Introduction to Computer Graphics Help SessionIntroduction to Computer Graphics Help Sessionpresented by Georg Petschniggpresented by Georg PetschniggStanford UniversityStanford UniversityOctober 4, 2002October 4, 2002

Page 2: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

2

Session Overview

• Getting StartedGetting Started

• Assignment DiscussionAssignment Discussion• Overpainting Brush

• Tinting Brush

• Brush Visualization

• Grading DetailsGrading Details

• Extra CreditExtra Credit

• QuestionsQuestions

Page 3: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

3

Getting Started

1.1. Read assignment carefullyRead assignment carefully

2.2. Go to review sessionGo to review session

3.3. Familiarize yourself with Sweet Hall LabFamiliarize yourself with Sweet Hall LabLocated in the Basement of Sweet HallLocated in the Basement of Sweet Hall

Page 4: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

4

Development Environment

• Ways to work with TA SupportWays to work with TA Support• Go to Sweet Hall Lab (Best Way – 5 Minutes)

• Work Remotely (Good Way – 5 Minutes)

• Ways to work without TA supportWays to work without TA support• Reproduce Sweet Hall Lab development

environment on you own Machine (1 Hour)

• Your code still has to work on the Sweet Hall machines (more risk for you)

Page 5: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

5

Sweet Hall

1. Pick a free computer, Log on

2. Copy assignment from usr/class/cs248/assignments/assignment1/ to local directory

3. Run ‘make’

4. Run ‘./paint.i386-linux’

Page 6: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

6

Working Remotely

1. ssh to firebird, raptor or leland

2. Export the display

3. Follow instructions on previous slide

>ssh raptor1.stanford.edu>setenv DISPLAY yourIP:0.0>xterm &

Demo: Using Sampson, PC-Leland, X-Win32, AFS Service on Demo: Using Sampson, PC-Leland, X-Win32, AFS Service on

WindowsXP, make an run assignment..WindowsXP, make an run assignment..

Page 7: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

7

Assignment Discussion

• You are going to write a paint programYou are going to write a paint program• Teaches you 2D Raster Graphics

• Visualize concepts learned in Class (Brushes, HSV)

• This assignment is a lot of fun

• Be creative with extra credit

• The next slides follow the Assignment The next slides follow the Assignment (Handout #3) step by step(Handout #3) step by step• Reminder: Read the assignment

Page 8: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

8

Part 1: Over Painting Brush

• Rectangular Overpainting BrushRectangular Overpainting Brush• Like Microsoft Paint or “Pencil Tool” in PhotoShop

• Color Picker for RGB, HSVColor Picker for RGB, HSV• See http://www.ewertb.com/java/Java_ColorPicker.html or any

commercial Paint Program

• Value (1.0 bright, 0.0 black)• Saturation

(1.0 strong hue, 0.0 faded hue)

• Size Control for BrushSize Control for Brush

Demo: Painting, Picking Colors in PhotoShop Demo: Painting, Picking Colors in PhotoShop

Page 9: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

9

Part 1: Basic Painting Loop

Brush region

Brush region

Page 10: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

10

Part 1: Over Painting Brush

• Once you are done with Part 1 you should Once you are done with Part 1 you should be able to draw some basic imagesbe able to draw some basic images

• Notice the hard edges and jaggies around Notice the hard edges and jaggies around the stroke… this is what Part 2 will fixthe stroke… this is what Part 2 will fix

Demo: Show Jaggies using SnoopDemo: Show Jaggies using Snoop

Page 11: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

11

Part 2: Tinting Brush

• Implement Weighted Mask Driven Brush Implement Weighted Mask Driven Brush as described in Handout #4as described in Handout #4• Instead of a rectangular brush, have it gently

“blend” to its surroundings. Use HSV interpolation

• Checkboxes for interpolating along H,S,V Checkboxes for interpolating along H,S,V axis axis • Allow all permutations HSV, HS, HV, SV, H, S, V

• Choose a mask function an give use Choose a mask function an give use control over itcontrol over it• Make sure it gradually falls of to zero at the edge!

Page 12: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

12

Part 2: Weighted Blending

Like painting with partially transparent paint. Like painting with partially transparent paint. Commonly referred to as “alpha” blending.Commonly referred to as “alpha” blending.

Cnew = (1-) Cold + Cpaint

Compositing equationCompositing equation

Page 13: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

13

Part 2: Mask driven painting

Lookup array determines how each pixel in the Lookup array determines how each pixel in the brush is affected.brush is affected.

Paint every pixel in the brush region

Paint only some of the pixels

Page 14: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

14

Part 2: Weighted mask driven painting

Mask contains alpha/weight for each pixel in brushMask contains alpha/weight for each pixel in brush

Page 15: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

15

Part 2: RGB vs. HSV interpolation

NewR = (1-NewR = (1-) CanvasR + ) CanvasR + PaintR PaintRNewG = (1-NewG = (1-) CanvasG + ) CanvasG + PaintG PaintGNewB = (1-NewB = (1-) CanvasB + ) CanvasB + PaintB PaintB

NewH = (1-NewH = (1-) CanvasH + ) CanvasH + PaintH PaintHNewS = (1-NewS = (1-) CanvasS + ) CanvasS + PaintS PaintSNewV = (1-NewV = (1-) CanvasV + ) CanvasV + PaintV PaintV

RGBRGB interpolationinterpolation

HSV interpolationHSV interpolation

Page 16: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

16

Hue

Sat

urat

ion

Part 2: RGB vs. HSV interpolation

Page 17: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

17

Hue

Sat

urat

ion HSV

RGB

Part 2: RGB vs. HSV interpolation

Page 18: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

18

Part 2: Math Example

• Interpolating half way between Red and Interpolating half way between Red and Cyan (Cyan ( = 0.5) = 0.5)

• NewColor = 0.5 Cyan + 0.5 RedNewColor = 0.5 Cyan + 0.5 Red

RR GG BB HH SS VV

CyanCyan 0.00.0 1.01.0 1.01.0 180180 1.01.0 1.01.0

RedRed 1.01.0 0.00.0 0.00.0 00 1.01.0 1.01.0

InterpolationInterpolation 0.50.5 0.50.5 0.50.5 9090 1.01.0 1.01.0

50% Gray Greenish

Page 19: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

19

Part 2: HSV Checkboxes

• Choose which HSV components to affect.Choose which HSV components to affect.

• Allow for any combination.Allow for any combination.

if (H_check) { NewH = (1-) CH + PaintH }if (S_check) { NewS = (1-) CS + PaintS }if (V_check) { NewV = (1-) CV + PaintV }

Page 20: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

20

Part 2: Sample Images

Image showing H, S, and V Tinting

Overpainting #1 vs. Weighted Mask

driven painting #2

Page 21: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

21

Part 3: Brush Visualization

• Brush Visualization should tell user what Brush Visualization should tell user what its color, falloff and size isits color, falloff and size is• Brush should always be visible regardless of color

• Draw 1x (actual size) and 4x (four times larger in x and y) versions of the brush

• Make the larger version discretized – that is it should be a choppy/chunky/pixel replicated version of the actual brush (think xmag, snoop)

• Make sure this visualization will help you explain to user, TAs, Professor and yourself how the brush weights affect drawing

Page 22: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

22

Requirements

• Correctness (40%)Correctness (40%)• Don’t crash

• Implement all required features

• (Read the directions like a lawyer)

• Efficiency (20 %)Efficiency (20 %)• No noticeable lag while using your application

• User Interface (20%)User Interface (20%)

• Programming Style (20%)Programming Style (20%)• Copying code (Don’t do it)

• Submitting with ‘/usr/class/cs248/bin/submit’Submitting with ‘/usr/class/cs248/bin/submit’

Page 23: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

23

Paint Program 1973

Source: Dick Shoup “SuperPaint: An Early Frame Buffer Graphics System” IEEE Annals of the History of Computing, Vol 23, No 2, Apr-Jun 2001

Page 24: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

24

Extra credit example

Blurring the image under the brush.Blurring the image under the brush.

Page 25: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

25

Extra credit inspiration

• Demo of Painter’s fancy brushesDemo of Painter’s fancy brushes

• Download Trial from Download Trial from www.procreate.comwww.procreate.com

Page 26: CS 248 Assignment 1 Paint Program Introduction to Computer Graphics Help Session presented by Georg Petschnigg Stanford University October 4, 2002

26

Questions?

• Ask nowAsk now

• Come to Office HoursCome to Office Hours

• Email: Email: [email protected]@graphics.stanford.edu

• Remember: Computer Graphics is fun - if Remember: Computer Graphics is fun - if you are not having fun ask TAs for helpyou are not having fun ask TAs for help