+ All Categories
Home > Documents > Andries van Dam September 14, 2004 Transformation 1/32

Andries van Dam September 14, 2004 Transformation 1/32

Date post: 25-Feb-2016
Category:
Upload: beth
View: 20 times
Download: 0 times
Share this document with a friend
Description:
Transformations. Andries van Dam September 14, 2004 Transformation 1/32. Object construction using assemblies/hierarchy of parts à la Sketchpad’s masters and instances; leaves contain primitives Aid to realism objects, camera use realistic motion - PowerPoint PPT Presentation
32
I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S Andries van Dam September 14, 2004 Transformation 1/32 Transformations
Transcript
Page 1: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 1/32

Transformations

Page 2: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

• Object construction using assemblies/hierarchy of parts à la Sketchpad’s masters and instances; leaves contain primitives

• Aid to realism– objects, camera use realistic motion

• Help form 3D “object hypothesis” (James Gibson)– kinesthetic feedback as user manipulates objects or synthetic

camera• Synthetic camera/viewing

– definition– normalization (from arbitrary to canonical view)

• Note: Helpful applets– try out some of the concepts touched on here by following the links

on our webpage for Applets->Linear Algebra and Applets->Scenegraphs

Andries van Dam September 14, 2004 Transformation 2/32

How Are GeometricTransformations (T,R,S) Used in

Computer Graphics?“is composed of hierarchy”

ROBOT transformation

upper body lower body

head trunk armstanchion base

Scenegraph(see Sceneview assignment)

Page 3: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 2/32

Lines and Polylines2D Object Definition (1/3)

Convex: For every pair of points in the polygon, the line between them is fully contained in the polygon.

Convex vs. Concave Polygons

Concave: Not convex: some two points in the polygon are joined by a line not fully contained in the polygon.

• Lines drawn between ordered points to create more complex forms called polylines

• Same first and last point make closed polyline or polygon

• If it does not intersect itself, called simple polygon

Page 4: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 4/32

Circles• Consist of all points equidistant from one

predetermined point (the center)• (radius) r = c, where c is a constant

• On a Cartesian grid with center of circle at origin equation is r2 = x2 + y2

2D Object Definition (2/3)

triangle square

rectangle

P0

P1r

0

y

xr

Special polygons

Page 5: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 5/32

Circle as polygon• Informally: a regular polygon with > 15 sides

2D Object Definition (3/3)

0 1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

0 1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

(Aligned) EllipsesA circle scaled along the x or y axis

Example: height, on y-axis, remains 3, while length, on x-axis, changes from 3 to 6

Page 6: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 6/32

Vertices in motion (“Generative object description”)• Line is drawn by tracing path of a point as it moves

(one dimensional entity)

• Square drawn by tracing vertices of a line as it moves perpendicularly to itself (two dimensional entity)

• Cube drawn by tracing paths of vertices of a square as it moves perpendicularly to itself (three-dimensional entity)

• Circle drawn by swinging a point at a fixed length around a center point

2D to 3D Object Definition

Page 7: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

• Triangles and tri-meshes

• Often parametric polynomials, called splines

Andries van Dam September 14, 2004 Transformation 7/32

Building 3D Primitives

PatchesCurves

Boundaries arePolynomial curvesIn 3D

Page 8: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 8/32

• 3D Coordinate geometry• Vectors in 2 space and 3 space• Dot product and cross product – definitions and uses• Vector and matrix notation and algebra• Properties (associativity but NOT commutativity)• Matrix transpose and inverse – definition, use, and

calculation• Homogeneous coordinates

• You will need to understand these concepts• If you don’t think you do, go to the linear algebra

help session on Wednesday!

Useful concepts from Linear Algebra

Page 9: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 9/32

Let’s Go Shopping• Need 6 apples, 5 cans of soup, 1 box of tissues, and 2

bags of chips• Stores A, B, and C (East Side Market, Whole Foods,

and Store 24) have following unit prices respectively

Short Linear Algebra Digression: Vector and Matrix

Notation, A non-Geometric Example (1/2)

East Side

Whole Foods

Store 24

1 apple

$0.20

$0.65

$0.95

1 can of soup

$0.93

$0.95

$1.10

1 box of tissues

$0.64

$0.75

$0.90

1 bag of chips

$1.20

$1.40

$3.50

Page 10: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 10/32

• Let’s use a shorthand to represent the situation (assuming we can remember order of items and corresponding prices):

• Column vector for quantities, q:

• Row vector for corresponding prices at the stores (P):

A Non-Geometric Example (2/2)

store A (East Side)

store B (Whole Foods)

store C (Store 24)

[0.20 0.93 0.64 1.20]

[0.65 0.95 0.75 1.40]

[0.95 1.10 0.90 3.50]

2156

Page 11: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 11/32

Let’s calculate for each of the three stores.• Store A:

4

