1.38k likes | 1.4k Views
http:// www.ugrad.cs.ubc.ca /~cs314/Vjan2013. Viewing. Reading for This Module. FCG Chapter 7 Viewing FCG Section 6.3.1 Windowing Transforms RB rest of Chap Viewing RB rest of App Homogeneous Coords RB Chap Selection and Feedback RB Sec Object Selection Using the Back Buffer
E N D
Reading for This Module • FCG Chapter 7 Viewing • FCG Section 6.3.1 Windowing Transforms • RB rest of Chap Viewing • RB rest of App Homogeneous Coords • RB Chap Selection and Feedback • RB Sec Object Selection Using the Back Buffer • (in Chap Now That You Now )
Using Transformations • three ways • modelling transforms • place objects within scene (shared world) • affine transformations • viewing transforms • place camera • rigid body transformations: rotate, translate • projection transforms • change type of camera • projective transformation
Rendering Pipeline Scene graphObject geometry ModellingTransforms ViewingTransform ProjectionTransform
Rendering Pipeline • result • all vertices of scene in shared 3D world coordinate system Scene graphObject geometry ModellingTransforms ViewingTransform ProjectionTransform
Rendering Pipeline • result • scene vertices in 3D view (camera) coordinate system Scene graphObject geometry ModellingTransforms ViewingTransform ProjectionTransform
Rendering Pipeline • result • 2D screen coordinates of clipped vertices Scene graphObject geometry ModellingTransforms ViewingTransform ProjectionTransform
Viewing and Projection • need to get from 3D world to 2D image • projection: geometric abstraction • what eyes or cameras do • two pieces • viewing transform: • where is the camera, what is it pointing at? • perspective transform: 3D to 2D • flatten to image
Geometry Database Model/View Transform. Perspective Transform. Lighting Clipping Frame- buffer Texturing Scan Conversion Depth Test Blending Rendering Pipeline
Geometry Database Model/View Transform. Perspective Transform. Lighting Clipping Frame- buffer Texturing Scan Conversion Depth Test Blending Rendering Pipeline
OpenGL Transformation Storage • modeling and viewing stored together • possible because no intervening operations • perspective stored in separate matrix • specify which matrix is target of operations • common practice: return to default modelview mode after doing projection operations glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION);
Coordinate Systems • result of a transformation • names • convenience • animal: leg, head, tail • standard conventions in graphics pipeline • object/modelling • world • camera/viewing/eye • screen/window • raster/device
viewing transformation projection transformation modeling transformation viewport transformation Projective Rendering Pipeline OCS - object/model coordinate system WCS - world coordinate system VCS - viewing/camera/eye coordinate system CCS - clipping coordinate system NDCS - normalized device coordinate system DCS - device/display/screen coordinate system object world viewing O2W W2V V2C VCS WCS OCS clipping C2N CCS perspectivedivide normalized device N2D NDCS device DCS
viewing transformation modeling transformation Viewing Transformation y image plane VCS z OCS z y Peye y x x WCS object world viewing VCS OCS WCS Mmod Mcam OpenGL ModelView matrix
Basic Viewing • starting spot - OpenGL • camera at world origin • probably inside an object • y axis is up • looking down negative z axis • why? RHS with x horizontal, y vertical, z out of screen • translate backward so scene is visible • move distance d = focal length • where is camera in P1 template code? • 5 units back, looking down -z axis
Convenient Camera Motion • rotate/translate/scale versus • eye point, gaze/lookat direction, up vector • demo: Robins transformation, projection
OpenGL Viewing Transformation gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz) • 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 tutorialprojection
Convenient Camera Motion • rotate/translate/scale versus • eye point, gaze/lookat direction, up vector y lookat x Pref WCS view up z eye Peye
y lookat x Pref WCS view v VCS up z eye Peye u w Placing Camera in World Coords: V2W • treat camera as if it’s just an object • translate from origin to eye • rotate view vector (lookat – eye) to w axis • rotate around w to bring up into vw-plane
y lookat x Pref WCS view v VCS up z eye Peye u w Deriving V2W Transformation • translate origin to eye
y lookat x Pref WCS view v VCS up z eye Peye u w Deriving V2W Transformation • rotate view vector (lookat – eye) to w axis • w: normalized opposite of view/gaze vector g
y lookat x Pref WCS view v VCS up z eye Peye u w Deriving V2W Transformation • rotate around w to bring up into vw-plane • u should be perpendicular to vw-plane, thus perpendicular to w and up vector t • v should be perpendicular to u and w
Deriving V2W Transformation • rotate from WCS xyz into uvw coordinate system with matrix that has columns u, v, w • reminder: rotate fromuvwto xyz coord sys with matrix M that has columnsu,v,w MV2W=TR
V2W vs. W2V • MV2W=TR • we derived position of camera as object in world • invert for gluLookAt:go from world to camera! • MW2V=(MV2W)-1=R-1T-1 • inverse is transpose for orthonormal matrices • inverse is negative for translations
V2W vs. W2V • MW2V=(MV2W)-1=R-1T-1
Moving the Camera or the World? • two equivalent operations • move camera one way vs. move world other way • example • initial OpenGL camera: at origin, looking along -zaxis • create a unit square parallel to camera at z = -10 • translate in z by 3 possible in two ways • camera moves to z = -3 • Note OpenGL models viewing in left-hand coordinates • camera stays put, but world moves to -7 • resulting image same either way • possible difference: are lights specified in world or view coordinates?
World vs. Camera Coordinates Example a = (1,1)W C2 b = (1,1)C1 = (5,3)W c c = (1,1)C2= (1,3)C1= (5,5)W b a C1 W
Pinhole Camera • ingredients • box, film, hole punch • result • picture www.kodak.com www.pinhole.org www.debevec.org/Pinhole
Pinhole Camera • theoretical perfect pinhole • light shining through tiny hole into dark space yields upside-down picture one ray of projection perfect pinhole film plane
Pinhole Camera • non-zero sized hole • blur: rays hit multiple points on film plane multiple rays of projection actual pinhole film plane
Real Cameras • pinhole camera has small aperture (lens opening) • minimize blur • problem: hard to get enough light to expose the film • solution: lens • permits larger apertures • permits changing distance to film plane without actually moving it • cost: limited depth of field where image is in focus aperture lens depth of field http://en.wikipedia.org/wiki/Image:DOF-ShallowDepthofField.jpg
Graphics Cameras • real pinhole camera: image inverted eye point image plane • computer graphics camera: convenient equivalent eye point center of projection image plane
General Projection • image plane need not be perpendicular to view plane eye point image plane eye point image plane
Perspective Projection • our camera must model perspective
Perspective Projection • our camera must model perspective
Projective Transformations • planar geometric projections • planar: onto a plane • geometric: using straight lines • projections: 3D -> 2D • aka projective mappings • counterexamples?
Projective Transformations • properties • lines mapped to lines and triangles to triangles • parallel lines do NOT remain parallel • e.g. rails vanishing at infinity • affine combinations are NOT preserved • e.g. center of a line does not map to center of projected line (perspective foreshortening)
-z Perspective Projection • project all geometry • through common center of projection (eye point) • onto an image plane x y z z x x
Perspective Projection projectionplane center of projection (eye point) how tall shouldthis bunny be?
Basic Perspective Projection • nonuniform foreshortening • not affine similar triangles P(x,y,z) y P(x’,y’,z’) z z’=d but
Perspective Projection • desired result for a point [x, y, z, 1]T projected onto the view plane: • what could a matrix look like to do this?
Simple Perspective Projection Matrix is homogenized version of where w = z/d
Simple Perspective Projection Matrix is homogenized version of where w = z/d
Perspective Projection • expressible with 4x4 homogeneous matrix • use previously untouched bottom row • perspective projection is irreversible • many 3D points can be mapped to same (x, y, d) on the projection plane • no way to retrieve the unique z values
Moving COP to Infinity • as COP moves away, lines approach parallel • when COP at infinity, orthographic view
Orthographic Camera Projection • camera’s back plane parallel to lens • infinite focal length • no perspective convergence • just throw away z values
Perspective to Orthographic • transformation of space • center of projection moves to infinity • view volume transformed • from frustum (truncated pyramid) to parallelepiped (box) x x Frustum Parallelepiped -z -z