Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in...

4
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2010 Tamara Munzner http://www.ugrad.cs.ubc.ca/~cs314/Vjan2010 Viewing/Projection V, Vision/Color Week 5, Mon Feb 1 2 Department of Computer Science Undergraduate Events Events this week Resume Editing Drop-In Session Date: Mon., Feb 1 Time: 11 am – 2 pm Location: Rm 255, ICICS/CS EADS Info Session Date: Mon., Feb 1 Time: 3:30 – 5:30 pm Location: CEME 1202 Job Interview Practice Session (for non-coop students) Date: Tues., Feb 2 Time: 11 am – 1 pm Location: Rm 206, ICICS/CS RIM Info Session Date: Thurs., Feb 4 Time: 5:30 – 7 pm Location: DMP 110 Events next week Finding a Summer Job or Internship Info Session Date: Wed., Feb 10 Time: 12 pm Location: X836 Masters of Digital Media Program Info Session Date: Thurs., Feb 11 Time: 12:30 – 1:30 pm Location: DMP 201 3 Project 1 Grading News don’t forget to show up 5 min before your slot see news item on top of course page for signup sheet scan if you have not signed up or need to change your time, contact shailen AT cs.ubc.ca you will lose marks if we have to hunt you down! 4 Review: Perspective Warp/Predistortion perspective viewing frustum predistorted to cube orthographic rendering of warped objects in cube produces same image as perspective rendering of original frustum x x 5 Review: Separate Warp and Homogenize warp requires only standard matrix multiply distort such that orthographic projection of distorted objects shows desired perspective projection w is changed clip after warp, before divide division by w: homogenization CCS CCS NDCS NDCS alter w alter w / w / w VCS VCS projection projection transformation transformation viewing normalized device clipping perspective perspective division division V2C V2C C2N C2N 6 x z NDCS y (-1,-1,-1) (1,1,1) x=left x=right y=top y=bottom z=-near z=-far x VCS y z Review: Perspective to NDCS Derivation shear scale projection-normalization 7 Review: N2D Transformation x y viewport viewport NDC NDC 0 500 300 0 -1 1 1 -1 height width x y NDCS DCS 8 Review: Projective Rendering Pipeline OCS - object coordinate system WCS - world coordinate system VCS - viewing coordinate system CCS - clipping coordinate system NDCS - normalized device coordinate system DCS - device coordinate system OCS OCS WCS WCS VCS VCS CCS CCS NDCS NDCS DCS DCS modeling modeling transformation transformation viewing viewing transformation transformation projection projection transformation transformation viewport viewport transformation transformation alter w alter w / w / w object world viewing device normalized device clipping perspective perspective division division glVertex3f(x,y,z) glVertex3f(x,y,z) glTranslatef glTranslatef(x,y,z) (x,y,z) glRotatef(a,x,y,z glRotatef(a,x,y,z) .... .... gluLookAt gluLookAt(...) (...) glFrustum glFrustum(...) (...) glutInitWindowSize glutInitWindowSize(w,h) (w,h) glViewport glViewport(x,y,a,b) (x,y,a,b) O2W O2W W2V W2V V2C V2C N2D N2D C2N C2N 9 Perspective Example view volume left = -1, right = 1 bot = -1, top = 1 near = 1, far = 4 2n r " l 0 r + l r " l 0 0 2n t " b t + b t " b 0 0 0 "( f + n) f " n "2 fn f " n 0 0 "1 0 # $ % % % % % % % & ( ( ( ( ( ( ( 1 0 0 0 0 1 0 0 0 0 "5/3 "8/3 0 0 "1 0 # $ % % % % & ( ( ( ( 10 Perspective Example tracks in VCS: left x=-1, y=-1 right x=1, y=-1 view volume left = -1, right = 1 bot = -1, top = 1 near = 1, far = 4 z=-1 z=-4 x z VCS top view -1 -1 1 1 -1 NDCS (z not shown) real midpoint 0 xmax-1 0 DCS (z not shown) ymax-1 x=-1 x=1 11 Perspective Example / w / w x NDCS = "1/ z VCS y NDCS = 1/ z VCS z NDCS = 5 3 + 8 3z VCS 1 "1 "5z VCS /3" 8/3 "z VCS # $ % % % % & ( ( ( ( = 1 1 "5/3 "8/3 "1 # $ % % % % & ( ( ( ( 1 "1 z VCS 1 # $ % % % % & ( ( ( ( 12 OpenGL Example glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 45, 1.0, 0.1, 200.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 0.0, 0.0, -5.0 ); glPushMatrix() glTranslate( 4, 4, 0 ); glutSolidTeapot(1); glPopMatrix(); glTranslate( 2, 2, 0); glutSolidTeapot(1); OCS2 OCS2 O2W O2W VCS VCS modeling modeling transformation transformation viewing viewing transformation transformation projection projection transformation transformation object world viewing W2V W2V V2C V2C WCS WCS transformations that are applied to object first are specified last OCS1 OCS1 WCS WCS VCS VCS W2O W2O W2O W2O CCS CCS clipping CCS CCS OCS OCS 13 Viewing: More Camera Motion 14 Fly "Through The Lens": Roll/Pitch/Yaw 15 Viewing: Incremental Relative Motion how to move relative to current camera coordinate system? what you see in the window computation in coordinate system used to draw previous frame is simple: incremental change I to current C at time k, want p' = I k I k-1 I k-2 I k-3 ... I 5 I 4 I 3 I 2 I 1 Cp each time we just want to premultiply by new matrix p’=ICp but we know that OpenGL only supports postmultiply by new matrix p’=CIp 16 Viewing: Incremental Relative Motion sneaky trick: OpenGL modelview matrix has the info we want! dump out modelview matrix with glGetDoublev() C = current camera coordinate matrix wipe the matrix stack with glIdentity() apply incremental update matrix I apply current camera coord matrix C must leave the modelview matrix unchanged by object transformations after your display call use push/pop using OpenGL for storage and calculation querying pipeline is expensive but safe to do just once per frame