totalCostA = PAiqi i = 1= (0.20 • 6) + (0.93. • 5) + (0.64 • 1) + (1.20 • 2)= (1.2 + 4.65 + 0.64 + 2.40)= 8.89

• Store B: 4

totalCostB = PBiqi = 3.9 + 4.75 + 0.75 + 2.8 = 12.2

i = 1

• Store C: 4

totalCostC = PCiqi = 5.7 + 5.5 + 0.9 + 7 = 19.1 i = 1

What do I pay?

Page 12: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 12/32

• We can express these sums more compactly:

• The totalCost vector is determined by row-column multiplication where row = price, column = quantities, i.e. dot product of price row with quantities column

– dot product is the sum of the pairwise multiplications

Using Matrix Notation

2156

50.390.010.195.040.175.095.065.020.164.093.020.0

)(

C

B

A

totalCosttotalCosttotalCost

AllP

dwczbyax

wzyx

dcba

Page 13: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 13/32

• Component-wise addition of vectors

v’ = v + t where andx’ = x + dxy’ = y + dy

• To move polygons: just translate vertices (vectors) and then redraw lines between them

• Preserves lengths (isometric)• Preserves angles (conformal)

2D Translation

dydx

tyx

vyx

v ,''

',

Note: House shifts position relative to origin

dx = 2dy = 3

Y

X 0

1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

12

44

NB: A translation by (0,0), i.e. no translation at all, gives us the identity matrix, as it should

Page 14: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 14/32

• Component-wise scalar multiplication of vectors

v’ = Sv where

and

• Does not preserve lengths• Does not preserve angles (except when scaling is

uniform)

2D Scaling

''

',yx

vyx

v

y

x

ss

S0

0

ysyxsx

y

x

''

Note: House shifts position relative to origin

Y

X 0

1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

12

13

26

29

23

y

x

ss

Page 15: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 15/32

• Rotation of vectors through an angle

v’ = Rv where

andx’ = x cos – y sin y’ = x sin + y cos

• Proof is by double angle formula• Preserves lengths and angles

• Note: house shifts position relative to the origin

2D Rotation

cossinsincos

R

''

',yx

vyx

v

6

Y

X 0

1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

NB: A rotation by 0 angle, i.e. no rotation at all, gives us the identity matrix, as it should

Page 16: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 16/32

• Suppose object is not centered at origin?• Solution: move it to the origin, then scale and/or

rotate, then move it back.

• We’d like to be able to compose successive transformations…

2D Rotation and Scale are Relative to Origin

Page 17: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 17/32

• Translation, scaling and rotation are expressed (non-homogeneously) as:

• Composition is difficult to express, since translation not expressed as a matrix multiplication

• Homogeneous coordinates allow all three to be expressed homogeneously, allowing composition via multiplication by 3x3 matrices

• w is 1 for affine transformations in graphics

Homogenous Coordinates

translation:

scale:

rotation:

v’ = v + t

v’ = Sv

v’ = Rv

wy

wxPyxP

wwyxPwwwywxPyxP

dd

h

hd

','),(

0),,','(0),,,(),(

22

2

Page 18: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 18/32

• P2d is intersection of line determined by Ph with the w = 1 plane

• So an infinite number of points correspond to (x, y, 1) : they constitute the whole line (tx, ty, tw)

What is ?

wyx

P2d (x/w,y/w,1)

Ph (x,y,w)

Y

X

W

1

Page 19: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 19/32

• For points written in homogeneous

translation, scaling and rotation relative to the origin are expressed homogeneously as:

2D Homogeneous CoordinateTransformations (1/2)

coordinates ,1

yx

Page 20: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 20/32

• Consider the rotation matrix

• The 2 x 2 submatrix columns:– are unit vectors (length=1)– are perpendicular (dot product=0)– are vectors into which X-axis and Y-axis rotate (are

images of x and y unit vectors)• The 2 x 2 submatrix rows:

– are unit vectors– are perpendicular– rotate into X-axis and Y-axis (are pre-images of x and y

unit vectors)• These properties of rows and columns preserve

lengths and angles of the original geometry. Therefore, this matrix is a “rigid body” transformation.

2D Homogeneous CoordinateTransformations (2/2)

1000cossin0sincos

)(

R

Page 21: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 21/32

• Translate [1,3] by [7,9]

• Scale [2,3] by 5 in the x direction and 10 in the Y direction

• Rotate [2,2] by 900

Examples

Page 22: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 22/32

• With the T matrix, can avoid unwanted translation introduced when we scale or rotate an object not centered at origin: translate the object to the origin, perform the scale or rotate, then translate back.

• How would you scale the house by 2 in “its” y and rotate it through 900 ?

• Remember: matrix multiplication is not commutative! Hence order matters! (refer to the Transformation Game at Applets->Scenegraphs)

The Translation Matrix is veryUseful for Matrix Compositions

HdydxTRdydxTHdydxTRHdydxTHHouse ),()(),(),()(),()(

HSRH,SHHouse )2,1()2/()21()(

Page 23: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 23/32

• Translation

• Scaling

3D Basic Transformations (1/2)(right-handed coordinate system)

1000100010001

dzdydx

1000000000000

z

y

x

ss

s

x

y

z

Page 24: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 24/32

• Rotation about X-axis

3D Basic Transformations (2/2)(right-handed coordinate system)

10000cossin00sincos00001

10000cos0sin00100sin0cos

1000010000cossin00sincos

• Rotation about Y-axis

• Rotation about Z-axis

Page 25: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 25/32

Some uses we’ll be seeing later• Construction: putting sub-objects in their parent’s

coordinate system to build a hierarchical scene graph

– transforming primitives in their coordinate system

• View volume normalization– mapping arbitrary view volume into canonical view volume

along the z-axis

• Parallel (orthographic and oblique) and perspective projection

• Perspective transformation

Homogeneous Coordinates

Page 26: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 26/32

• Take a scene and “skew” it to the side

• Squares become parallelograms - x coordinates skew to the right, while y coordinates stay the same

• 900 between axes becomes • Like taking a deck of cards and pushing top to the

side – each card shifts relative to the one below it• Hmmm… Notice that the base of the house (at y=1)

remains horizontal, but shifts to the right…

Skew/Shear/Translate (1/2)

10tan

11Skew

Y

X 0

1

1

2

2

3 4 5 6 7 8 9 10

3

4

5

6

4

NB: A skew of 0 angle, i.e. no skew at all, gives us the identity matrix, as it should

Page 27: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

• In fact, everything along the line y=1 stays on the line y=1, but is translated to the right

• Also, distance between points on this line is preserved

• A 1D homogeneous coordinate translation looks like a 2D skew transformation

Andries van Dam September 14, 2004 Transformation 27/32

Skew/Shear/Translate (2/2)

101

10tan

11 dx

original y-axis

1011

T

Page 28: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 28/32

• 3D scenes are typically stored in a directed acyclic graph (DAG) called a scene graph

– Open Scene Graph (used in the Cave)– Sun’s Java3D™– X3D ™ (aka VRML ™)– Sense8’s WorldToolKit ™ (also used in the Cave)

Transforms in Scene Graphs (1/3)

• Typical scene graph format (there are hundreds of packages!)

– objects (cubes, sphere, cone, polyhedra etc.) with basic defaults (located at the origin with unit area of volume) stored as nodes

– attributes (color, texture map, etc.) and transformations are also nodes in scene graph (labeled edges on slide 2 are an abstraction)

• For your assignments, you will deal with a much simpler scene graph format

– attributes of each object will be stored as a component of the object node (no separate attribute node)

– transform node will affect its subtree, but not siblings (unlike in X3D, Open Scene Graph)

– transform node can only have one child– only leaf nodes are graphical objects– all internal nodes that are not transform nodes are group nodes

Page 29: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 29/32

Transforms in Scene Graphs (2/3)

ROBOT

upper body lower body

head trunk arm

stanchion base

1. Leaves of tree are standard size object primitives

2. We transform them

3. To make sub-groups

4. Transform subgroups

5. To get final scene

Let’s look more closely at the Scenegraph from slide 2 …

Page 30: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

• In the scene graph below, transformation t0 will affect all objects, but t2 will only affect obj2 and one instance of group3 (which includes an instance of obj3 and obj4)

– t2 doesn’t affect obj1, other instance of group3

• Note that if you want to use multiple instances of a sub-tree, such as group3 above, you must define it before it’s used

– this is so that it’s easier to implement

Andries van Dam September 14, 2004 Transformation 30/32

Transforms in Scene Graphs (3/3)

object nodes (geometry)transformation nodesgroup nodes

group3

obj3 obj4

t5 t6

t4

root

t0

group1

t1 t2

obj1 group3

t3

group2

group3obj2

Page 31: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 31/32

• Typically, transformation nodes contain at least a matrix that handles the transformation; additionally, it may contain individual transformation parameters

– refer to scene graph hierarchy applet by Dave Karelitz (URL on slide 2)

• To determine the final composite transformation matrix (CTM) for an object node, you need to compose all parent transformations during prefix graph traversal

– exact detail of how this is done varies from package to package, so be careful

Composing Transformations in a Scene Graph (1/2)

Page 32: Andries van Dam                     September 14, 2004                     Transformation   1/32

I N T R O D U C T I O N T O C O M P U T E R G R A P H I C S

Andries van Dam September 14, 2004 Transformation 32/32

• An example:

- for o1, CTM = m1- for o2, CTM = m2* m3- for o3, CTM = m2* m4* m5- for a vertex v in o3, its position in the world (root) coordinate system is:CTM v = (m2*m4*m5)v

Composing Transformations in a Scene Graph (2/2)

g: group nodes

m: matrices of the transform nodes

o: object nodes

m5

m1 m2

m3 m4

o1

o2

o3

g1

g2

g3


Recommended