University of British Columbia Reading for This Module CPSC 314 Computer Graphics • FCG Chapter 7 Viewing Jan-Apr 2013 • FCG Section 6.3.1 Windowing Transforms Tamara Munzner • RB rest of Chap Viewing • RB rest of App Homogeneous Coords Viewing • RB Chap Selection and Feedback • RB Sec Object Selection Using the Back http://www.ugrad.cs.ubc.ca/~cs314/Vjan2013 Buffer • (in Chap Now That You Now ) 2 Using Transformations • three ways • modelling transforms • place objects within scene (shared world) • affine transformations Viewing • viewing transforms • place camera • rigid body transformations: rotate, translate • projection transforms • change type of camera • projective transformation 3 4
Rendering Pipeline Rendering Pipeline • result Scene graph Scene graph • all vertices of scene in shared Object geometry Object geometry 3D world coordinate system Modelling Modelling Transforms Transforms Viewing Viewing Transform Transform Projection Projection Transform Transform 5 6 Rendering Pipeline Rendering Pipeline • result • result Scene graph Scene graph • scene vertices in 3D view • 2D screen coordinates of Object geometry Object geometry (camera) coordinate system clipped vertices Modelling Modelling Transforms Transforms Viewing Viewing Transform Transform Projection Projection Transform Transform 7 8
Viewing and Projection Rendering Pipeline • need to get from 3D world to 2D image • projection: geometric abstraction Model/View Geometry Perspective Lighting Clipping • what eyes or cameras do Transform. Database Transform. • two pieces • viewing transform: Frame- • where is the camera, what is it pointing at? Scan Depth Texturing Blending buffer Conversion Test • perspective transform: 3D to 2D • flatten to image 9 10 Rendering Pipeline OpenGL Transformation Storage • modeling and viewing stored together • possible because no intervening operations Geometry Model/View Perspective • perspective stored in separate matrix Lighting Clipping Database Transform. Transform. • specify which matrix is target of operations • common practice: return to default modelview Frame- Scan Depth Texturing Blending mode after doing projection operations buffer Conversion Test glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION); 11 12
Coordinate Systems Projective Rendering Pipeline • result of a transformation object world viewing • names O2W W2V V2C VCS WCS OCS • convenience projection modeling viewing transformation • animal: leg, head, tail transformation transformation clipping C2N • standard conventions in graphics pipeline CCS OCS - object/model coordinate system perspective • object/modelling WCS - world coordinate system normalized divide • world device VCS - viewing/camera/eye coordinate N2D system NDCS • camera/viewing/eye viewport CCS - clipping coordinate system • screen/window transformation • raster/device NDCS - normalized device coordinate device system DCS DCS - device/display/screen coordinate system 13 14 Viewing Transformation Basic Viewing • starting spot - OpenGL y image • camera at world origin VCS plane • probably inside an object z OCS z • y axis is up y • looking down negative z axis Peye y • why? RHS with x horizontal, y vertical, z out of screen x x WCS • translate backward so scene is visible • move distance d = focal length object world viewing OCS WCS VCS • where is camera in P1 template code? modeling viewing • 5 units back, looking down -z axis transformation transformation M mod M cam OpenGL ModelView matrix 15 16
Convenient Camera Motion OpenGL Viewing Transformation • rotate/translate/scale versus gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz) • eye point, gaze/lookat direction, up vector • demo: Robins transformation, projection • postmultiplies current matrix, so to be safe: glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz) // now ok to do model transformations • demo: Nate Robins tutorial projection 17 18 Convenient Camera Motion Placing Camera in World Coords: V2W • rotate/translate/scale versus • treat camera as if it ’ s just an object • eye point, gaze/lookat direction, up vector • translate from origin to eye • rotate view vector ( lookat – eye ) to w axis • rotate around w to bring up into vw -plane y lookat y x Pref lookat WCS x Pref view WCS up view z v eye VCS up z eye Peye Peye u w 19 20
Deriving V2W Transformation Deriving V2W Transformation • rotate view vector ( lookat – eye ) to w axis 1 0 0 ex � � � � 0 1 0 ey • w : normalized opposite of view/gaze vector g • translate origin to eye � � T = � � 0 0 1 ez g = � g w = � ˆ � � 0 0 0 1 � � g y y lookat lookat x Pref x Pref WCS WCS view view v v VCS VCS up up z z eye eye Peye Peye u u 21 22 w w Deriving V2W Transformation Deriving V2W Transformation • rotate around w to bring up into vw -plane • rotate from WCS xyz into uvw coordinate system with matrix that has columns u , v , w • u should be perpendicular to vw -plane, thus perpendicular to w and up vector t u = t � w g = � g w = � ˆ v = w � u • v should be perpendicular to u and w t � w g u = t � w v = w � u t � w 1 0 0 ex u x v x w x 0 � � � � y lookat � � � � 0 1 0 ey u y v y w y 0 M V2W =TR � � � � R = x Pref T = u z v z w z 0 � 0 0 1 ez � � � WCS view � � v � � 0 0 0 1 0 0 0 1 � � VCS � � up z eye • reminder: rotate from uvw to xyz coord sys with matrix M that has columns u,v,w Peye u 23 24 w
V2W vs. W2V V2W vs. W2V u x v x w x 0 � � 1 0 0 ex � � � � � � u y v y w y 0 0 1 0 ey � � R = � � • M V2W =TR T = • M W2V =(M V2W ) -1 = R -1 T -1 u z v z w z 0 � � � � 0 0 1 ez � � � � 0 0 0 1 0 0 0 1 � � � � � � � � � � u x u y u z 0 1 0 0 � e x u x u y u z � e • u � � � � � � • we derived position of camera as object in world v x v y v z 0 0 1 0 � e y v x v y v z � e • v � � � � � � M world 2 view = = • invert for gluLookAt: go from world to camera! � w x w y w z 0 � � 0 0 1 � e z � � w x w y w z � e • w � � � � � � � • M W2V =(M V2W ) -1 = R -1 T -1 0 0 0 1 0 0 0 1 0 0 0 1 � � � � � � � u x u y u z 0 � � 1 0 0 � ex � � � � � v x v y v z 0 0 1 0 � ey R � 1 = T � 1 = � � � � � u x u y u z � e x � u x + � e y � u y + � e z � u z � w x w y w z 0 � � � � 0 0 1 � ez � � � � � � 0 0 0 1 0 0 0 1 � � v x v y v z � e x � v x + � e y � v y + � e z � v z � � � � M W 2 V = • inverse is transpose for orthonormal matrices � w x w y w z � e x � w x + � e y � w y + � e z � w z � � � • inverse is negative for translations 0 0 0 1 � � 25 26 Moving the Camera or the World? World vs. Camera Coordinates Example • two equivalent operations • move camera one way vs. move world other way • example • initial OpenGL camera: at origin, looking along -z axis a = (1,1) W • create a unit square parallel to camera at z = -10 C2 • translate in z by 3 possible in two ways b = (1,1) C1 = (5,3) W c • camera moves to z = -3 • Note OpenGL models viewing in left-hand coordinates c = (1,1) C2 = (1,3) C1 = (5,5) W • camera stays put, but world moves to -7 b • resulting image same either way • possible difference: are lights specified in world or view coordinates? a C1 W 27 28
Pinhole Camera • ingredients • box, film, hole punch • result • picture Projections I www.kodak.com www.pinhole.org www.debevec.org/Pinhole 29 30 Pinhole Camera Pinhole Camera • theoretical perfect pinhole • non-zero sized hole • light shining through tiny hole into dark space • blur: rays hit multiple points on film plane yields upside-down picture one ray multiple rays of projection of projection actual perfect pinhole pinhole film plane film plane 31 32
Real Cameras Graphics Cameras • pinhole camera has small aperture (lens opening) • real pinhole camera: image inverted • minimize blur aperture eye • problem: hard to get enough light to expose point image the film plane • solution: lens computer graphics camera: convenient equivalent • permits larger apertures • permits changing distance to film plane without actually moving it lens eye • cost: limited depth of field where image is depth point in focus of field center of image projection plane 33 34 http://en.wikipedia.org/wiki/Image:DOF-ShallowDepthofField.jpg General Projection Perspective Projection • image plane need not be perpendicular to • our camera must model perspective view plane eye point image plane eye point image plane 35 36
Recommend
More recommend