CS380: Introduction to Computer Graphics Projection Chapter 10...
Transcript of CS380: Introduction to Computer Graphics Projection Chapter 10...
18/04/12
1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
CS380:IntroductiontoComputerGraphicsProjectionChapter10
MinH.KimKAISTSchoolofComputing
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
SUMMARYSmoothInterpolation
2
18/04/12
2
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
CubicBezierSpline• Toevaluatethefunctionatanyvalueof,weperformthefollowingsequenceoflinearinterpolations:
3
c(t) t
f = (1− t)c0 + td0g = (1− t)d0 + te0h = (1− t)e0 + tc0m = (1− t) f + tgn = (1− t)g + thc(t) = (1− t)m + tn
when t = 0.3
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
CubicBezierSpline• Let’stakethefirst-orderderivatives:
• Weseethat• Weseeindeedthattheslopeofmatchestheslopeofthecontrolpolygonat0and1.
4
c(t)= c0(1−t)3+3d0t(1−t)2+3e0t2(1−t)+c1t3
′c (t) = 3c1t2 − 3e0t
2 − 3c0 (t −1)2 + 3d0 (t −1)
2 − 6e0t(t −1)+ 3d0t(2t − 2)
symsabcdtf(t)=a*(1-t)^3+3*b*t*(1-t)^2+3*c*t^2*(1-t)+d*t^3df=diff(f)df(0)=3*b-3*adf(1)=3*d-3*c
′c (0) = 3(d0 − c0 ), ′c (1) = 3(c1 − e0 )c(t)
18/04/12
3
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Catmull-RomSplines(CRS)• Thisalsocanbestatedas
• Sinceand,intheBezierrepresentation,thistellsusthatweneedtoset:
5
′c (t) i+1 =12ci+2 − ci( )
′c (i) = 3(di − ci ) ′c (i +1) = 3(ci+1 − ei )
di =
16 ci+1 −ci−1( )+ci
ei =−16 ci+2−ci( )+ci+1
′c (t) i =12ci+1 − ci−1( )
cidi
ei ci+1
ci−1
ci+2c(t)= ci(1−t)
3+3dit(1−t)2+3eit2(1−t)+ci+1t3
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Curves• Wecancleanlyapplythescalartheorytodescribecurvesintheplaneorspace.
• Thesplinecurveiscontrolledbyasetofcontrolpointsin2Dor3D.
6
ciBeziercurve(2D) Catmull-Romcurve(2D)
18/04/12
4
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
QuaternionSplining• Bezierevaluationstepsoftheform:
• Become:• Andtheequationvaluesaredefinedas
• Inordertointerpolate“theshortway”,wedoconditionalnegationonbeforeapplyingthepoweroperator.
7
r = (1− t)p + tq
r = slerp(p, q, t)di and ei
ei = ((ci+2ci−1)−1/6 )ci+1
di = ((ci+1ci−1−1 )1/6 )ci
(ci+1ci−1−1 )
⇐ di =16ci+1 − ci−1( ) + ci
⇐ ei =−16
ci+2 − ci( ) + ci+1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
PROJECTIONChapter10
8
Chapters1—10Object&Animation
Chapters10—13Camera
18/04/12
5
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
RECAP:Modelviewmatrix• Modelviewmatrix(MVM)
– Describestheorientationandpositionoftheviewandtheorientationandpositionoftheobjectwithrespecttotheeyeframe
– Thevertexshaderwilltakethesevertexdataandperformthemultiplication,producingtheeyecoordinatesusedinrendering
– uniformmat4uModelViewMatrix;
• normalMatrix()producestheinversetransposeofthelinearfactortogetuniformnormalNMVM– uniformmat4uNormalMatrix;
9
E−1OE−1
O
p =otc = wtOc = etE−1Oc
et
E−1Oc
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
RECAP:Stagesofvertextransformation
10
Modelviewmatrix
Projectionmatrix
Perspectivedivision
Viewporttransforma
tion
eyecoordinates
http://www.glprogramming.com/red/chapter03.html
clipcoordinates
normalizeddevicecoordinates
windowcoordinates
vertex
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
= E−1O
xoyozo1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
xoyozo1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
18/04/12
6
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
RECAP:Cameraprojection(overview)• Intrinsicpropertiesofthecamera(theeye)– Afieldofview– Windowaspectratio– Near/farfieldinZ(clipping)– Representedascamerafrustum
• sendProjectionMatrix:sendthecameramatrixtothevertexshader
• uniformmat4uProjMatrix;11
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
RECAP:Vertexshader• Takestheobjectcoordinatesofeveryvertexpositionandturnsthemintoeyecoordinates,aswellasthevertex’snormalcoordinates
12
#version130uniformMatrix4uModelViewMatrix;uniformMatrix4uNormalMatrix;uniformMatrix4uProjMatrix;invec3aColor;invec4aNormal;invec4aVertex;outvec3vColor;outvec3vNormal;outvec3vPosition;
voidmain(){vColor=aColor;vPosition=uModelViewMatrix*aVertex;vec4normal=vec4(aNormal.x,aNormal.y,aNormal.z,0.0);vNormal=vec3(uNormalMatrix*normal);gl_Position=uProjMatrix*vPosition;}
E−1Oc
PE−1OcForcamera(3Dàà2D)
18/04/12
7
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Cameratransforms• Untilnowwehaveconsideredallofourgeometryina3Dspace
• Ultimatelyeverythingendedupineyecoordinateswithcoordinates
• Wesaidthatthecameraisplacedattheoriginoftheeyeframe,andthatitislookingdowntheeye’snegativez-axis.
• Thissomehowproducesa2Dimage.• Wehadamagicmatrixwhichcreatedgl_Position• Nowwewillstudythisstep
13
[xe, ye, ze,1]t
et
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Pinholecameramodel
• Aslighttravelstowardsthefilmplane,mostisblockedbyanopaquesurfaceplacedattheplane.
• Butweplaceaverysmallholeinthecenterofthesurface,atthepointwitheyecoordinates
14
ze = 0
[0,0,0,1]t
[0,0,0,1]t
18/04/12
8
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Pinholecameramodel
• Onlyraysoflightthatpassthroughthispointreachthefilmplaneandhavetheirintensityrecordedonfilm.Theimageisrecordedatafilmplaneplacedat,say,
15
ze = 1
[0,0,0,1]t
ze = 1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Pinholecameramodel
– Aphysicalcameraneedsafiniteapertureandalens,butwewillignorethis.
• Toavoidtheimageflip,wecanmathematicallymodelthiswiththefilmplaneinfrontofthepinhole,sayatthe
16
ze = −1
[0,0,0,1]t
ze = −1
18/04/12
9
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Pinholecameramodel
• Ifweholdupthephotographattheplane,andobserveitwithourowneye,placedattheorigin,itwilllooktousjustliketheoriginscenewouldhave.
17
ze = −1
[0,0,0,1]t
ze = −1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Basicmathematicalmodel
• Letususenormalizedcoordinatestospecifypointsonourfilmplane.– Fornow,letthemmatcheyecoordinatesonthisfilmplane.
• Wheredoestherayfromtotheoriginhitsthefilmplane?
18
[xn , yn ]t
p
[0,0,0,1]t
p
18/04/12
10
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Basicmathematicalmodel
• Allpointsontherayhitthesamepixel.• Allpointsontherayareallscales• Sopointsonrayare:
19
[xe , ye ,ze ]t =α[xn , yn ,−1]t
[0,0,0,1]t
p
α
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Basicmathematicalmodel
• So• So
20
[xe, ye, ze ]t = −ze[xn , yn ,−1]
t
xn = − xeze, yn = − ye
ze
[0,0,0,1]t
−ze
ye p
18/04/12
11
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Projectionmatrix
• Wecanmodelthisexpressionasamatrixoperationasfollows.
21
1 0 0 00 1 0 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
xnwn
ynwn
−wn
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
xcyc−wc
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
[0,0,0,1]t
p
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Inmatrixform
• Therawoutputofthematrixmultiply,arecalledtheclipcoordinatesof.
• isanewvariablecalledthew-coordinate.– Insuchclipcoordinates,thefourthentryofthecoordinate4-vectorisnotnecessarilyazerooraone.
22
[0,0,0,1]t
[xc , yc ,−,wc ]t
pwn = wc
p
18/04/12
12
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dividebyw
• Wesaythatand.Ifwewanttoextractalone,wemustperformthedivision
• Thisrecoversourcameramodel
23
[0,0,0,1]t
xnwn = xcxn
ynwn = yc
p
1 0 0 00 1 0 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
xnwn
ynwn
−wn
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
xcyc−wc
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
xn =
xcwn
=xnwn
wn
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dividebyw
• Ouroutputcoordinates,withsubscripts‘n’,arecallednormalizeddevicecoordinates(NDC)becausetheyaddresspointsontheimageinabstractunitswithoutspecificreferencetonumbersofpixels.
24
[0,0,0,1]t
p
18/04/12
13
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dividebyw
• Wekeepalloftheimagedatainthecanonicalsquare,andultimatelymapthisontoawindowonthescreen.– Dataoutsideofthissquaredoesnotberecordedordisplayed.
– Thisisexactlythemodelweusedtodescribe2DOpenGL25
[0,0,0,1]t
−1≤ xn ≤ +1, −1≤ yn ≤ +1,
p
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Scales
26
ze = n n
[0,0,0,1]t
yn =1
yn =−1
• Bychangingtheentriesintheprojectionmatrix,wecanslightlyaltergeometryofthecameratransformation.
• Wecouldpushthefilmplaneoutto,whereissomenegativenumber(zoomlens)
18/04/12
14
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Scales
• Sopointsonrayare:• So• So
27
[xe , ye ,ze ]t =α[xn , yn ,zn]t
[xe , ye ,ze ]t =
zen[xn , yn ,zn]t
xn =xenze, yn =
yenze
[0,0,0,1]t
yn =1
yn =−1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Inmatrixform
• Inmatrixform,thisbecomes:
28
[0,0,0,1]t
xnwn
ynwn
−wn
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
−n 0 0 00 −n 0 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
(supposingnissomenegativenumber)
yn =1
yn =−1
yn =1
yn =−1
18/04/12
15
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Inmatrixform
• Notethismatrixisthesameas
29
[0,0,0,1]t
−n 0 0 00 −n 0 0− − − −0 0 0 1
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
1 0 0 00 1 0 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
yn =1
yn =−1
yn =1
yn =−1
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Inmatrixform
• Thishasthesameeffectasstartingwithouroriginalcamera,scalingby,andcroppingtothecanonicalsquare.
30
[0,0,0,1]t
−n
yn =1
yn =−1
yn =1
yn =−1
18/04/12
16
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
fovY
• Scalecanbedeterminedbyverticalangularfieldofviewofthedesiredcamera.
• Ifwewantourcameratohaveafieldofviewofdegrees,thenwecansetgivingus
31
[0,0,0,1]t
θ−n = 1
tan θ2
⎛⎝⎜
⎞⎠⎟
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
fovY
• Verifythatanypointwho’srayfromtheoriginformsaverticalangleofwiththenegativeaxismapstotheboundaryofthecanonicalsquare
32
[0,0,0,1]t
1
tan θ2
⎛⎝⎜
⎞⎠⎟
0 0 0
0 1
tan θ2
⎛⎝⎜
⎞⎠⎟
0 0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
θ / 2 z
18/04/12
17
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
fovY
• Thepointwitheyecoordinates:mapstonormalizeddevicecoordinates
33
[0,0,0,1]t
[0, tan θ2
⎛⎝⎜
⎞⎠⎟ ,−1,1]
t
[0,1]t
1
tan θ2
⎛⎝⎜
⎞⎠⎟
0 0 0
0 1
tan θ2
⎛⎝⎜
⎞⎠⎟
0 0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dealingwithaspectratio• Supposethewindowiswiderthanitishigh.Inourcameratransform,weneedtosquishthingshorizontallysoawiderhorizontalfieldofviewfitsintoourretainedcanonicalsquare.
• Whenthedataislatermappedtothewindow,itwillbestretchedoutcorrespondinglyandwillnotappeardistorted.
• Define,theaspectratioofawindow,tobeitswidthdividedbyitsheight(measuredsayinpixels).
34
a
a = width px( )height px( )
18/04/12
18
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dealingwithaspectratio• Wecanthensetourprojectionmatrixtobe:
• Sowhenthewindowiswide,wewillkeepmorehorizontalFOV,andwhenthewindowistall,wewillkeeplesshorizontalFOV.
35
1atan θ
2⎛
⎝⎜⎞
⎠⎟
0 0 0
0 1tan θ
2⎛
⎝⎜⎞
⎠⎟
0 0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Dealingwithaspectratio• Asanalternative,wecouldhaveanfovMin,andwhenthewindowistall,wewouldneedtocalculateanappropriatelargerfovYandthenbuildthematrix.
36
18/04/12
19
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
FOVissues• Tobea“window”ontotheworld,theFOVshouldmatchtheangularextentsofthewindowintheviewersfield.
• Thismightgiveatoolimitedviewontotheworld.
• Sowecanincreaseittoseemore.• Butthismightgiveasomewhatunnaturallook.
37
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Shifts
• Sometimes,wewishtocroptheimagenon-centrally.
• Thiscanbemodeledastranslatingthenormalizeddevicecoordinates(NDC)’sandthencroppingcentrally.
38
18/04/12
20
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Shifts
39
xnwn
ynwn
−wn
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
1 0 0 cx0 1 0 c y− − − −0 0 0 1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
1 0 0 00 1 0 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
=
1 0 −cx 00 1 −c y 0− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
xeyeze1
⎡
⎣
⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Shifts
40
• Usefulfortileddisplays,stereoviewing,andcertainkindsofimages.
18/04/12
21
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Frustum• Shiftsareoftenspecifiedbyfirstspecifyinganear
plane.• Onthisplane,arectangleisspecifiedwiththeeye
coordinatesofanaxisalignedrectangle.(fornon-distortedoutput,theaspectratioofthisrectangleshouldmatchthatofthefinalwindow.)– Using
41
ze = n
l, r, t, b.
− 2nr − l
0 r + lr − l
0
0 − 2nt − b
t + bt − b
0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Frustum• Example1:
42
−2nr − l
0 r+ lr − l
0
0 −2nt −b
t +bt −b
0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
• Example2:
xy
z !etl =−3
r =3t =2
b=−2(0,0)
n=−2
2×23+3 0 0
3+3 0
0 2×22+2
02+2 0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
xy
z !et
l =2
r =4t =4
b=2(3,3)
n=−2(0,0)
2×24−2 0 4+2
4−2 0
0 2×24−2
4+24−2 0
− − − −0 0 −1 0
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
18/04/12
22
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Context• Projectioncouldbeappliedtoeverypointinthescene.
• InCG,wewillapplyittotheverticestopositionatriangleonthescreen.
• Therestofthetrianglewillthengetfilledinonthescreenasweshallsee.
43
MinH.Kim(KAIST) Foundationsof3DComputerGraphics,S.Gortler,MITPress,2012
Summary:Projectionfrom3Dto2D
44
• 3Dà2D
X
Y
−Zx
yX
p
x
cameracenter
imageplane
principalaxis
C +Z
xnyn1
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥=
xcycwc
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥=
−n 0 −cx0 −n −cy0 0 −1
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥
xeyeze
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥
u
v
cx
cy p x
y
xnyn1
⎡
⎣
⎢⎢⎢
⎤
⎦
⎥⎥⎥=
xcwn
ycwn
wc
wn
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
=
n xeze+ cx
n yeze+ cy
1
⎡
⎣
⎢⎢⎢⎢⎢⎢⎢
⎤
⎦
⎥⎥⎥⎥⎥⎥⎥
wc =wn = −zen < 0normalization
NBThecameraframeoriginlookstheoppositedirectionincomputervision