+ All Categories
Home > Documents > CA 302 Computer Graphics and Visual Programming

CA 302 Computer Graphics and Visual Programming

Date post: 05-Feb-2016
Category:
Upload: royal
View: 35 times
Download: 0 times
Share this document with a friend
Description:
CA 302 Computer Graphics and Visual Programming. Aydın Öztürk aydin.ozturk @ ege.edu.tr http://www. ube.ege.edu.tr/~ozturk. 3D vIEWING. Overview. Viewing a 3D scene Projections Parallel and perspective. Overview. Depth cueing and hidden surfaces Identifying visible lines and surfaces. - PowerPoint PPT Presentation
71
3D VIEWING CA 302 Computer Graphics and Visual Programming Aydın Öztürk [email protected] http://www.ube.ege.edu.tr/~ozturk
Transcript
Page 1: CA 302  Computer Graphics and  Visual Programming

3D VIEWING

CA 302 Computer Graphics and Visual Programming

Aydın Öztürk

[email protected]://www.ube.ege.edu.tr/~ozturk

Page 2: CA 302  Computer Graphics and  Visual Programming

Overview

Viewing a 3D sceneProjections

Parallel and perspective

Page 3: CA 302  Computer Graphics and  Visual Programming

Overview

Depth cueing and hidden surfaces

Identifying visible lines and surfaces

Page 4: CA 302  Computer Graphics and  Visual Programming

Overview

Surface rendering

Page 5: CA 302  Computer Graphics and  Visual Programming

Overview

Exploded and cutaway views

Page 6: CA 302  Computer Graphics and  Visual Programming

Overview

3D and stereoscopic viewing

Page 7: CA 302  Computer Graphics and  Visual Programming

3D Viewing Pipeline

ModelingTransformation

ViewingTransformation

ProjectionTransformation

Normalization

Transformation

and Clipping

ViewportTransformation

MC

WC

VC PC

NC

DC

Page 8: CA 302  Computer Graphics and  Visual Programming

Viewing Coordinates

Generating a view of an object in 3D is similar to photographing the object.

Whatever appears in the viewfinder is projected onto the flat film surface.

Depending on the position, orientation and aperture size of the camera corresponding views of the scene is obtained.

Page 9: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

For a particular view of a scene first we establish viewing-coordinate system.

A view-plane (or projection plane) is set up perpendicular to the viewing z-axis.

World coordinates are transformed to viewing coordinates, then viewing coordinates are projected onto the view plane.

xw

zw

yw

xv

zv

yv

P0=(x0 , y0 , z0)

Page 10: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

