1
Modeling Transformations
2D Transformations3D TransformationsOpenGL Transformation
2
2D-Transformations
Basic TransformationsHomogeneous coordinate systemComposition of transformations
3
Translation – 2D
(4,5) (7,5)
Y
XBefore Translation
1
*
100
10
01
1
y
x
d
d
y
x
TPPd
dT
y
xP
y
xP
y
x
y
x
Form sHomogeniou
x’ = x + dx y’ = y + dy
(7,1) (10,1)
X
Y
Translation by (3,-4)
4
Scaling – 2D
(4,5) (7,5)
Y
X(2,5/4) (7/2,5/4)
X
Y
Before Scaling Scaling by (1/2, 1/4)
y
x
y
x
y
x
sy
sx
y
x
s
s
PPS
ysy
xsx
*
**
0
0
*
*
*
Types of Scaling:
Differential ( sx != sy )Uniform ( sx = sy )
1
*
100
00
00
1
y
x
s
s
y
x
x
x
Form sHomogeniou
Rotation – 2D
sin
cos
r
rv
rota
ted
cossinsincos
sinsincoscos
rry
rrx expand
cossin
sincos
sin
cos
yxy
yxx
ry
rx
but
original
sin
cos
r
rv
6
Rotation – 2D
(5,2) (9,2)
Y
X
(2.1,4.9)
(4.9,7.8)
X
YBefore Rotation Rotation of 45 deg. w.r.t. origin
1
*
100
0cossin
0sincos
1
Form sHomogeniou
y
x
y
x
cos*sin*
sin*cos**
cossin
sincos
*
yx
yx
y
x
PPR
yyx
xyx
cos*sin*
sin*cos*
7
Mirror Reflection
100
010
001
axis-Xabout Reflection
xM
yyxx
100
010
001
axis-Yabout Reflection
yM
yyxx
(1,1)
(1,-1)
Y
X
(-1,1) (1,1)
X
Y
8
Shearing Transformation
100
01
01
100
01
001
100
010
01
b
a
SHbSH
a
SH xyyx
unit cubeSheared in X
directionSheared in Y
directionSheared in both X
and Y direction
9
Inverse 2D - Transformations
y-y
x-x
),(-(sx,sy)
(-θ-(θ
(-dx,-dy)-
(dx,dy)
MM
MM
SS
RR
TT
sysx
1
1
1
)1)
1
:RefMirror
: Sclaing
: Rotation
:nTranslaito
11
10
Homogeneous Co-ordinates
Translation, scaling and rotation are expressed (non-homogeneously) as:– translation: P = P + T– Scale: P = S · P– Rotate: P = R · P
Composition is difficult to express, since translation not expressed as a matrix multiplication
Homogeneous coordinates allow all three to be expressed homogeneously, using multiplication by 3 matrices
W is 1 for affine transformations in graphics
11
Homogeneous Co-ordinates
P2d is a projection of Ph onto the w = 1 plane
So an infinite number of points correspond to : they constitute the whole line (tx, ty, tw)
x
y
w Ph(x,y,w)
P2d(x,y,1)
w=1
12
Classification of Transformations
1. Rigid-body Transformation Preserves parallelism of lines Preserves angle and length e.g. any sequence of R() and T(dx,dy)
2. Affine Transformation Preserves parallelism of lines Doesn’t preserve angle and length e.g. any sequence of R(), S(sx,sy) and T(dx,dy)
unit cube 45 deg rotaton Scale in X not in Y
13
Properties of rigid-body transformation
1002221
1211
y
x
trr
trr
The following Matrix is Orthogonal if the upper left 2X2 matrix has the following properties
1.A) Each row are unit vector. sqrt(r11* r11 + r12* r12) = 1
B) Each column are unit vector. sqrt(c11* c11 + c12* c12) = 1
2.A) Rows will be perpendicular to each other (r11 , r12 ) . ( r21 , r22) = 0
B) Columns will be perpendicular to each other (c11 , c12 ) . (c21 ,c22) = 0
e.g. Rotation matrix is orthogonal
100
0cossin
0sincos
• Orthogonal Transformation Rigid-Body Transformation
• For any orthogonal matrix B B-1 = BT
14
Commutativity of Transformation Matrices
• In general matrix multiplication is not commutative• For the following special cases commutativity holds
i.e. M1.M2 = M2.M1
M1 M2
Translate Translate
Scale Scale
Rotate Rotate
Uniform Scale Rotate
• Some non-commutative Compositions: Non-uniform scale,
Rotate Translate, Scale Rotate, Translate
OriginalTransitional
Final
15
Associativity of Matirx Multiplication
Create new affine transformations by multiplying sequences of the above basic transformations.
q = CBAp
q = ( (CB) A) p = (C (B A))p = C (B (Ap) ) etc.
matrix multiplication is associative.
But to transform many points, best to do
M = CBA
then do q = Mp for any point p to be rendered.
To transform just a point, better to do q = C(B(Ap))
For geometric pipeline transformation, define M and set it up with the model-view matrix and apply it to any vertex subsequently defined to its setting.
16
Rotation of about P(h,k): R,P
R,P=
Q(x,y)
P(h,k)
Step 1: Translate P(h,k) to origin
T(-h ,-k)
Q1(x’,y’
)
P1 (0,0)
Step 2: Rotate w.r.t to origin
R*
Q2(x’,y’
)
P2 (0,0)
Step 3: Translate (0,0) to P(h,k0)
T(h ,k) *P3(h,k)
Q3(x’+h, y’
+k)
17
Scaling w.r.t. P(h,k): Ssx,sy,p
T(-h ,-k)S(sx,sy)*T(h ,k) *Ssx,sy,P=
(4,3)
(1,1)
(4,1)
S3/2,1/2,(1,1)
Step 1: Translate P(h,k) to origin
(4,2)
(0,0)
(4,0)T(-1,-1)
Step 2: Scale S(sx,sy) w.r.t origin
(6,1)
(6,0)
(0,0) S(3/2,1/2)
(7,1)
Step 3: Translate (0,0) to P(h,k)(7,2)
(1,1) T(1,1
)
18
Reflection about line L, ML
Step 1: Translate (0,b) to origin
T(0 ,-b)ML =
Step 2: Rotate - degrees
Step 3: Mirror reflect about X-axis
R(-) *T(0 ,b) *
Step 4: Rotate degrees
Step 5: Translate origin to (0,b)
M x*R() *
(0,b)
Y
X
t
O
Y
XO
Y
XO
Y
XO
Y
XO
(0,b)
Y
X
t
O
19
Problems to be solved:
Schaum’s outline series:
Problems: 4.1 4.2
4.3, 4.4, 4.5 => R,P
4.6, 4.7, 4.8 => Ssx,sy,,P
4.9, 4.10, 4.11, 4.21 => ML
4.12 => Shearing Pg-281(1.24), Pg-320(5.19)
=> Circular view-port
20
3D Transformations
Basics of 3D geometryBasic 3D TransformationsComposite Transformations
21
Orientation
Thumb points to +ve Z-axisFingers show +ve rotation from X to Y
axis
Y
X
Z (out of page)
Y
X
Z (larger z areaway from viewer)
Right-handed orentation Left-handed orentation
22
Vectors in 3D
Have length and direction
V = [xv , yv , zv]Length is given by the Euclidean Norm
||V|| = ( xv2 + yv
2 + zv2 )
Dot Product
V • U = [xv, yv, zv]•[xu, yu, zu]
= xv*xu + yv*yu + zv*zu = ||V|| || U|| cos ß
Cross Product V U
= [yv*zu - zv yu , -xv*zu + zv*xu , xv*yu – yv*xu ]= ||V|| || U|| sin ßV U = - ( U x V)
(xv,yv,zv)V=aI+bJ+cK
x
y
z
23
3D Equation of Curve & Line
Parametric equations of Curve & LineCurve
Line
bta
thz
tgy
tfx
C
:
VtPPPtPL
t
tzzzz
tyyyy
txxxx
L
PPPPV
0010
010
010
010
0110
)(
10:
P0(x0,y0,z0)
P1(x1,y1,z1)
t > 1
Vt < 0
t =1
t = 00 < t < 1
x
y
z
C
24
3D Equation of Surface & Plane
Parametric equations of Surface & PlaneSurface
Plane : with Normal, N
dtc
bsa
tshz
tsgy
tsfx
S
,
,
,
:
P0
N
kCjBiAN
DCzByAx
ˆˆˆ
0
25
3D Plane
Ways of defining a plane
1. 3 points P0, P1, P2 on the plane
2. Plane Normal N & P0 on plane
3. Plane Normal N & a vector V on the plane
Plane Passing through P0, P1, P2
P0
P1
P2
N
V
)(
0
0ˆ)(ˆ)(ˆ)()ˆˆˆ(
0
ˆˆˆ
000
000
0
2010
CzByAxD
DCzByAx
kzzjyyixxkCjBiA
PPN
kCjBiAPPPPN
where
plane the on is z) y,P(x, if
26
Affine Transformation
Transformation – is a function that takes a point (or vector) and maps that point (or vector) into another point (or vector).
A coordinate transformation of the form:
x’ = axx x + axy y + axz z + bx ,
y’ = ayx x + ayy y + ayz z + by ,
z’ = azx x + azy y + azz z + bz ,
is called a 3D affine transformation.
11000
'
'
'
z
y
x
baaa
baaa
baaa
w
z
y
x
zzzzyzx
yyzyyyx
xxzxyxx
The 4th row for affine transformation is always [0 0 0 1]. Properties of affine transformation:
– translation, scaling, shearing, rotation (or any combination of them) are examples affine transformations.
– Lines and planes are preserved.– parallelism of lines and planes are also preserved, but not angles and
length.
27
Translation – 3D
PPdddT
dz
dy
dx
z
y
x
d
d
d
zyx
z
y
x
z
y
x
*),,(
11
*
1000
100
010
001
z
y
x
dzz
dyy
dxx
28
Scaling – 3D
1
*
*
*
1
*
1000
000
000
000
*),,(
z
y
x
z
y
x
zyx
sz
sy
sx
z
y
x
s
s
s
PPsssS
Original
scale all axes
scale Y axiszsz
ysy
xsx
z
y
x
*
*
*
29
Rotation – 3D
1
cos*sin*
sin*cos*
1
*
1000
0100
00cossin
00sincos
*,
z
yx
yx
z
y
x
PPR k
For 3D-Rotation 2 parameters are needed
Angle of rotation
Axis of rotation
Rotation about z-axis:
30
Rotation about Y-axis & X-axis
1
cos*sin*
sin*cos*
1
*
1000
0cos0sin
0010
0sin0cos
*,
zx
y
zx
z
y
x
PPR j
1
cos*sin*
sin*cos*
1
*
1000
0cossin0
0sincos0
0001
*,
zy
zy
x
z
y
x
PPR iAbout x-axis
About y-axis
31
Shear along Z-axis
1
*
*
1
*
1000
0100
010
001
*),(
z
shzy
shzx
z
y
x
sh
sh
PPshshSH
y
x
y
x
yxxy
y
x
z
32
Object Transformation
Line: Can be transformed by transforming the end points
Plane:(described by 3-points) Can be transformed by transforming the 3-points
Plane:(described by a point and Normal) Point is transformed as usual. Special treatment is needed for transforming Normal
33
Composite Transformations – 3D
Some of the composite transformations to be studied are:
AV,N = aligning a vector V with a vector N
R,L = rotation about an axis L( V, P )
Ssx,sy,P= scaling w.r.t. point P
34
AV : aligning vector V with k
Av = R,i
V = aI + bJ + cK
x
y
z
b
a
c
k
22λ
λcos
λsin
by axis-about x Rotate :1 Step
cbc
b
b
|V|
x
y
z
b
a
k
( 0, b,c )b
|V|
x
y
z
a
k
|V|
( a, 0, )
( 0, 0, )
( 0, b,c )
35
AV : aligning vector V with k
Av = R,i R-,j *
22λ
λcos
λsin
by axis-about x Rotate :1 Step
cbc
b
222
|V|
|V|
λ)cos(
|V|)sin(
-by axis-yabout V Rotate :2 Step
cba
a
P( a, b, c)
b
x
y
z
b
a
c
k
|V|
( a, 0, )( 0, b,c )b
x
y
z
b
a
c
|V|
( 0, 0, |V|)
( 0, b,c )
a
36
AV : aligning vector V with k
AV-1 = AV
T
AV,N = AN-1 * AV
1000
0
00
0
λλ
λ-
λ-λ
Vc
Vb
Va
bc
Vac
Vab
V
VA
37
R,L : rotation about an axis L
Let the axis L be represented by vector V and passing through point P
1.Translate P to the origin
2. Align V with vector k
3. Rotate about k
4. Reverse step 2
5. Reverse step 1
R,L = T-PAV *R,k *AV-1 *T-P
-1 *
V
P
Q
Q'
L
z
x
y
k
38
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
x
y
z N
P
39
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
1.Translate P to the origin
MN,P = T-P
x
y
z
N
P
40
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
1.Translate P to the origin
2. Align N with vector k
MN,P = T-PAN *
N
P
x
y
z
41
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
1.Translate P to the origin
2. Align N with vector k
3. Reflect w.r.t xy-plane
MN,P = T-PAN *S1,1,-1 *
N
P
x
y
z
42
x
y
z
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
1.Translate P to the origin
2. Align N with vector k
3. Reflect w.r.t xy-plane
4. Reverse step 2
MN,P = T-PAN *S1,1,-1 *AN-1 *
43
MN,P : Mirror reflection
Let the plane be represented by plane normal N and a point P in that plane
1.Translate P to the origin
2. Align N with vector k
3. Reflect w.r.t xy-plane
4. Reverse step 2
5. Reverse step 1
MN,P = T-PAN *S1,1,-1 *AN-1 *T-P
-1 *
x
y
z N
P
44
Further Composition
The Composite Transform must have
– Translation of P1 to Origin T
zx
y3P
1P2PT
– Some Combination of Rotations R
Rx
y
z 2P
3P 1P
z
x
y3P
1P2P
Fig. 1 Fig. 2
Translate points in fig. 1 into points in fig 2 such that:– P3 is moved to yz plane
– P2 is on z-axis
– P1 is at Origin
45
Finding R
xx
zyx
zyx
zzz
yyy
xxx
Rx.x R
RRR
RRR
zRyRxR
zRyRxR
zRyRxR
rrr
rrr
rrr
R
R
vextor of component :Note
other each to
larperpendicu are ii)
vectors unit are i)
Transform body-Rigid is R
be Let
,,
,,
...
...
...
333231
232221
131211
46
Finding Rz
z
z
z
z
zyx
zyx
zyx
TT
R
zR
yR
xR
zRzRzR
yRyRyR
xRxRxR
RRkR
21
21
21
21
21
21
PP
PP
PP
PP
PP
PP
.
.
.
1
0
0
...
...
...
ˆ 1
R
z
x
y
3P
1P2P
x
y
z 2P
3P 1P
Rz
k
kR
R
ˆ
21
21
21
PP
PP
axis-z along PP aligns
47
R
x
y
z 2P
3P 1P
z
x
y
3P
1P 2P
Finding Rx
x
x
x
x
zyx
zyx
zyx
R
zR
yR
xR
zRzRzR
yRyRyR
xRxRxR
iR
2131
2131
2131
2131
2131
2131
PPPP
PPPP
PPPP
PPPP
PPPP
PPPP
.
.
.
0
0
1
...
...
...
ˆ1 Rx
i
iR
R
ˆ
2131
2131
2131
PPPP
PPPP
axis-x along PPPP aligns
Rz
k
48
Finding Ry
y
y
y
y
zyx
zyx
zyx
R
zR
yR
xR
zRzRzR
yRyRyR
xRxRxR
jR
xz
xz
xz
RR
RR
RR
.
.
.
0
1
0
...
...
...
ˆ1
jR
R
ˆ
xz
xz
RR
axis- yalong RR aligns
R
x
y
z 2P
3P 1P
z
x
y
3P
1P 2P
Rx
i
Rz
k
Ry
j
49
Problems to be solved:
Schaum’s outline series:
Problems: 6.1
6.2, 6.5, 6.9, 6.10, 6.11, 6.12 Av
6.3, 6.4 R,L
6.6, 6.7, 6.8 MN,P
50
Transformations in OpenGL
OpenGL transformation commandsTransformation OrderHierarchical Modeling
51
Transformations in OpenGL
OpenGL uses 3 stacks to maintain transformation matrices:– Model & View transformation matrix stack
– Projection matrix stack
– Texture matrix stack
You can load, push and pop the stackThe top most matrix from each stack is applied to
all graphics primitive until it is changed
M N
Model-ViewMatrix Stack
ProjectionMatrix Stack
GraphicsPrimitives
(P)
OutputN•M•P
52
General Transformation Commands
Specify current matrix (stack) :– void glMatrixMode(GLenum mode)
• Mode : GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE
Initialize current matrix.– void glLoadIdentity(void)
• Sets the current matrix to 4X4 identity matirx
– void glLoadMatrix{f|d}(cost TYPE *M)• Sets the current matrix to 4X4 matrix specified by M
Note: current matrix Top most matrix of the current matrix stack
ABC
ABI
ABM
glL
oadM
atri
x(M
)
glL
oadI
dent
ity
53
General Transformation Commands
Concatenate Current Matrix:– void glMultMatrix(const TYPE *M)
• Multiplies current matrix C, by M. i.e. C = C*M
– Caveat: OpenGL matrices are stored in column major order.
– Best use utility function glTranslate, glRotate, glScale for common transformation tasks.
161284
151173
141062
13951
mmmm
mmmm
mmmm
mmmm
54
Transformations and OpenGL®
Each time an OpenGL transformation M is called the current MODELVIEW matrix C is altered:
Cvv CMvv
glTranslatef(1.5, 0.0, 0.0);glRotatef(45.0, 0.0, 0.0, 1.0);
CTRvv
Note: v is any vertex placed in rendering pipeline v’ is the transformed vertex from v.
55
Sample Instance Transformation
glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(...);glRotatef(...);glScalef(...);gluCylinder(...);
56
Thinking About Transformations
As a Global System Objects moves but
coordinates stay the same Think of transformation
in reverse order as they appear in code
As a Local System Objects moves and
coordinates move with it Think of transformation
in same order as they appear in code
There is a World Coordinate System where: All objects are defined Transformations are in World Coordinate space
Two Different Views
57
Local View Translate Object Then Rotate
Order of Transformation T•R
glLoadIdentity();glMultiMatrixf( T);
glMultiMatrixf( R);
draw_ the_ object( v);v’ = ITRv
Global View Rotate Object
Then Translate
Effect is same, but perception is different
58
Order of Transformation R•T
glLoadIdentity();glMultiMatrixf( R);
glMultiMatrixf( T);
draw_ the_ object( v);v’ = ITRv
Local View Rotate Object Then Translate
Global View Translate Object
Then Rotate
Effect is same, but perception is different
59
Hierarchical Modeling
Many graphical objects are structured Exploit structure for
– Efficient rendering– Concise specification of model parameters– Physical realism
Often we need several instances of an object– Wheels of a car– Arms or legs of a figure– Chess pieces
Encapsulate basic object in a function Object instances are created in “standard” form Apply transformations to different instances Typical order: scaling, rotation, translation
60
OpenGL & Hierarchical Model
ABCC
glPushMatrix
– void glPushMatrix(void);
AB
glPushMatrix
– void glPoipMatrix(void);
ABC C
m
glGetFloatv
– void glGetFloatv(GL_MODELVIEW_MATRIX, *m);
ABC
Some of the OpenGL functions helpful for hierarchical modeling are:
61
Scene Graph
A scene graph is a hierarchical representation of a scene We will use trees for representing hierarchical objects
such that:– Nodes represent parts of an object
– Topology is maintained using parent-child relationship
– Edges represent transformations that applies to a part and all the subparts connected to that part
typedef struct treenode {GLfloat m[16]; // Transformationvoid (*f) ( ); // Draw functionstruct treenode *sibling;struct treenode *child;
} treenode;
Scene
Sun Star X
Earth Venus Saturn
Moon Ring
62
Example - Torso
Initializing transformation matrix for node
treenode torso, head, ...;
/* in init function */
glLoadIdentity();
glRotatef(...);
glGetFloatv(GL_MODELVIEW_MATRIX, torso.m);
Initializing pointers
torso.f = drawTorso;
torso.sibling = NULL;
torso.child = &head;
63
Generic Traversal
To render the hierarchy:– Traverse the scene graph depth-first– Going down an edge:
• push the top matrix onto the stack
• apply the edge's transformation(s)
– At each node, render with the top matrix– Going up an edge:
• pop the top matrix off the stack
64
Generic Traversal : Torso
Recursive definitionvoid traverse (treenode *root) {
if (root == NULL) return;
glPushMatrix();
glMultMatrixf(root->m);
root->f();
if (root->child != NULL) traverse(root->child);
glPopMatrix();
if (root->sibling != NULL) traverse(root->sibling);
}
C is really not the right language for this !!
65
Viewing Transformation
66
Viewing Pipeline Revisited
xw
yw
zw
pw
Modeling Transform
WorldCoordinates
Pw
yo
xo
zo
po
GraphicsPrimitives Po
ObjectCoordinates
ye
xe
-ze
pe
Viewing Transform Pe
EyeCoordinates
67
Viewing Transformation in OpenGL To setup the modelview matrix, OpenGL provides the
following function:
y
x
z
eye(eyex, eyey, eyez)
center(centerx, centery, centerz)
up(upx, upy, upz)
gluLookAtgluLookAt(( eyex, eyey, eyezeyex, eyey, eyez, , centerx, centery, centerzcenterx, centery, centerz, , upx, upy, upzupx, upy, upz ))
68
Implementation
We want to construct an Orthogonal FrameOrthogonal Frame such that,
xzy
x
z
eCeCeC
puvnormalizeeC
veC
eyecenternormalizev
eyeOC
...
.
.
.
C.e z
C.O(eye)
center
up(upx, upy, upz)
v
C.e x
C.e y
(1)(1) its origin is the point eyepoint eye
(2)(2) its -z basis vector points towards the point point centercenter(3)(3) the up vectorup vector projects to the up direction (+ve y-axis)
Let CC (for camera) denote this frame. Clearly,
69
Thank You
Top Related