Presentation is loading. Please wait.

Presentation is loading. Please wait.

Modeling and Viewing Modeling

Similar presentations


Presentation on theme: "Modeling and Viewing Modeling"— Presentation transcript:

1 Modeling and Viewing Modeling
Use modeling (local) coordinates and geometric transformations to build hierarchically more complex objects and scenes. The final scene is in world frame Viewing Model the camera: position , orientation, camera (view) reference frame, projection Viewing transformations: from world to camera coordinates Clipping/hidden surface removal: clip out from consideration parts outside of view volume Projection transformations and hidden surface removal: from 3D viewing coord. to 2D projection coord. and normalized device coordinates Viewport transformations: from normalized device coordinates to screen (device) coordinates Viewing, projections Hofstra University

2 Viewing and Projection
Transforming Modeling transformations (affine), 3D to 3D Viewing transformations (affine), 3D to 3D Linear in homogeneous coordinates Images of parallel lines stay parallel Transformation matrix in homogeneous coordinates has last row, Projection transformations (not affine), 3D to 2D Images of parallel lines may intersect at infinity Transformation matrix most general Viewport transformations (affine), maps viewing window to viewport, 2D to 2D Viewing, projections Hofstra University

3 Viewing Terminology Viewing volume: the region in 3D that can contain objects that are visible by the camera Projection: math transformations that maps from 3D to 2D (or 4D to 3D, in homogeneous) Projection plane: the plain containing the 2D image Viewing window: the rectangle in the image plane that will be mapped to the screen eventually Viewport: 2D rectangle within the display window on the screen that shows the viewing window Clipping: cutting off from consideration parts outside the view volume (done easier if the view volume is mapped to a canonical view volume which is a cube) Motivation: -- object/picture often has parts -- model once/instantiate multiple times -- modify only a part Viewing, projections Hofstra University

4 Graphics functions Graphics systems support viewing by
Providing a viewing model whose parameters specify the camera Providing functions for viewing, projection and viewport Implementing viewing and projection transformations as matrix multiplications in homogeneous coordinates Viewing, projections Hofstra University

5 Viewing APIs The the position of the eye or camera is called the view reference point (VRP) A unit view plane normal (VPN), is in the viewing direction, it is perpendicular to the image plane. In open GL VPN is in direction opposite to the one in which camera is looking Another vector called the view-up vector is a vector specifying which is the approximate “up” direction for the camera Viewing, projections Hofstra University

6 Camera Model: viewing VRP: Camera(eye) position,
(u,v,n): camera frame. Viewing: specify VRP,n,VUP. Viewing, projections Hofstra University

7 Viewing Coordinate System: (u,v,n)
right handed v, the y-axis of the view frame, is the perpendicular projection of VUP on the projection plane n is the z-axis of the view frame u = v × n Viewing, projections Hofstra University

8 Setting up the camera Construct a scene and then look at it from a point of view, eye: eye, the eyepoint, is the VRP specified in the world coordinates Camera is pointed at a point at, the at point These points determine VPN vpn = eye – at Viewing, projections Hofstra University

9 Two Points of View Hold camera frame fixed, move objects in front of the camera glLoadIdentity(); glTranslatef(0,0,-d); Keep objects stationary and move the camera away from the objects glLookAt(0,0,d,0,0,0,0,1,0); Viewing, projections Hofstra University

10 gluLookAt Utility Routine in OpenGL
Defines a viewing transformation matrix M, and M postmultiplies CTM, i.e. CTM=CTM*M Eye point: eyex, eyey, and eyez. At point: atx, aty,and atz. VUP: upx, upy, and upz gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz); Viewing, projections Hofstra University

11 Viewing Transformations
Given 3D model of a scene/object in 4D homogeneous coordinates P, with respect to the world coordinate system Given camera coordinate system (position, VRP, and camera frame (u,v,n) ) Viewing transformation M converts coordinates of objects from world to camera coordinates How? Viewing, projections Hofstra University

12 Viewing Transformations
Let W=(O,ex,ey,ez) be the world coord. system Let V=(VRP,u,v,n) be the camera coord. System Let M be the change of frame matrix, mapping V to W, M = R.T(-VRP), where T is a translation mapping VRP to O R is a rotation aligning (u,v,n) with (ex,ey,ez), in 3D affine coordinates it represented by a matrix with rows u’,v’,n’ Then for a point P with modeling coordinates w=(xw,yw,zw,1)’ the viewing coordinates are v =(vx,vy,vz,1)’, where Viewing, projections Hofstra University

