49
3D Viewing 3D Viewing

3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Embed Size (px)

Citation preview

Page 1: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing3D Viewing

Page 2: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

MC

WC

Normalization Transformation and Clipping

NC

Viewport Transformation

DC

PC

Projection Transformation

Viewing Transformation

VC

xw

yw

zw

xvyv

zvVP0N

xw

yw

zw

xv

yv

zv

clipping window

view volume

xvyv

zv

znorm

ynorm

(1,1,1)

(-1,-1,-1)

viewport screen

(xvmin, yvmin, 0)

(xvmax, yvmax, 0)

Page 3: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

Viewing Transformation

Normalization Transformation and Clipping

Viewport Transformation

MC

WC

PC

NC

DC

Projection Transformation

VC

Page 4: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

Viewing Transformation

Normalization Transformation and Clipping

Viewport Transformation

MC

WC

PC

NC

DC

Projection Transformation

VC

Page 5: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing

V view up vector

P0 = (x0, y0, z0) view point

N viewplane normal

Viewplane is at point zvp in negative zv direction

V is perpendicular to N

xw

yw

zw

xvyv

zvV

P0N

Page 6: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing

xv yv zv is a right-handed viewing coordinate system

xv

yv

zv

v

nu

Page 7: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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

xw

yw

zw

xvyv

zvP0

xw

yw

zw

xvyv

zv

Page 8: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

Viewing Transformation

Normalization Transformation and Clipping

Viewport Transformation

MC

WC

PC

NC

DC

Projection Transformation

VC

Page 9: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Projections

Parallel

Perspective

orthogonal

oblique

axonometric isometric

cavalier

cabinet

Page 10: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Projections

Parallel projection Perspective projection

view plane view plane

Page 11: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Orthogonal Projection

Page 12: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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

Page 13: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

Viewing Transformation

Normalization Transformation and Clipping

Viewport Transformation

MC

WC

PC

NC

DC

Projection Transformation

VC

Page 14: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Orthogonal Projection

Clipping

far planenear plane

clipping window

view volume

xv

yv

zv

Page 15: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Orthogonal Projection

Normalization

Mortho,norm . R . T

xv

yv

zv

xnorm

znorm

ynorm

(1,1,1)

(-1,-1,-1)

Page 16: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

Oblique projection: projection path is not perpendicular to the view plane

view plane

Page 17: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

zv

xv

yv

(x,y,z)

(x,y,zvp)

(xp,yp,zvp)

Page 18: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

xp = x + L1 (zvp – z) cos yp = y + L1 (zvp – z) sin shearing transformation

view plane

L1

Page 19: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

Cavalier Projection

Cabinet Projection

Page 20: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

zv

xv

yv

(x,y,z)

(x,y,zvp)

(xp,yp,zvp)

Vp viewvolume

window

Vp

Page 21: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Oblique Projection

MWC,VC . Morth,norm . Mobl

Mobl,norm

orthogonal coordinates

window

Vp

shear

window

Vp

Page 22: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Viewer’s position

View plane

Parallel Projection

Page 23: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Viewer’s position

View plane

Page 24: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

zv

xv

yv

projectionreference point (prp)

view plane

Page 25: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

zvxv

yv

(x,y,z)

(xprp,yprp,zprp)(xp,yp,zvp)

Page 26: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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)

Page 27: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

x

z

y

One-point perspective projection

Vanishing point

Two-point perspective projection

x-axis vanishing point

z-axis vanishing point

Page 28: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Near plane

Far plane

Viewer’s position

Page 29: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Far plane

Viewer’s position

Near plane

Page 30: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

projectionreferencepoint (prp)

Rectangular Frustumview volume

Far clipping plane

Nearclipping plane

Clipping window

Page 31: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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

Page 32: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Ph= Mpers . P

Mpers =

zprp-zvp 0 -xprp xprpzprp

0 zprp-zvp -yprp yprpzprp 0 0 sz tz

0 0 -1 zprp

Page 33: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Symmetric Frustum

view plane

view volume

Far plane

Near planeClipping window

Frustumcenter line

(xprp, yprp, zprp)

(xprp, yprp, zvp)

Page 34: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Page 35: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Then apply normalization transformation

Symmetric Frustum

Parallelepipedview volumePerspective Mapping

Page 36: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

1. Transform to asymmetric frustum (z-axis shear)

2. Normalize viewvolume

Oblique Frustum

Parallelepipedview volumePerspective Mapping

(xprp, yprp, zprp)=(0,0,0)

Page 37: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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

1 0 shzx 00 1 shzy 00 0 1 00 0 0 1

znear 0 0 00 -znear 0 00 0 sz tz

0 0 -1 0

Page 38: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Normalization

yv

xnorm

znorm

ynorm

(1,1,1)

(-1,-1,-1)

xv

zv

PRP

(xwmin, ywmin, znear)

(xwmax, ywmaz, zfar)

trans

form

ed fr

ustu

m

Page 39: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

Mnormpers = Mxyscale . Moblpers

=

=

-znearsx 0 sx(xwmin+xwmax)/2 00 -znearsy sy(ywmin+ywmax)/2 00 0 sz tz

0 0 -1 0

-2znearsx/(xwmax-xwmin) 0 (xwmin+xwmax)/(xwmax-xwmin) 00 -2znearsy/(ywmax-ywmin) (ywmin+ywmax)/(ywmax-ywmin) 00 0 (znear+zfar)/(znear-zfar) -2.znear.zfar/(znear-zfar) 0 0 -1 0

Page 40: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Perspective Projection

For symmetric frustum with field-of-view angle :

Mnormsymmpers =

Mnormsymmpers . R . T

cot(/2)/aspect 0 0 00 cot(/2) 0 00 0 (znear+zfar)/(znear-zfar) -2.znear.zfar/(znear-zfar) 0 0 -1 0

Page 41: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Viewing Transformation Pipeline

Modeling Transformation

Viewing Transformation

Normalization Transformation and Clipping

Viewport Transformation

MC

WC

PC

NC

DC

Projection Transformation

VC

Page 42: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Viewport Transformation

Mnormviewvol,3Dscreen =

(xvmax-xvmin)/2 0 0 (xvmin+xvmax)/20 (yvmax-yvmin)/2 0 (yvmin+yvmax)/20 0 1/2 1/2 0 0 0 1

viewport screen

(xvmin, yvmin, 0)

(xvmax, yvmax, 0)

xnorm

znorm

ynorm

(1,1,1)

(-1,-1,-1)

Page 43: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

3D Clipping

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

6 5 4 3 2 1

xnorm

znorm

ynorm

(1,1,1)

(-1,-1,-1)

Page 44: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Point Clipping

Test sign bits of h±xh, h±yh, h±zh

If region code is 000000 then inside

otherwise eliminate

Page 45: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Line Clipping

1. Test region codes if 000000 for both endpoints => inside if RC1 V RC2 = 000000 => trivially accept

if RC1 Λ RC2 ≠ 000000 => trivially reject

2. If a line fails the above tests, use line equation to determine whether there is an intersection

Page 46: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

Polygon Clipping1. 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 clippingClip edges to obtain new vertex list.

Update polygon tables to add new surfaces

If the object consists of triangle polygons, use Sutherland-Hodgman algorithm.

Page 47: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

OpenGL 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

Page 48: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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

xvyv

zvVP0

Page 49: 3D Viewing. 3D Viewing Transformation Pipeline Modeling Transformation MC WC Normalization Transformation and Clipping NC Viewport Transformation DC PC

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.}