CS 551 / 645: Introductory Computer Graphics Viewing Transforms

advertisement
CS 551 / 645:
Introductory Computer Graphics
Viewing Transforms
Administrivia



Assignment 2 is online - get started this
weekend
Midterm will be before reading break - Oct 19
Today’s reading material: FvD, Chapter 6
Translations

Moving an object is called a translation. We translate a point by adding to
the x and y coordinates, respectively, the amount the point should be
shifted in the x and y directions. We translate an object by translating
each vertex in the object.
ty
tx
xnew = xold + tx; ynew = yold + ty
Scaling

Changing the size of an object is called a scale. We scale an object by
scaling the x and y coordinates of each vertex in the object.
hnew
hold
wold
sx=wnew/wold
xnew = sxxold
wnew
sy=hnew/hold
ynew = syyold
Rotation about the Origin


To rotate a line or polygon, we must rotate each
of its vertices.
We want to rotate point (x1,y1) to point (x2,y2)
through angle B
y-axis
(x2,y2)
(x1,y1)
From the illustration we know that:
sin (A + B) = y2/r
cos (A + B) = x2/r
sin A = y1/r
cos A = x1/r
r
B
A
(0,0)
x-axis
Rotation about the origin (cont.)
From the double angle formulas:
Substituting:
sin (A + B) = sinAcosB + cosAsinB
y2/r = (y1/r)cosB + (x1/r)sinB
Therefore:
y2 = y1cosB + x1sinB
We have
x2 = x1cosB - y1sinB
y2 = x1sinB + y1cosB
Transformations as matrices
Scale:
xnew = sxxold
ynew = syyold
Rotation:
x2 = x1cos - y1sin 
y2 = x1sin  + y1cos 
Translation:
xnew = xold + tx
ynew = yold + ty
sx
0

cos
 sin 

0   x   sx  x 




s y   y  s y  y 
 sin    x   x cos  y sin  




cos   y   x sin   y cos 
t x   x   x  t x 
t       y  t 
y
 y   y 
Homogeneous Coordinates

In order to represent a translation as a matrix multiplication operation we
use 3 x 3 matrices and pad our points to become 3 x 1 matrices. This
coordinate system (using three values to represent a 2D point) is called
homogeneous coordinates.
P( x , y )
S x, y
cos 
R   sin 
 0
 x
  y 
 1 
sx
  0
 0
0
sy
0
0
0
1
Tx , y
 sin 
cos 
0
1 0 t x 
 0 1 t y 
0 0 1 
0
0
1
Composite Transformations
Suppose we wished to perform multiple transformations on a point:
P2  T3,1 P1
P3  S2, 2 P2
P4  R30 P3
M  R30 S2,2 T3,1
P4  MP1
Remember:
• Matrix multiplication is associative, not commutative!
• Transform matrices must be pre-multiplied
• The first transformation you want to perform will be at the far
right, just before the point
Composite Transforms Scaling (cont.)

If we scale a line between (0,0) & (2,0) to twice its length, the left-hand
endpoint does not move.
After
Before
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
(0,0) is known as a fixed point for the basic scaling transformation.
We can use composite transformations to create a scale
transformation with different fixed points.
10
Fixed Point Scaling
Scale by 2 with fixed point = (2,1)

Translate the point (2,1) to the origin

Scale by 2

Translate origin to point (2,1)
Before
1 0 2 2
0 1 1   0


0 0 1 0
T2,1
2

0

0
0 0 1 0  2 2 0  2
1 0 0 1  1  0 1 0 
0 1 0 0 1  0 0 1 
S 2,1
T 2, 1
C
0 22  2
   
1 0 1  1
   
0 1 1  1
C
 2 0  2   4  6 
0 1 0  1  1

   
0 0 1  1 1
C
0 1 2 3 4 5 6 7 8 9 10
After
0 1 2 3 4 5 6 7 8 9 10
Rotation about a Fixed Point
Rotation Of  Degrees About Point (x,y)

Translate (x,y) to origin

Rotate

Translate origin to (x,y)
1 0 x  cos 
C  0 1 y   sin 
0 0 1   0
Tx , y
 sin 
cos 
0
R
(x,y)
0 1 0  x 
0 0 1  y 
1 0 0 1 
T x ,  y
(x,y)
Shears
Original Data
y Shear
 1 0 0
 a 1 0


0 0 1
x Shear
1 b 0
0 1 0 


0 0 1
Reflections
Reflection about the y-axis
  1 0 0
 0 1 0


 0 0 1
Reflection about the x-axis
1 0 0
0  1 0 


0 0 1
More Reflections
Reflection about the origin
Reflection about the line y=x
  1 0 0
 0  1 0


 0 0 1