To establish the viewing reference frame, we first pick a world coordinate position P0=(x0 , y0 , z0) calle the view point or viewing position (sometimes the eye position or the camera position.This point is the origin of our viewing coordinate

system. If we choose a point on an object we can

think of this point as the position where we aim a

camera to take a picture of the object.

Page 11: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

Next, we select the positive direction for the viewing z-axis, and the orientation of the view plane, by specifying the view-plane normal vector, N.

xw

zw

yw

xv

zv

P0

P

N

xv

yv

Page 12: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

We choose a world coordinate position P on an object (we can

think of this point as the position where we aim a camera to take a picture of the object and this point establishes the direction for N.

xw

zw

yw

xv

zv

P0

P

N

xv

yv

Page 13: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

OpenGL establishes the direction for N using the point P as a look at point relative to the viewing coordinate origin

xw

zw

yw

xv

zv

P0

P

N

xv

yv

Page 14: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

Finally, we choose the up direction for the view by specifying view-up vector V.

This vector is used to establish the positive direction for the yv axis.

The vector V is perpendicular to N and is defined by selecting a positon relative to the world coordinate origin.

xw

zw

yw

xv

zv

yv

P0

P

N

V

Page 15: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

Using N and V, we can compute a third vector U, perpendicular to both N and V, to define the direction for the xv axis.

xw

zw

yw

xv

zv

yv

P0

P

N

V

Page 16: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

Usually, it can be difficult to determine a direction for V that is precisely prependicular to N.

Therefore, the user defined orientation of V is projected onto a plane that is prependicular to N.

Any direction for the view-up vector V can be chosen. A convenient choice is often in a direction parallel to the world yw axis that is V=(0,1,0)

xw

zw

yw

xv

zv

yv

P0

P

N

V

Page 17: CA 302  Computer Graphics and  Visual Programming

Specifying The View Coordinates

To obtain a series of views of a scene , we can keep the the view reference point fixed and change the direcion of N. This corresponds to generating views as we move around the viewing coordinate origin.

P0

V

N

N

Page 18: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

Conversion of object descriptions from world to viewing coordinates is equivalent to transformation that superimpoes the viewing reference frame onto the world frame using the translation and rotation.

xw

yw

zw

xv

yv

zv

Page 19: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

First, we translate the view reference point to the origin of the world coordinate system

xw

yw

zw

xv

yv

zv

Page 20: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

Second, we apply rotations to align the xv,, yv and zv axes with the world xw, yw and zw axes, respectively.

xw

yw

zw

xv

yv

zv

yv xv

zv

Page 21: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

If the view reference point is specified at word position (x0, y0, z0), this point is translated to the world origin with the translation matrix T.

1000

100

010

001

0

0

0

z

y

x

T

Page 22: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

The rotation sequence requires 3 coordinate-axis transformation depending on the direction of N.

First we rotate around xw-axis to bring zv into the xw -zw plane.

1000

00

00

0001

CosSin

SinCosxR

Page 23: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

Then, we rotate around the world yw axis to align the zw and zv axes.

1000

00

0010

00

CosSin

SinCos

yR

Page 24: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

The final rotation is about the world zw axis to align the yw and yv axes.

1000

0100

00

00

CosSin

SinCos

zR

Page 25: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

The complete transformation from world to viewing coordinate transformation matrix is obtaine as the matrix product

TRRRM xyzvcwc ,

Page 26: CA 302  Computer Graphics and  Visual Programming

Another method for generating the rotation-transformation matrix is to calculate uvn vectors and obtain the composite rotation matrix directly. Given the vectors N and V , these unit vectors are calculated as

),,(

),,(

),,(

321

321

321

vvv

uuu

nnn

unv

NVNV

u

NN

n

Transformation From World To Viewing Coordinates

Page 27: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

This method also automatically adjusts the direction for V so that v is perpendicular to n. The rotation matrix for the viewing transformation is then

10   0   0

0

0   

0   

321

321

321

nnn

vvv

uuu

R

Page 28: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

The matrix for translating the viewing origin to the world origin is

1   0   0

100

  0 10

  0 01

0

0

0

z

y

x

R

Page 29: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates

The composite matrix for the viewing transformation is then

zyx

zyx

zyx

VCWC

nznynxt

vzvyvxt

uzuyuxt

tnnn

tvvv

tuuu

00003

00002

00001

3321

2321

1321

,

where

10   0   0

   

   

Pn

Pv

Pu

M

Page 30: CA 302  Computer Graphics and  Visual Programming

Transformation From World To Viewing Coordinates: An Example For 2D System

y

x

x′

y′

Θ=300

0 2 4 6 0

2

4

6

22

P=(5,5)

P0=(4,3)

Page 31: CA 302  Computer Graphics and  Visual Programming

y

x

x′y′

Θ=300

2 4 6

0

2

4

6

2 2

P

P0

Translation:

100

310

401

T

Transformation From World To Viewing Coordinates: An Example For 2d System

Page 32: CA 302  Computer Graphics and  Visual Programming

Rotation

0

2

4

6

y

xx′

y′

2 4 6

P

P0

100

0866.05.0

05.0866.0

R

Transformation From World To Viewing Coordinates: An Example For 2d System

Page 33: CA 302  Computer Graphics and  Visual Programming

New coordinates

100

310

401

100

0866.05.0

05.0866.0

.vcwcM

1

232.1

866.1

1

5

5

100

598.0866.0500.0

964.4500.0866.0

1

'

'

y

x

Transformation From World To Viewing Coordinates: An Example For 2d System

Page 34: CA 302  Computer Graphics and  Visual Programming

Alternative Method

xTRx

R

v

n

'

100

0866.0500.0

0500.0866.0

)866.0500.0(

)500.0866.0( y

x

x′y′

Θ=3000

1

2

3

1

1P

P0 1 2 3

nv

Transformation From World To Viewing Coordinates: An Example For 2d System

Page 35: CA 302  Computer Graphics and  Visual Programming

Projections

Once WC description of the objects in a scene are converted to VC we can project the 3D objects onto 2D view-plane.

Two types of projections:

-Parallel Projection

-Perspective Projection

Page 36: CA 302  Computer Graphics and  Visual Programming

Classical Viewings

Hand drawings : Determined by a specific relationship between the object and the viewer.

Page 37: CA 302  Computer Graphics and  Visual Programming

Parallel Projections

Coordinate Positions are transformed to the view plane along parallel lines.

P1

P2P′2

P′1

View Plane

Page 38: CA 302  Computer Graphics and  Visual Programming

Parallel Projections

Orthographic parallel projection: The projection is perpendicular to the view plane.

Oblique parallel projecion: The parallel projection is not perpendicular to the view plane.

Page 39: CA 302  Computer Graphics and  Visual Programming

Orthographic Parallel Projection

The orthographic transformation

11000

0000

0010

0001

1

'

'

'

z

y

x

z

y

x

Page 40: CA 302  Computer Graphics and  Visual Programming

Orthographic Parallel Projection

Page 41: CA 302  Computer Graphics and  Visual Programming

Oblique Parallel Projection

The projectors are still ortogonal to the projection plane But the projection plane can have any orientation with respect to the

object. It is used extensively in architectural and mechanical design.

Page 42: CA 302  Computer Graphics and  Visual Programming

•Oblique Parallel Projection

• Preserve parallel lines but not angles• Isometric view : Projection plane is placed symmetrically

with respect to the three principal faces that meet at a corner of object.

• Dimetric view : Symmetric with two faces.• Trimetric view : General case.

Page 43: CA 302  Computer Graphics and  Visual Programming

Oblique Parallel Projection

Preserve parallel lines but not angles Isometric view : Projection plane is placed symmetrically with

respect to the three principal faces that meet at a corner of object. Dimetric view : Symmetric with two faces. Trimetric view : General case.

Page 44: CA 302  Computer Graphics and  Visual Programming

Oblique Parallel Projection

φ

α

(xp, yp)

(x, y, z)

(x, y)

yv

xv

zv

L

)sin(

)cos(

tan

sin

cos

1

1

1

Lzyy

Lzxx

zLz

L

Lyy

Lxx

p

p

p

p

)sin(

)cos(

tan

sin

cos

1

1

1

Lzyy

Lzxx

zLz

L

Lyy

Lxx

p

p

p

p

Page 45: CA 302  Computer Graphics and  Visual Programming

The oblique transformation

11000

0000

0sin10

0cos01

1

1

1

z

y

x

L

L

z

y

x

p

p

p

Oblique Parallel Projection

Page 46: CA 302  Computer Graphics and  Visual Programming

Oblique Parallel Projection

Page 47: CA 302  Computer Graphics and  Visual Programming

Perspective Projections

First discovered by Donatello, Brunelleschi, and DaVinci during Renaissance

Objects closer to viewer look largerParallel lines appear to converge to single point

Page 48: CA 302  Computer Graphics and  Visual Programming

Perspective Projections

In perspective projection object positions are transformed to the view plane along lines that converge to a point called the projection reference point (or center of projection)

Page 49: CA 302  Computer Graphics and  Visual Programming

Perspective Projections

In the real world, objects exhibit perspective foreshortening: distant objects appear smaller

The basic situation:

Page 50: CA 302  Computer Graphics and  Visual Programming

When we do 3-D graphics, we think of the screen as a 2-D window onto the 3-D world:

How tall shouldthis bunny be?

Perspective Projections

Page 51: CA 302  Computer Graphics and  Visual Programming

The geometry of the situation is that of similar triangles. View from above:

d

P (x, y, z) X

Z(0,0,0)x′ = ?

Perspective Projections

View plane

(xp, yp)

Page 52: CA 302  Computer Graphics and  Visual Programming

Desired result for a point [x, y, z, 1]T projected onto the view plane:

dzdz

y

z

ydy

dz

x

z

xdx

z

y

d

y

z

x

d

x

',','

',

'

Perspective Projections

Page 53: CA 302  Computer Graphics and  Visual Programming

1100

0100

0010

0001

d

eperspectivM

Perspective Projections

Page 54: CA 302  Computer Graphics and  Visual Programming

hyyhxx

dzh

z

y

x

dh

z

y

x

hphp

h

h

h

/,/

/

 

10100

0100

0010

0001

Perspective Projections

Page 55: CA 302  Computer Graphics and  Visual Programming

Projection Matrix

We talked about geometric transforms, focusing on modeling transforms Ex: translation, rotation, scale, gluLookAt() These are encapsulated in the OpenGL modelview matrix

Can also express projection as a matrix These are encapsulated in the OpenGL projection matrix

Page 56: CA 302  Computer Graphics and  Visual Programming

When a camera used to take a picture, the type of lens used determines how much of the scene is caught on the film.

In 3D viewing, a rectangular view window in the view plane is used to the same effect. Edges of the view window are parallel to the xv-yv axes and window boundary positions are specified in viewing coordinates.

View Volumes

Page 57: CA 302  Computer Graphics and  Visual Programming

View Volumes

zvwindow

Front Plane

Back Plane

View volume

Parallel ProjectionParallel Projection Perspective Projection

Front Plane

Back Plane

View volume (frustum)

window

Projection Reference Point

Page 58: CA 302  Computer Graphics and  Visual Programming

Clipping

An algorithm for 3D clipping identifies and saves all surface segments within the view volume for display.

All parts of object that are outside the view volume are discarded.

Page 59: CA 302  Computer Graphics and  Visual Programming

Clipping Lines

To clip a line against the view volume, we need to test the relative position of the line using the view volume’s boundary plane equation.

An end point (x,y,z) of a line segment is outside a boundary plane if

where A, B, C and D are the plane parameters for that boundary.

0 DCzByAx

Page 60: CA 302  Computer Graphics and  Visual Programming

Clipping Polygon Surface

To clip a polygon surface, we can clip the individual polygon edges.

First we test the coordinate extends against each boundary of the view volume to determine whether the object is completely inside or completely outside of that boundary.

If the object has intersection with the boundary then we apply intersection calculations.

Page 61: CA 302  Computer Graphics and  Visual Programming

Clipping Polygon Surface

The projection operation can take place before the view- volume clipping or after clipping.

All objects within the view volume map to the interior of the specified projection window.

The last step is to transform the window contents to a 2D view port.

Page 62: CA 302  Computer Graphics and  Visual Programming

Clipping Polygon Surface

Viev volume

Page 63: CA 302  Computer Graphics and  Visual Programming

Steps For Normalized View Volumes

A scene is constructed by transforming object descriptions from modeling coordinates to wc.

The world descriptions are converted to viewing coordinates.The viewing coordinates are transformed to projection

coordinates which effectively converts the view volume into a rectangular parallelepiped.

The parallelepiped is mapped into the unit cube called normalized projection coordinate system.

A 3D viewport within the unit cube is constructed.Normalized projection coordinates are converted to device

coordinates for display.

Page 64: CA 302  Computer Graphics and  Visual Programming

Normalized View Volumes

(Xvmax,Yvmax, Zvmax)

x

y

z

(Xwmin, Ywmin, Zfront)

(Xwmax,Ywmax, Zback)

(Xvmin, Yvmin, Zwmin)

Unit Cube

Parallelepiped

View Volume

Page 65: CA 302  Computer Graphics and  Visual Programming

OpenGL Projection Commands

Page 66: CA 302  Computer Graphics and  Visual Programming

OpenGL Look-At Function

OpenGL utility function

VRP: eyePoint (eyex, eyey, eyez) VPN: ( atPoint – eyePoint ) =(atx, aty, atz) – (eyex, eyey, eyez) VUP: (upPoint – eyePoint) =(upx, upy, upz)

gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz);

look-at positioning

Page 67: CA 302  Computer Graphics and  Visual Programming

Projections in OpenGL

Angle of view, field of view : Only objects that fit within

the angle of view of the camera appear in the image

View volume, view frustum : Be clipped out of scene Frustum – truncated

pyramid

Page 68: CA 302  Computer Graphics and  Visual Programming

Projections in OpenGL

Page 69: CA 302  Computer Graphics and  Visual Programming

Perspective in OpenGL

Specification of a frustum

near, far: positive number !!

zmax = – far

zmin = – near

glMatrixMode(GL_PROJECTION);glLoadIdentity( );glFrustum(xmin, xmax, ymin, ymax, near, far);

Page 70: CA 302  Computer Graphics and  Visual Programming

Perspective in OpenGL

Specification using the field of view

fov: angle between top and

bottom planes fovy: the angle of view in the

up (y) direction aspect ratio: width / height

glMatrixMode(GL_PROJECTION);

glLoadIdentity( );gluPerspective(fovy, aspect, near, far);

Page 71: CA 302  Computer Graphics and  Visual Programming

Parallel Viewing in OpenGL

Orthographic viewing function

OpenGL provides only this parallel-viewing function

near < far !!

no restriction on the sign

zmax = – far

zmin = – near

glMatrixMode(GL_PROJECTION);glLoadIdentity( );glOrtho(xmin, xmax, ymin, ymax, near, far);


Recommended