Transcript of Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in...

Page 1: Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in cube produces same image as perspective rendering of original frustum x 5 Review:

University of British ColumbiaCPSC 314 Computer Graphics

Jan-Apr 2010

Tamara Munzner

http://www.ugrad.cs.ubc.ca/~cs314/Vjan2010

Viewing/Projection V, Vision/Color

Week 5, Mon Feb 1

2

Department of Computer ScienceUndergraduate Events

Events this weekResume Editing Drop-In SessionDate: Mon., Feb 1Time: 11 am – 2 pmLocation: Rm 255, ICICS/CSEADS Info SessionDate: Mon., Feb 1Time: 3:30 – 5:30 pmLocation: CEME 1202Job Interview Practice Session

(for non-coop students)Date: Tues., Feb 2Time: 11 am – 1 pmLocation: Rm 206, ICICS/CS

RIM Info SessionDate: Thurs., Feb 4Time: 5:30 – 7 pmLocation: DMP 110Events next weekFinding a Summer Job or

Internship Info SessionDate: Wed., Feb 10Time: 12 pmLocation: X836Masters of Digital Media

Program Info SessionDate: Thurs., Feb 11Time: 12:30 – 1:30 pmLocation: DMP 201 3

Project 1 Grading News• don’t forget to show up 5 min before your slot

• see news item on top of course page for signupsheet scan

• if you have not signed up or need to change yourtime, contact shailen AT cs.ubc.ca• you will lose marks if we have to hunt you down!

4

Review: Perspective Warp/Predistortion• perspective viewing frustum predistorted to cube• orthographic rendering of warped objects in cube

produces same image as perspective renderingof original frustum x

x

5

Review: Separate Warp and Homogenize