13 Custom Utility Routine
You might need to define your own transformation routine Flight simulator: Display the world from the pilot’s point of view Pilot see the world in terms of roll, pitch, and heading Viewing, projections Hofstra University

14 Custom Utility Routine
The following routine could serve as the viewing transformation: void pilotView{GLdouble planex, GLdouble planey,                GLdouble planez, Gldouble roll,                  GLdouble pitch, GLdouble heading) {      glRotated(roll, 0.0, 0.0, 1.0);       glRotated(pitch, 0.0, 1.0, 0.0);       glRotated(heading, 1.0, 0.0, 0.0);       glTranslated(-planex, -planey, -planez); } Viewing, projections Hofstra University

15 Custom Utility Routine
Orbiting the camera around an object that's centered at the origin Use polar coordinates. Let the distance variable define the radius of the orbit The azimuth is the angle of rotation of the camera about the object in the x-y plane elevation is the angle of rotation of the camera in the y-z plane Viewing, projections Hofstra University

16 Projections Projecting: mapping from 3D viewing coordinates to 2D coordinates in projection plane. In homogeneous coordinates it is a map from 4D viewing coordinates to 3D. Projections Parallel: orthogonal and oblique Perspective Canonical views: orthographic and perspective projections Viewing, projections Hofstra University

17 Perspective projection
Projectors intersect at COP Viewing, projections Hofstra University

18 Parallel Projections Projectors parallel. COP at infinity.
Viewing, projections Hofstra University

19 Parallel projections: summary
Center of projection is at infinity. Projectors are parallel. Parallel lines stay parallel There is no forshorthening Distances and angles are transformed consistently Used most often in engineering design, CAD systems. Used for top and side drawings from which measurements could be made. Viewing, projections Hofstra University

20 Orthographic Projection: projectors orthogonal to projection plane
same for all points DOP (direction of projectors) Viewing, projections Hofstra University

21 Orthographic Projections
DOP is perpendicular to the view plane Viewing, projections Hofstra University

22 Multiview Parallel Projection
Faces are parallel to the projection plane Viewing, projections Hofstra University

23 Isometric Projection Projector makes equal angles with all three principal axes All three axes are equally foreshortened Viewing, projections Hofstra University

24 Mechanical Drawing isometric Viewing, projections Hofstra University

25 Oblique Parallel Projections
Most general parallel views Projectors make an arbitrary angle with the projection plane Angles in planes parallel to the projection plane are preserved Viewing, projections Hofstra University

26 Oblique Projections: projectors are not orthogonal to image plane
Cavalier Angle between projectors and projection plane is 45°. Lines orthogonal to the projection plane Retain their exact length. Perpendicular faces are projected at full scale Cabinet Angle between projectors and projection plane is arctan(2)=63.4°. Lines orthogonal to the projection plane are projected at half length. Perpendicular faces are projected at 50% scale. Looks like forshorthening. Viewing, projections Hofstra University

27 Perspective Projection
Most natural for people In human vision, perspective projection of the world is created on the retina (back of the eye) Used in CG for creating realistic images Perspective projection images carry depth cues Foreshorthening causes distant objects to appear smaller Relative lengths and angles are not preserved A perspective image cannot be used for metric measurements of the 3D world Parallel lines not parallel to the image plane converge at a vanishing point An axis (principal) vanishing point is a point of convergence for lines parallel to a principal axis of the object. We distinguish one-, two-, three-point projections.) Viewing, projections Hofstra University

28 Vanishing Points Viewing, projections Hofstra University

29 Vanishing Points Viewing, projections Hofstra University

30 Early Perspective Giotto
Not systematic—parallel lines do not converge to a single "vanishing" point Viewing, projections Hofstra University

31 Math of Projections:Overview
Math of perspective projection, standard configuration OpenGL perspective projections Math of orthographic projection OpenGL orthographic projections Viewport transformations and setting them in OpenGL Summary Viewing transformations Orthographic projection canonical viewing volume Perspective projection canonical viewing volume Hidden surface removal Viewing, projections Hofstra University

32 Perspective Viewing Viewing, projections Hofstra University