?
?
Transformations as a change in
coordinate system


All transformations we have looked at involve
transforming points in a fixed coordinate
system (CS).
Can also think of them as a transformation of
the CS itself
Transforming the CS - examples
Translate(4,4)
Rotate(180°)
Why transform the CS?

Objects often defined in a “natural” or
“convenient” CS

To draw objects transformed
by T, we could:
(2,2)
– Transform each vertex by T, then draw
– Or, draw vertices in a transformed CS
Drawing in transformed CS

Tell system once how to draw the object,
then draw in a transformed CS to transform
the object
House drawn in a CS
that’s been translated,
rotated, and scaled
M = Sx,y Rd Tx,y
Projecting 3-D into 2-D

Rotations and translations are sufficient to
convert 3D to 2D

We frequently map from world space (3D)
into eye space (2D)

Create a special class of transformations for
this mapping: viewing transformations
A 3D Scene

Notice the presence of
the camera, the projection
plane, and the world
coordinate axes

Viewing transformations define how to
acquire the image on the projection plane
Viewing Transformations

Create a camera-centered view

Camera is at origin
Camera is looking along negative z-axis
Camera’s ‘up’ is aligned with y-axis


2 Basic Steps

Align the two coordinate frames by rotation
2 Basic Steps

Translate to align origins
Creating Camera Coordinate
Space




Specify a point where the camera is located
in world space, the eye point
Specify a point in world space that we wish to
become the center of view, the lookat point
Specify a vector in world
space that we wish to
point up in camera
image, the up vector
Intuitive camera
movement
Constructing Viewing
Transformation, V

Create a vector from eye-point to lookat-point

Normalize the vector

Desired rotation matrix should map this
vector to [0, 0, -1]T Why?
Constructing Viewing
Transformation, V

Construct another important vector from the
cross product of the lookat-vector and the
vup-vector

This vector, when normalized, should align
with [1, 0, 0]T Why?
Constructing Viewing
Transformation, V

One more vector to define…

This vector, when normalized, should align
with [0, 1, 0]T

Now let’s composite the results
Compositing Vectors to Form V



We know the three world axis vectors (x, y, z)
We know the three camera axis vectors (u, v, n)
Viewing transformation, V, must convert from
world to camera coordinate systems
Compositing Vectors to Form V

Remember
– Each camera axis vector is unit length.
– Each camera axis vector is perpendicular to others

Camera matrix is orthogonal and normalized
– Orthonormal

Therefore, M-1 = MT
Compositing Vectors to Form V

Therefore, rotation component of viewing
transformation is just transpose of computed
vectors
Compositing Vectors to Form V

Translation component too

Multiply it through
Final Viewing Transformation, V

To transform vertices, use this matrix:

And you get this:
Special Viewing Transformations

Orthographic is one alternative
Orthographic Transformation

Simple Orthographic Transformation

Original world units are preserved
– Pixel units are preferred
Screen-space Transformation



left, right, top, bottom refer to the viewing
frustum in modeling coordinates
width and height are in pixel units
This matrix scales and translates to
accomplish the transition in units
Perspective Projections



First discovered by Donatello, Brunelleschi,
and DaVinci during Renaissance
Objects closer to viewer look larger
Parallel lines appear to converge to single
point
Perspective Projection


In the real world, objects exhibit perspective
foreshortening: distant objects appear smaller
The basic situation:
Perspective Projection

When we do 3-D graphics, we think of the
screen as a 2-D window onto the 3-D world:
How tall should
this bunny be?
Perspective Projection

The geometry of the situation is that of
similar triangles. View from above:
View
plane
P (x, y, z)
y
y’ = ?
Z

What is y’?
(0,0,0)
d
Perspective Projection

Desired result for a point [x, y, z, 1]T projected
onto the view plane:
x' x
 ,
d z
dx
x
x' 

,
z
z d

y' y

d z
dy
y
y' 

, zd
z
z d
What could a matrix look like to do this?
A Perspective Projection Matrix

Answer:
1
0
Mperspective  
0

0
0
1
0
0
0
1
0 1d
0

0
0

0
A Perspective Projection Matrix

Example:
 x  1
 y  0


 z  0

 
 z d  0

0
1
0
0
0
1
0 1d
0  x 



0  y 
0  z 
 
0  1 
Or, in 3-D coordinates:
 x

,
z d

y
, d 
zd

Screen-space Coordinates

Translate model units to pixel units
Canonical Perspective View
Volume


Perspective view volume is shaped like a
truncated pyramid
A canonical perspective view volumes scale
a perspective view volume
– Base has sides length 2
– Height is 1
– Origin is centered
Canonical Space Mapping for
Perspective Projection
Download