• warp requires only standard matrix multiply• distort such that orthographic projection of distorted

objects shows desired perspective projection• w is changed

• clip after warp, before divide• division by w: homogenization

CCSCCSNDCSNDCS

alter walter w / w/ w

VCSVCSprojectionprojection

transformationtransformation

viewing normalizeddevice

clipping

perspectiveperspectivedivisiondivision

V2CV2C C2NC2N

6

x

z

NDCS

y

(-1,-1,-1)

(1,1,1)x=left

x=right

y=top

y=bottom z=-near z=-farx

VCS

y

z

Review: Perspective to NDCS Derivation

• shear• scale• projection-normalization

7

Review: N2D Transformation

xxyy

viewportviewportNDCNDC

0 500

300

0

-11

1

-1height

width

xx

yy

NDCS DCS

8

Review: Projective Rendering Pipeline

OCS - object coordinate system

WCS - world coordinate system

VCS - viewing coordinate system

CCS - clipping coordinate system

NDCS - normalized device coordinate system

DCS - device coordinate system

OCSOCS WCSWCS VCSVCS

CCSCCS

NDCSNDCS

DCSDCS

modelingmodelingtransformationtransformation

viewingviewingtransformationtransformation

projectionprojectiontransformationtransformation

viewportviewporttransformationtransformation

alter walter w

/ w/ w

object world viewing

device

normalizeddevice

clipping

perspectiveperspectivedivisiondivision

glVertex3f(x,y,z)glVertex3f(x,y,z)

glTranslatefglTranslatef(x,y,z)(x,y,z)glRotatef(a,x,y,zglRotatef(a,x,y,z))........

gluLookAtgluLookAt(...)(...)

glFrustumglFrustum(...)(...)

glutInitWindowSizeglutInitWindowSize(w,h)(w,h)glViewportglViewport(x,y,a,b)(x,y,a,b)

O2WO2W W2VW2V V2CV2C

N2DN2D

C2NC2N

9

Perspective Example

view volume• left = -1, right = 1• bot = -1, top = 1• near = 1, far = 4

!

2n

r " l0

r + l

r " l0

02n

t " b

t + b

t " b0

0 0"( f + n)

f " n

"2 fn

f " n0 0 "1 0

#

$

% % % % % % %

&

'

