Download presentation
1
3D Viewing
2
3D Viewing Transformation Pipeline
MC Modeling Transformation xw yw zw xv yv zv xw yw zw xv yv zv V P0 N WC Viewing Transformation VC clipping window view volume xv yv zv PC Projection Transformation Normalization Transformation and Clipping NC znorm ynorm (1,1,1) (-1,-1,-1) viewport screen (xvmin, yvmin, 0) (xvmax, yvmax, 0) Viewport Transformation DC
3
3D Viewing Transformation Pipeline
MC Modeling Transformation WC Viewing Transformation VC Projection Transformation PC Normalization Transformation and Clipping NC Viewport Transformation DC
4
3D Viewing Transformation Pipeline
MC Modeling Transformation WC Viewing Transformation VC Projection Transformation PC Normalization Transformation and Clipping NC Viewport Transformation DC
5
3D Viewing V view up vector P0 = (x0, y0, z0) view point yw
N viewplane normal Viewplane is at point zvp in negative zv direction V is perpendicular to N xw yw zw xv yv zv V P0 N
6
3D Viewing xv yv zv is a right-handed viewing coordinate system yv xv
u n
7
3D Viewing Transformation from World to Viewing Coordinates: 1. Translate viewing coordinate origin to the origin of world coordinate system 2. Apply rotations to align xv yv zv axes with xw yw zw axes respectively MWC,VC = R . T yv xw yw zw xv zv P0 xw yw zw yv xv zv
8
3D Viewing Transformation Pipeline
MC Modeling Transformation WC Viewing Transformation VC Projection Transformation PC Normalization Transformation and Clipping NC Viewport Transformation DC
9
Projections isometric axonometric orthogonal Parallel cavalier oblique
cabinet Perspective
10
Projections view plane view plane Perspective projection
Parallel projection
11
Orthogonal Projection
12
Orthogonal Projection
Axonometric: displays more than one face of an object Isometric: projection plane intersects each coordinate axis at the sane distance from the origin Isometric
13
3D Viewing Transformation Pipeline
MC Modeling Transformation WC Viewing Transformation VC Projection Transformation PC Normalization Transformation and Clipping NC Viewport Transformation DC
14
Orthogonal Projection
Clipping view volume clipping window xv yv zv far plane near plane
15
Orthogonal Projection
Normalization Mortho,norm . R . T ynorm znorm (1,1,1) yv xnorm (-1,-1,-1) xv zv
16
Oblique Projection Oblique projection: projection path is not perpendicular to the view plane view plane
17
Oblique Projection yv (xp,yp,zvp) xv zv a f (x,y,zvp) (x,y,z)
18
Oblique Projection xp = x + L1 (zvp – z) cos f
yp = y + L1 (zvp – z) sin f shearing transformation L1 f view plane
19
Oblique Projection Cavalier Projection Cabinet Projection f = 450
20
Oblique Projection window a f Vp view volume Vp yv xv zv (xp,yp,zvp)
(x,y,zvp) view volume Vp (x,y,z)
21
Oblique Projection MWC,VC . Morth,norm . Mobl Mobl,norm shear Vp Vp
window window shear Vp Vp orthogonal coordinates MWC,VC . Morth,norm . Mobl Mobl,norm
22
Parallel Projection Viewer’s position View plane
23
Perspective Projection
Viewer’s position View plane
24
Perspective Projection
yv projection reference point (prp) xv zv view plane
25
Perspective Projection
yv (xp,yp,zvp) (xprp,yprp,zprp) xv zv (x,y,z)
26
Perspective Projection
At any point (xp, yp, zp) along the projection line: zp = zvp xp = x (zprp-zvp) / (zprp-z) + xprp (zvp-z) / (zprp-z) yp = y (zprp-zvp) / (zprp-z) + yprp (zvp-z) / (zprp-z)
27
Perspective Projection
Vanishing point y x z One-point perspective projection x-axis vanishing point z-axis vanishing point Two-point perspective projection
28
Perspective Projection
Far plane Near plane Viewer’s position
29
Perspective Projection
Far plane Near plane Viewer’s position
30
Perspective Projection
Clipping window Rectangular Frustum view volume q projection reference point (prp) Far clipping plane Near clipping plane
31
Perspective Projection
P=(x, y, z, 1) Ph=(xh, yh, zh, h) xp = x (zprp-zvp) / (zprp-z) + xprp (zvp-z) / (zprp-z) yp = y (zprp-zvp) / (zprp-z) + yprp (zvp-z) / (zprp-z) h = zprp-z xh = x (zprp-zvp) + xprp (zvp-z) yp = y (zprp-zvp) + yprp (zvp-z) xp = xh /h yp = yh /h
32
Perspective Projection
Ph= Mpers . P Mpers = zprp-zvp xprp xprpzprp 0 zprp-zvp -yprp yprpzprp sz tz zprp
33
Perspective Projection
Symmetric Frustum Frustum center line Far plane view volume Clipping window Near plane q view plane (xprp, yprp, zvp) (xprp, yprp, zprp)
34
Perspective Projection
200 600
35
Perspective Projection
Parallelepiped view volume Symmetric Frustum Perspective Mapping Then apply normalization transformation
36
Perspective Projection
Parallelepiped view volume Oblique Frustum Perspective Mapping (xprp, yprp, zprp)=(0,0,0) 1. Transform to asymmetric frustum (z-axis shear) 2. Normalize viewvolume
37
Perspective Projection
shzx= -(xwmin+xwmax)/2.znear Mshear = shzy= -(ywmin+ywmax)/2.znear assuming that viewplane is at the position of the near plane Mpers = Moblpers= Mpers . Mshear shzx 0 shzy 0 znear 0 -znear sz tz
38
Perspective Projection
Normalization ynorm (xwmax, ywmaz, zfar) transformed frustum znorm (1,1,1) xnorm yv xv zv PRP (-1,-1,-1) (xwmin, ywmin, znear)
39
Perspective Projection
Mnormpers = Mxyscale . Moblpers = -znearsx sx(xwmin+xwmax)/2 0 znearsy sy(ywmin+ywmax)/2 0 sz tz -2znearsx/(xwmax-xwmin) (xwmin+xwmax)/(xwmax-xwmin) 0 znearsy/(ywmax-ywmin) (ywmin+ywmax)/(ywmax-ywmin) 0 (znear+zfar)/(znear-zfar) -2.znear.zfar/(znear-zfar)
40
Perspective Projection
For symmetric frustum with field-of-view angle q: Mnormsymmpers = Mnormsymmpers . R . T cot(q/2)/aspect 0 cot(q/2) 0 0 (znear+zfar)/(znear-zfar) -2.znear.zfar/(znear-zfar)
41
3D Viewing Transformation Pipeline
MC Modeling Transformation WC Viewing Transformation VC Projection Transformation PC Normalization Transformation and Clipping NC Viewport Transformation DC
42
Viewport Transformation
ynorm (xvmax, yvmax, 0) znorm viewport screen (1,1,1) xnorm (-1,-1,-1) (xvmin, yvmin, 0) Mnormviewvol,3Dscreen = (xvmax-xvmin)/ (xvmin+xvmax)/2 (yvmax-yvmin)/2 0 (yvmin+yvmax)/2 0 0 1/2 1/2
43
3D Clipping Inside if: -h≤xh≤h, -h≤yh≤h, -h≤zh≤h
Inside if: -h≤xh≤h, -h≤yh≤h, -h≤zh≤h Use sign bits of h±xh, h±yh, h±zh to set bit1-bit6 far near top bottom right left ynorm znorm (1,1,1) xnorm (-1,-1,-1)
44
Point Clipping Test sign bits of h±xh, h±yh, h±zh
If region code is then inside otherwise eliminate
45
Line Clipping 1. Test region codes
if for both endpoints => inside if RC1 V RC2 = => trivially accept if RC1 Λ RC2 ≠ => trivially reject 2. If a line fails the above tests, use line equation to determine whether there is an intersection
46
Polygon Clipping 1. Check coordinate limits of the object
if all limits are inside all boundaries => save the entire object if all limits are outside any one of the boundaries => eliminate the entire object 2. Otherwise process the vertices of the polygons Apply 2D polygon clipping Clip edges to obtain new vertex list. Update polygon tables to add new surfaces If the object consists of triangle polygons, use Sutherland-Hodgman algorithm.
47
OpenGL Orthogonal projection glMatrixMode (GL_PROJECTION)
gluOrtho (xwmin, xwmax, ywmin, ywmax, dnear, dfar) Orthogonal projection gluPerspective (theta, aspect, dnear, dfar) theta: field-of-view angle (00 – 1800) aspect: aspect ratio of the clipping window (width/height) dnear, dfar: positions of the near and far planes (must have positive values) glFrustum (xwmin, xwmax, ywmin, ywmax, dnear, dfar) if xwmin = -xwmax and ywmin = -ywmax then symmetric view volume
48
OpenGL glMatrixMode (GL_MODELVIEW)
gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz) Designates the origin of the viewing reference frame as, the world coordinate position P0=(x0, y0, z0) the reference position Pref=(xref, yref, zref) and the viewup vector V=(Vx, Vy, Vz) xw yw zw xv yv zv V P0
49
OpenGL float eye_x, eye_y, eye_z; void init (void) {
glClearColor (1.0, 1.0, 1.0, 0.0); // Set display-window color to white. glMatrixMode (GL_PROJECTION); // Set projection parameters. glLoadIdentity(); gluPerspective(80.0, 1.0, 50.0, 500.0); // degree, aspect, near, far glMatrixMode (GL_MODELVIEW); eye_x = eye_y = eye_z = 60; gluLookAt(eye_x, eye_y, eye_z, 0,0,0, 0,1,0); // eye, look-at, view-up } void main (int argc, char** argv) { glutInit (&argc, argv); // Initialize GLUT. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Set display mode. glutInitWindowPosition (50, 500); // Set top-left display-window position. glutInitWindowSize (400, 300); // Set display-window width and height. glutCreateWindow ("An Example OpenGL Program"); // Create display window. glViewport (0, 0, 400, 300); init ( ); // Execute initialization procedure. glutDisplayFunc (my_objects); // Send graphics to display window. glutReshapeFunc(reshape); glutKeyboardFunc(keybrd); glutMainLoop ( ); // Display everything and wait.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.