School of Computer Science University of Seoul. 1. Classical and Computer Viewing 2. Viewing with a...

Post on 28-Dec-2015

215 views 0 download

Tags:

Transcript of School of Computer Science University of Seoul. 1. Classical and Computer Viewing 2. Viewing with a...

Computer Graphics(fall 2009)

School of Computer ScienceUniversity of Seoul

Chap 5: Viewing

1. Classical and Computer Viewing2. Viewing with a Computer3. Positioning of the Camera4. Simple Projections5. Projections in OpenGL6. Hidden-Surface Removal7. Interactive Mesh Displays8. Parallel-Projection Matrices9. Perspective-Projection Matrices10. Projections and Shadows

5.1 Classical and Computer Viewing

Basic Elements

Object Projector Projection Plane COP (Center of Projection) or DOP (Direc-

tion of Projection) Principal faces/directions

Classical Viewing

1. Orthographic projections2. Axonometric projections

Isometric, dimetric, trimetric

3. Oblique projections4. Perspective projections

One-, two-, three-point perspectives

1. Orthographic Projections

Projectors perpendicular to the projection plane

Multiview orthographic projection

(image courtesy of http://img19.imageshack.us/i/importedpsk.jpg)

2. Axonometric Projections

Projectors orthogonal to the projection plane

Projection plane can have any orientation with respect to the object

Isometric, dimetric, trimetric How many principal faces is the projection

plane is placed symmetrically with respect to

3. Oblique Projections

Most general parallel views Projector can have an arbitrary angle with

the projection plane

4. Perspective Viewing

To achieve real-looking images One-, two-, three-point perspectives

Number of vanishing points How many of three principal directions in the

object are parallel to the projection plane?

5.2 Viewing with a Camera

All the classical viewing can be implemented HOW??? (§5.9 & §5.10)

Default camera Orthographic Projection plane: “z=0” At the origin pointing to –z-direction Up direction: +y-direction Viewing volume: cube with side 2 objects outside of this box cannot be rendered! (“clipping”)

Objects behind the camera can be rendered! (only for orthog-onal projections)

OpenGL Viewing

5.3 Positioning of the Camera

Positioning the Camera

No separate “viewing” transformation con-catenated into model-view matrices

Object coords.world coords.eye coords. What matters is the relative position of ob-

jects and the camera At any given time, the state of the model-

view matrix encapsulates the relationship between the camera frame and the object frame

Positioning the Camera (cont’d)

Separate matrices For model & viewing

Model-view matrix (OpenGL)

glMatrixMode(GL_MODEL);glMultMatrix(Mo);render_object();

glMatrixMode(GL_VIEW);glMultMatrix(Mc);

glMatrixMode(GL_MODELVIEW);glMultMatrix(inv(Mc));glMultMatrix(Mo);render_object();

Viewing-Coordinate System Defined by

Position (VRP: view-reference point, p) Viewing direction (VPN: view-plane normal , n) Up direction (VUP: view-up vector, vup)

Projected on the view plane (v) 3rd orthogonal direction (u) obtained by cross product

View-orientation matrixderivation? (advanced)

x, y, z axes u, v, n gluLookAt

Needs to be called before transforming objects Error in the book (p.251)

Other Viewing APIs

Roll, pitch, yaw To specify the orientation Ex) flight simulation

Elevation, azimuth, twist Direction from the viewer Ex) star in the sky

5.4 Simple Projections

Perspective Projections

All projectors pass through the origin (x,y,z)(xp,yp,zp) Nonlinear, not affine, irreversible Perspective division required “Extended” homogeneous coordinates re-

quired 3D points = 4D lines (through the origin): (x,y,z,1)(x,y,z,z/d)=(xp,yp,zp,1)

How does the matrix look like?

Orthogonal Projections

No division required (x,y,z)(x,y,0)=(xp,yp,zp) How does the matrix look like?

5.5 Projections in OpenGL

Projections in OpenGL

Parameters in eye coordinates Near/far clipping planes

Perspective Viewing in OpenGL

glFrustum Need not be symmetric

gluPerspective Symmetric Defined using fov (field of view) error in the figure 5.28 of the textbook

Calls glFrustum internallynear & far parameters must be positive

(image courtesy of the redbook)

Parallel Viewing in OpenGL

glOrthogluOrtho2D No sign restrictions on near & far param-

eters

5.6 Hidden-Surface Removal

Hidden-Surface Removal How to determine which object is closer than others? What happens without hidden-surface removal? Two classes

Object space algorithm BSP (Binary Space Partitioning) tree restriction?

Image space algorithm Z-buffer algorithm used in (most) interactive graphics system including

OpenGL Complexity proportional to the resolution Small overhead More in Chap 7

Culling Back faces of closed objects not rendered Number of primitives reduced early

5.7 Interactive Mesh Displays

5.8 Parallel-Projection Matri-ces

Projection Normalization

All projections are converted into orthogo-nal projections by first distorting the objects such that the orthogonal projection of the distorted objects is the same as the desired projection of the original objects.

Simplifies clipping & hidden-surface removal(Chap 7)

Orthogonal-Projection Matrices

1. Normalization(by OpenGL projection matrix) Converts the specified viewing volume to canonical

view volume ([-1,1]x[-1,1]x[-1,1] cube) Translation followed by scaling

2. Orthographic projection (x,y,z) (x,y,0)

1000

200

02

0

002

nearfar

nearfar

nearfar

bottomtop

bottomtop

bottomtop

rightleft

rightleft

rightleft

P

Oblique Projections

We can either Define the 4x4 matrix directly or Implement by shear followed by orthographic

projection (In practice, normalization is re-quired in between)

1000

0000

0cot10

0cot01

P

1000

0100

0cot10

0cot01

1000

0000

0010

0001

,

HMP ortho

5.9 Perspective-Projection Matrices

Simple Perspective Projection

Frustum defined by x=±z, y=±z, z_max, z_min

For the perspective-normalization matrix N,what converts the planes as follows? x=±z x’’=±1 y=±z y’’=±1 z=z_max z’’=1 z=z_minz’’=-1

0100

00

0010

0001

N

minmax

minmax

zz

zz

minmax

minmax2

zz

zz

Perspective Projection

Depth ordering preserved by perspective-projection matrix hidden-surface removal works in the normalized volume

General perspective projection1. Apply shear to convert the asymmetric frus-

tum to a symmetric one2. Scale to the “simple” frustum

5.10 Projections and Shad-ows

Shadows

A point is in shadow if it is not illuminated by any light source, or equivalently if a viewer at that point cannot see any light source.

Shadow polygon

Rendering Shadow

Render twice: object polygon and shadow polygon

How to find the shadow polygon? perspec-tive projection (with light source as the camera)

Works only for shadowson flat surface

More on Chap 12