33 Perspective Projections
-z -z Viewing direction orthogonal To projection plane Genaral perspective: Viewing direction is not orthogonal to projection plane Viewing, projections Hofstra University

34 Perspective Projections
The graphics system applies a 4 x 4 projection matrix after the model-view matrix Viewing, projections Hofstra University

35 Math of perspective projection
The discussion here is carried out with respect to the camera (view) reference frame, (VRP,u,v,n) The projection transformation maps 3D points to 2D points in the projection plane Standard configuration: COP=VRP Projection plane is orthogonal to z-axis, at z=d Viewing, projections Hofstra University

36 Math of perspective projection
Standard configuration: Let O be COP Projection plane has equation z=d, d <0 3D point P has homogeneous coordinates (x,y,z,1) It is mapped to point Q (xp,yp,d) in the projection plane Q is on the segment PO, thus Q=cP+(1-c)O, where 0<c<1 Thus, xp = c.x, yp = c.y, d = c.z  c = d/z Thus, xp = (d/z).x, yp = (d/z).y , in affine coordinates Note that projection is not linear in affine coordates. Viewing, projections Hofstra University

37 Math of perspective projection
P=p(x,y,z,1)  Q=q(d.x/z, d.y/z, d, 1), in homogeneous coordinates. Perspective projection is not linear in affine coord. Perspective projection is linear in homogeneous From homogeneous to affine coordinates: (a,b,c,w)  (a/w, b/w,c/w) Thus (x,y,z,d/z) in homogeneous becomes (x/(z/d), y/(z/d),d,1) ==> (d.x/z, d.y/z,1) in proj. plane Viewing, projections Hofstra University

38 Clipping Object parts outside of the of the view volume are clipped
First we will discuss the openGL functions that set up the projection transformations Next we will discuss the viewport transformation and setting the viewport in OpenGL Last, we will go back to projection, and see how the graphics systems carry out efficiently the more general perspective projection by reducing it to the standard perspective, and then to the canonical orthographic You can set up any projection you want (parallel or perspective) by setting up the the projection matrix directly Although, more often we use affine transformations to reduce more general projections to the canonical ones Viewing, projections Hofstra University

39 Perspective Viewing in OpenGL
Depth of projection plane (size of clipping window) inside the pyramid does not matter. All that matters is object size relative to the window. The projection plane depth does not affect relative size. Thus in CG systems usually far or near plane is selected to be the projection plane. Near in openGL. Viewing, projections Hofstra University

40 Projections in OpenGL Objects not in the view volume are clipped.
frustum only fixed point Objects not in the view volume are clipped. View (projection) plane is front clipping plane. Viewing, projections Hofstra University

41 OpenGL Perspective glFrustum(left, right, bottom, top, near, far);
glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glFrustum(left, right, bottom, top, near, far); The relationship between front(near) plane and COP(origin) define the steepness of the frustum Viewing, projections Hofstra University

42 OpenGL Perspective gluPerspective(fovy, aspect, near, far);
fov is the angle between the top and bottom planes Viewing, projections Hofstra University

43 OpenGL Orthographic Projection
glOrtho(left, right, bottom, top, near, far); Viewing, projections Hofstra University

44 Standard Orthographic Projection
Viewing, projections Hofstra University

45 Viewport Transformation
viewport transformation corresponds to the stage where the size of the developed photograph is chosen The viewport is measured in pixels, in screen window coordinates, which reflect the position of pixels on the screen relative to the lower left corner of the window vertices outside the viewing volume have been clipped Viewing, projections Hofstra University

46 Viewport Transformation
viewport is the rectangular region of the window where the image is drawn Viewing, projections Hofstra University

47 Defining the Viewport The window manager, not OpenGL, is responsible for opening a window on the screen By default the viewport is set to the entire pixel rectangle of the window that's opened Use the glViewport() command to choose a smaller drawing region void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); lower left corner size of viewport rectangle Viewing, projections Hofstra University

48 Defining The Viewport By default, the initial viewport values are
(0, 0, winWidth, winHeight), where winWidth and winHeight are the size of the window. The aspect ratio of a viewport should generally equal the aspect ratio of the viewing volume If the two ratios are different, the projected image will be distorted as it's mapped to the viewport Viewing, projections Hofstra University

49 Viewport Distortion Viewing, projections Hofstra University