( ( ( ( ( ( (

!

1 0 0 0

0 1 0 0

0 0 "5 /3 "8 /3

0 0 "1 0

#

$

% % % %

&

'

( ( ( (

10

Perspective Example

tracks in VCS: left x=-1, y=-1 right x=1, y=-1

view volume left = -1, right = 1 bot = -1, top = 1 near = 1, far = 4

z=-1

z=-4

x

zVCS

top view

-1-1 1

1

-1NDCS

(z not shown)

realmidpoint

0 xmax-10DCS

(z not shown)

ymax-1

x=-1 x=1

11

Perspective Example

/ w/ w

!

xNDCS = "1/zVCS

yNDCS =1/zVCS

zNDCS =5

3+

8

3zVCS

!

1

"1

"5zVCS/3" 8 /3

"zVCS

#

$

% % % %

&

'

( ( ( (

=

1

1

"5 /3 "8 /3

"1

#

$

% % % %

&

'

( ( ( (

1

"1

zVCS

1

#

$

% % % %

&

'

( ( ( (

12

OpenGL Example

glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 45, 1.0, 0.1, 200.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glTranslatef( 0.0, 0.0, -5.0 ); glPushMatrix() glTranslate( 4, 4, 0 ); glutSolidTeapot(1); glPopMatrix(); glTranslate( 2, 2, 0); glutSolidTeapot(1);OCS2OCS2

O2WO2W VCSVCSmodelingmodeling

transformationtransformationviewingviewing

transformationtransformationprojectionprojection

transformationtransformation

object world viewingW2VW2V V2CV2CWCSWCS

• transformations thatare applied to objectfirst are specifiedlastOCS1OCS1

WCSWCS

VCSVCS

W2OW2O

W2OW2O

CCSCCSclipping

CCSCCS

OCSOCS

13

Viewing: More Camera Motion

14

Fly "Through The Lens": Roll/Pitch/Yaw

15

Viewing: Incremental Relative Motion• how to move relative to current camera coordinate system?

• what you see in the window• computation in coordinate system used to draw previous

frame is simple:• incremental change I to current C• at time k, want p' = IkIk-1Ik-2Ik-3 ... I5I4I3I2I1Cp

• each time we just want to premultiply by new matrix• p’=ICp

• but we know that OpenGL only supports postmultiply by newmatrix

• p’=CIp

16

Viewing: Incremental Relative Motion• sneaky trick: OpenGL modelview matrix has the info we

want!• dump out modelview matrix with glGetDoublev()

• C = current camera coordinate matrix• wipe the matrix stack with glIdentity()• apply incremental update matrix I• apply current camera coord matrix C

• must leave the modelview matrix unchanged by objecttransformations after your display call• use push/pop

• using OpenGL for storage and calculation• querying pipeline is expensive

• but safe to do just once per frame

Page 2: Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in cube produces same image as perspective rendering of original frustum x 5 Review:

17

Caution: OpenGL Matrix Storage

• OpenGL internal matrix storage iscolumnwise, not rowwisea e i mb f j nc g k od h l p

• opposite of standard C/C++/Java convention• possibly confusing if you look at the matrix

from glGetDoublev()!

18

Viewing: Virtual Trackball

• interface for spinning objects around• drag mouse to control rotation of view volume

• orbit/spin metaphor• vs. flying/driving

• rolling glass trackball• center at screen origin, surrounds world• hemisphere “sticks up” in z, out of screen• rotate ball = spin world

19

Virtual Trackball

• know screen click: (x, 0, z)• want to infer point on trackball: (x,y,z)

• ball is unit sphere, so ||x, y, z|| = 1.0• solve for y

eye

image plane20

Trackball Rotation• correspondence:

• moving point on plane from (x, 0, z) to (a, 0, c)• moving point on ball from p1 =(x, y, z) to p2 =(a, b, c)

• correspondence:• translating mouse from p1 (mouse down) to p2 (mouse up)• rotating about the axis n = p1 x p2

21

Trackball Computation• user defines two points

• place where first clicked p1 = (x, y, z)• place where released p2 = (a, b, c)

• create plane from vectors between points, origin• axis of rotation is plane normal: cross product

• (p1 - o) x (p2 - o): p1 x p2 if origin = (0,0,0)• amount of rotation depends on angle between

lines• p1 • p2 = |p1| |p2| cos θ• |p1 x p2 | = |p1| |p2| sin θ

• compute rotation matrix, use to rotate world22

Picking

23

Reading

• Red Book• Selection and Feedback Chapter

• all• Now That You Know Chapter

• only Object Selection Using the Back Buffer

24

Interactive Object Selection• move cursor over object, click

• how to decide what is below?• inverse of rendering pipeline flow

• from pixel back up to object• ambiguity

• many 3D world objects map to same 2D point• four common approaches

• manual ray intersection• bounding extents• backbuffer color coding• selection region with hit list

25

Manual Ray Intersection• do all computation at application level

• map selection point to a ray• intersect ray with all objects in scene.

• advantages• no library dependence

• disadvantages• difficult to program• slow: work to do depends on total number and

complexity of objects in scene

xVCS

y

26

Bounding Extents• keep track of axis-aligned bounding

rectangles

• advantages• conceptually simple• easy to keep track of boxes in world space

27

Bounding Extents• disadvantages

• low precision• must keep track of object-rectangle relationship

• extensions• do more sophisticated bound bookkeeping

• first level: box check.• second level: object check

28

Backbuffer Color Coding

• use backbuffer for picking• create image as computational entity• never displayed to user

• redraw all objects in backbuffer• turn off shading calculations• set unique color for each pickable object

• store in table• read back pixel at cursor location

• check against table

29

• advantages• conceptually simple• variable precision

• disadvantages• introduce 2x redraw delay• backbuffer readback very slow

Backbuffer Color Coding

30

for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) { glPushMatrix(); switch (i*2+j) { case 0: glColor3ub(255,0,0);break; case 1: glColor3ub(0,255,0);break; case 2: glColor3ub(0,0,255);break; case 3: glColor3ub(250,0,250);break; } glTranslatef(i*3.0,0,-j * 3.0) glCallList(snowman_display_list); glPopMatrix();}

glColor3f(1.0, 1.0, 1.0);for(int i = 0; i < 2; i++)

for(int j = 0; j < 2; j++) { glPushMatrix(); glTranslatef(i*3.0,0,-j * 3.0); glColor3f(1.0, 1.0, 1.0); glCallList(snowman_display_list); glPopMatrix();

}

Backbuffer Example

http://www.lighthouse3d.com/opengl/picking/31

Select/Hit

• use small region around cursor for viewport• assign per-object integer keys (names)• redraw in special mode• store hit list of objects in region• examine hit list

• OpenGL support

32

Viewport

• small rectangle around cursor• change coord sys so fills viewport

• why rectangle instead of point?• people aren’t great at positioning mouse

• Fitts’ Law: time to acquire a target isfunction of the distance to and size of thetarget

• allow several pixels of slop

Page 3: Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in cube produces same image as perspective rendering of original frustum x 5 Review:

33

• nontrivial to compute• invert viewport matrix, set up new orthogonal

projection• simple utility command

• gluPickMatrix(x,y,w,h,viewport)• x,y: cursor point• w,h: sensitivity/slop (in pixels)

• push old setup first, so can pop it later

Viewport

34

Render Modes

• glRenderMode(mode)

• GL_RENDER: normal color buffer• default

• GL_SELECT: selection mode for picking

• (GL_FEEDBACK: report objects drawn)

35

Name Stack

• again, "names" are just integers glInitNames()• flat list glLoadName(name)• or hierarchy supported by stack glPushName(name), glPopName

• can have multiple names per object

36

for(int i = 0; i < 2; i++) { glPushName(i); for(int j = 0; j < 2; j++) { glPushMatrix(); glPushName(j); glTranslatef(i*10.0,0,j * 10.0); glPushName(HEAD); glCallList(snowManHeadDL); glLoadName(BODY); glCallList(snowManBodyDL); glPopName(); glPopName(); glPopMatrix(); } glPopName();}

Hierarchical Names Example

http://www.lighthouse3d.com/opengl/picking/

37

Hit List• glSelectBuffer(buffersize, *buffer)

• where to store hit list data• on hit, copy entire contents of name stack to output buffer.• hit record

• number of names on stack• minimum and minimum depth of object vertices

• depth lies in the NDC z range [0,1]• format: multiplied by 2^32 -1 then rounded to nearest int

38

Integrated vs. Separate Pick Function

• integrate: use same function to draw and pick• simpler to code• name stack commands ignored in render mode

• separate: customize functions for each• potentially more efficient• can avoid drawing unpickable objects

39

Select/Hit• advantages

• faster• OpenGL support means hardware acceleration• avoid shading overhead

• flexible precision• size of region controllable

• flexible architecture• custom code possible, e.g. guaranteed frame rate

• disadvantages• more complex

40

Hybrid Picking

• select/hit approach: fast, coarse• object-level granularity

• manual ray intersection: slow, precise• exact intersection point

• hybrid: both speed and precision• use select/hit to find object• then intersect ray with that object

41

OpenGL Precision Picking Hints• gluUnproject

• transform window coordinates to object coordinatesgiven current projection and modelview matrices

• use to create ray into scene from cursor location• call gluUnProject twice with same (x,y) mouse

location• z = near: (x,y,0)• z = far: (x,y,1)• subtract near result from far result to get direction

vector for ray• use this ray for line/polygon intersection

42

Vision/Color

43

Reading for Color

• RB Chap Color

• FCG Sections 3.2-3.3• FCG Chap 20 Color• FCG Chap 21.2.2 Visual Perception (Color)

44

RGB Color

• triple (r, g, b) represents colors with amountof red, green, and blue• hardware-centric• used by OpenGL

45

Alpha

• fourth component for transparency• (r,g,b,α)

• fraction we can see through• c = αcf + (1-α)cb

• more on compositing later

46

Additive vs. Subtractive Colors

• additive: light• monitors, LCDs• RGB model

• subtractive: pigment• printers• CMY model• dyes absorb

light

!!!

"

#

$$$

%

&

'

!!!

"

#

$$$

%

&

=

!!!

"

#

$$$

%

&

B

G

R

Y

M

C

1

1

1

additive subtractive47

Component Color• component-wise multiplication of colors

• (a0,a1,a2) * (b0,b1,b2) = (a0*b0, a1*b1, a2*b2)

• why does this work?• must dive into light, human vision, color spaces

48

Basics Of Color

• elements of color:

Page 4: Project 1 Grading Newstmm/courses/314/Vjan2010/... · ¥orthographic rendering of warped objects in cube produces same image as perspective rendering of original frustum x 5 Review:

49

Basics of Color• physics

• illumination• electromagnetic spectra

• reflection• material properties• surface geometry and microgeometry

• polished versus matte versus brushed

• perception• physiology and neurophysiology• perceptual psychology

50

Light Sources• common light sources differ in kind of spectrum

they emit:• continuous spectrum

• energy is emitted at all wavelengths• blackbody radiation• tungsten light bulbs• certain fluorescent lights• sunlight• electrical arcs

• line spectrum• energy is emitted at certain discrete frequencies

51

Blackbody Radiation• black body

• dark material, so that reflection can be neglected• spectrum of emitted light changes with temperature

• this is the origin of the term “color temperature”• e.g. when setting a white point for your monitor

• cold: mostly infrared• hot: reddish• very hot: bluish

• demo:

http://www.mhhe.com/physsci/astronomy/applets/Blackbody/frame.html 52

Electromagnetic Spectrum

53

Electromagnetic Spectrum

54

White Light

• sun or light bulbs emit all frequencies withinvisible range to produce what we perceive as"white light"

55

Sunlight Spectrum

• spectral distribution: power vs. wavelength

56

ContinuousSpectrum

• sunlight• various “daylight”

lamps

57

Line Spectrum

• ionizedgases

• lasers• some

fluorescentlamps

58

White Light and Color

• when white light is incident upon an object,some frequencies are reflected and some areabsorbed by the object

• combination of frequencies present in thereflected light that determines what weperceive as the color of the object

59

Hue• hue (or simply, "color") is dominant

wavelength/frequency

• integration of energy for all visible wavelengths isproportional to intensity of color

60

Saturation or Purity of Light• how washed out or how pure the color of the light

appears• contribution of dominant light vs. other frequencies

producing white light• saturation: how far is color from grey

• pink is less saturated than red• sky blue is less saturated than royal blue

61

Intensity vs. Brightness

• intensity : physical term• measured radiant energy emitted per unit of

time, per unit solid angle, and per unitprojected area of the source (related to theluminance of the source)

• lightness/brightness: perceived intensity oflight• nonlinear

62

Perceptual vs. Colorimetric Terms• Perceptual

• Hue

• Saturation

• Lightness• reflecting objects

• Brightness• light sources

• Colorimetric

• Dominant wavelength

• Excitation purity

• Luminance

• Luminance