50 Summary World to View coordiantes Camera position: VRP
Viewing transformation Translate VRP to origin: T(-VRP) Rotate, aligning view frame (u,v,n) with world frame The composite transformation R.T will have the effect of transforming the coordinates of vertices from world to view coordinates Viewing, projections Hofstra University

51 Summary Canonical view orthographic projection VRP at the origin
Looking in negative z direction (COP does not matter) View-up vector is (0,1,0) View volume is a cube of side 2 center at origin, (left, right, bottom, top, near, far)=(-1,1,-1,1,1,-1) (1,1,-1) Viewing, projections Hofstra University (-1,-1,1)

52 Summary Perspective projection standard viewing VRP at origin
Looking in negative z-direction, look at is (0,0,-1) COP coincides with VRP, viewing direction is orthogonal to view plane View-up vector is (0,1,0) View volume is a regular frustum (left, right, top, bottom, near, far)=(-1,1,-1,1,1,z_far), The near plane is at –1, the far is at -z. Side clipping planes make 45 deg angles with z axis Viewing, projections Hofstra University

53 Canonical Viewing for Perspective
Viewing, projections Hofstra University

54 Hidden Surface Removal
z-buffer algorithm – as the polygons are rasterized we keep track of the distance from the VRP to the closest point on each projector. We display only the closest point Requires a depth or z buffer to store the necessary depth information glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); Viewing, projections Hofstra University

55 Hidden Surface Removal
Display only visible surfaces (remove hidden) Painter’s algorithm: sort polygons according to z, project in order of decreasing depth Pixel based: back track rays from pixels to first intersection Z-buffer algorithm: based on relative depth after projection Viewing, projections Hofstra University

56 Perspective Normalization
How can we apply general perspective projection? Derive the perspective projection matrix (general 4x4 matrix), load that as a PROJECTION matrix Trick: Using series of affine transformations to alter the world, so that the image of the distorted world under standard (canonical) projection is the same as the image of the undistorted world under the original general projection Graphics systems go even farther: perspective projections are implemented internally as orthographic projections (of the distorted world) with respect to the canonical view volume (2x2x2 cube). This way the clipping is very efficient, and z-buffer algorithm is supported by preserving relative depth in the process of transforming objects. Viewing, projections Hofstra University

57 Projection Normalization Idea
Viewing, projections Hofstra University

58 Projection Normalization
The distortion is described by a homogeneous-coordinate matrix Concatenate this matrix with an orthogonal-projection matrix to yield a resulting projection matrix Viewing, projections Hofstra University

59 General Perspective Projection
Projection converts points in 3-D space to points on the projection plane Three steps (the graphics system implements them): Converts the viewing volume (general frustum) to the canonical perspective view volume Next converts the canonical perspective view volume to the canonical orthographic view volume Applys orthographic projection matrix Viewing, projections Hofstra University

60 The “most” canonical view volume
Orthographic projection with respect to most canonical view volume Canonical view volume is a 2x2x2 cube whose center is at the origin (default view volume) How to clip?: simple How to project?: no division (1,1,-1) (-1,-1,1) Viewing, projections Hofstra University

61 General Orthogonal Projection
glMatrixMode(GL_PROJECTION); glLoadIdentity( ); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); determine which objects are clipped out Projection Matrix maps a view volume to the canonical view volume Viewing, projections Hofstra University

62 Projection Matrix Viewing, projections Hofstra University

63 Oblique Projection degree of obliqueness Viewing, projections
Hofstra University

64 Oblique Projection shearing Viewing, projections Hofstra University

65 Perspective Projection Matrices
Look for a transformation allows a simple canonical projection by distorting the vertices of an object Three steps: 1) select canonical viewing volume, 2) introduce the perspective normalization transformation and 3) derive the perspective projection matrix Viewing, projections Hofstra University

66 Perspective Projection Matrices
Viewing, projections Hofstra University

67 Perspective Projection Matrices
N is called the perspective normalization matrix. It converts a perspective projection to an orthogonal projection Viewing, projections Hofstra University

68 Projection and Shadows
Shadows are not geometric objects but important for realism A point is in a shadow if it is not illuminated by any light source A shadow polygon is a flat shadow that results from projecting the original polygon onto a surface Viewing, projections Hofstra University

69 Projection and Shadows
use a modelview matrix Viewing, projections Hofstra University


Download ppt "Modeling and Viewing Modeling"

Similar presentations


Ads by Google