Transformaciones geométricas

Report
Computación Gráfica
Transformaciones
geométricas
2D y 3D
Semestre 201321
CRN
Septiembre 2012 – Febrero 2013
Ciro Durán
Ingeniero en Computación
[email protected]
http://www.ciroduran.com
@chiguire
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
¿Cómo usamos las
transformaciones geométricas?
• Los objetos de una escena son colecciones de
puntos…
• Estos objetos tiene posición, orientación, tamaño
• Corresponde a las transformaciones, Translación
(), Rotación (), y Escalamiento ()
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
¿Cómo usamos las
transformaciones geométricas?
(2/2)
Una escena tiene una cámara/punto de vista desde el cual se
renderiza la escena.
• La cámara tiene una posición y orientación en el espacio
3D…
• Éstos corresponden a las transformaciones de Traslación y
Rotación
• Se necesitan otros tipos de transformaciones de vista
también – las veremos ahora
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Algunos conceptos de álgebra
lineal…
•
•
•
•
•
•
Geometría de coordenadas 3D
Vectores en espacios 2D y 3D
Producto punto y producto cruz – definiciones y usos
Notación y álgebra vectorial y matricial
Matriz identidad
Asociatividad multiplicativa
–
Ej. A(BC)
= (AB)C
• Traspuesta e inversa de matriz – definición, uso y cálculo
• Coordenadas homogéneas (, , , )
• ¡Necesitarán entender estos conceptos!
• Una “ayudaíta” (en inglés) ->
http://cs.brown.edu/courses/cs123/resources/Linear_Algebra.
pdf
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Transformaciones lineales (1/3)
• Representamos los vectores como letras
en bold-itálica () y escalares como
letras en itálica solamente (c)
• Cualquier vector en el plano puede ser
definido como la suma de dos vectores
base no co-lineares en el plano
– Recordemos que una base es un conjunto
de vectores que cumplen dos propiedades:
– Los vectores son linealmente
independientes
– Cualquier vector en el espacio vectorial
puede ser generado por una combinación
lineal de la base
• Las constantes escalares pueden ser
usadas para ajustar magnitud y dirección
del vector resultante
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
b
a
 = a+b
Transformaciones lineales (2/3)
•
Definición de una función lineal, f:
– f  +  = f  + f() donde el dominio y co-dominio de f son idénticos
• La función de una adición de vectores es
equivalente a la adición de la función aplicada a
cada uno de los vectores
– f  = f 
• La función de una multiplicación escalar con un
vector es un escalar multiplicado por la función
aplicada al vector
•
Ambas de estas propiedades deben ser satisfechas para que f sea un operador lineal
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Transformaciones lineales (3/3)
– Uso gráfico: transformaciones
de puntos alrededor del origen
(dejando invariante al
origen)
• Esto incluye al escalamiento y a
las rotaciones (pero no a la
translación),
• La translación no es una función
lineal (mueve el origen)
• Cualquier transformación lineal
de un punto resultará en otro
punto en el mismo sistema de
coordenadas, transformado sobre
el origen
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
•
•
•
•
•
Transformaciones lineales como
matrices (1/2)
Las Transformaciones Lineales pueden ser representadas como matrices
no singulares (invertibles)
Comencemos con las transformaciones 2D:
 
=
 
La matriz  puede ser también escrita como:


 1  2
, donde  1 =
,  2 =


Donde 1 y 2 son los vectores unitarios estandar sobre los vectores x e y:
1
0
1 =
, 2 =
0
1
¿Por qué es importante esto? Esto significa que podemos computar las
columnas de la matriz de transformación una por una determinando como
nuestra transformación afecta cada uno de los vectores unitarios estándar.

Por lo que  “ manda 1 a =
“

Use esta estrategia para derivar las matrices de transformación
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Transformaciones lineales como
matrices (2/2)

• Una transformación de un vector columna arbitrario  tiene
la forma:

  
  =
  

1
1

• Sustituyamos
por  : 
=
0
0

– La transformación aplicada a



1
=

0
1
es la primera columna de 
0

0
0

• Ahora sustituyamos
por  : 
=
1
1

– La transformación aplicacada a


0

=
1

0
es la segunda columna de 
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Escalando en 2D (1/2)
• Escalemos  por 3,  por 2 (Sx =
3, Sy = 2)
Efecto lateral: la casa cambia su
posición relativa al origen

′
–  =  (vértice original); ’ =
′
(nuevo vértice)
•
’ =  
•
Derivemos  determinando cómo 1 y 2 deberían ser
transformadas
1
– 1 =
  * 1 = 0 (Escalar
0
en X por  ) , la primera columna
de 
0
– 2 =
  * 2 = 0 (Escalar
1
en Y por  ), la segunda
columna de 
•
Por lo tanto obtenemos :

0
6 
 
2
2
 
1 
0

Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
3
 
1 
9 
 
2
Escalando en 2D (2/2)
•
•
 es una matriz diagonal – se puede
confirmar la derivación simplemente
mirando las propiedades de las
matrices diagonales:

 0 
 =
=
 = ’
0  
– En donde  es una matriz diagonal
•
•


La 
posición de ’ = ( posición
sobre la diagonal de  ∗   posición
de  )
 multiplica cada coordenada de una
 por los factores de escalamiento
( ,  ) especificados por las
posiciones sobre la diagonal, como
se espera

Otras propiedades del
escalamiento:



No conserva longitudes en los objetos
No conserva los ángulos entre partes
de los objetos, a menos que el
escalamiento sea uniforme,  =  )
Si el objeto no está en su origen,
traslada la casa relativa al origen –
algo comúnmente no deseado…
–  = ,  = 
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Rotación en 2D (1/2)
•
•
Rotar por  alrededor del origen
’ =   donde

–  =  (vértice original)
– ’=
′
(vértice nuevo)
′

– Derivemos Ө determinando cómo 1 y 2 deberían transformarse
cosӨ
1

, primera columna de 
senӨ
0
−senӨ
0
• 2 =

, segunda columna de 
cosӨ
1
• 1 =
– Y así obtenemos Ө :
Ө
cos 

−

Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Ө
Rotación en 2D (2/2)
•
•
Intentemos multiplicar las matrices
x cos Ө – y sen Ө
′
cos  − 
 ∗  =
=
=
= ’
x sen Ө + y cos Ө
′
  
–  ′ =  cos  −  sen 
–  ′ =  sen  +  cos 
• Otras propiedades de la rotación:
– Conserva longitudes y ángulos entre partes de los objetos
– La rotación es de cuerpo rígido
– Para objetos que no están en el origen, nuevamente una traslación puede no
ser deseada (i.e. esto rota alrededor del origen, no alrededor del centro de
rotación de la casa)
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
¿Qué hay sobre la traslación?
• La traslación no es una
transformación linea (no
centrada alrededor del origen)
• No puede ser representada
como una matriz 2x2
invertible…
• Pregunta: ¿Hay alguna otra
solución?
• Respuesta: Sí, ′ =  + ,

donde  =

• Sumar para trasladar, esto es
inconsistente.



Si tratamos todas las
transformaciones de una manera
consistente, es decir, con
representación de matrices,
entonces podríamos combinar las
trnasformaciones al componer sus
matrices
Usemos nuevamente una matriz
¿Cómo? Con coordenadas
homogéneas: agrega una
dimensión adicional, el eje w, y una
coordenada extra, el componente w.

Y así 2D -> 3D (efectivamente el
hiperespacio para colocar el espacio
2D)
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
Coordenadas homogéneas
(1/3)
Permite la expresión de
todas las transformaciones
2D como matrices 3x3
–
Comenzamos con el punto 2 en el plano  y
aplicamos un mapeo para llevarlo al plano-w en
el hiperespacio
• 2 ,  → ℎ , ,  ,  ≠ 0
• Las coordenadas
resultantes (’, ’) en
nuestro nuevo punto ℎ son
diferentes del original (, )
, donde ’ = , ’ = 
–
ℎ  ′ ,  ′ ,  ,  ≠ 0
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
•
•
Coordenadas homogéneas
(2/3)
Una vez que tenemos este punto
podemos aplicar una versión
homogeneizada de nuestras matrices
de transformación (próximas
láminas) para llevarlo a un nuevo
punto en el hiperespacio
Finalmente, queremos obtener el
punto resultante en el espacio 2D
nuevamente, así que hacemos un
reverso del mapeo anterior
(dividimos todas las entradas por )
Esto convierte nuestro punto en el
hiperespacio al punto
correspondiente en el epsacio 2D
– 2 ,  =
•
El vértice  =
′ ′
2
,
 


ahora es
representado como  =

1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Coordenadas homogéneas
(3/3)
•
•
•
•
Hacer que las transformaciones mapeen puntos en el hiperplano a otro
punto en el hiperplano. Las transformaciones aplicadas a un punto en
el hiperplano siempre sacar un resultado también en el mismo
hiperplano (clausura matemática)

′
La transformación  aplicada a  =  se corresponde con ′ = ′
1
1
¿Cómo aplicamos esto a nuestras matrices de transformación?
Para transformaciones lineales, mantenemos una sub-matriz 2x2,
expandimos la matriz como aparece a continuación, donde para las
transformaciones 2D, la submatriz superior izquierda es la que incluye
el escalamiento o la matriz de rotación derivada anteriormente:
–


0


0
0
0
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
De vuelta a la traslación
• Nuestra matriz de traslación () puede ahora ser
representada al incluir el vector de traslación en la
columna derecha en el tope como:
1 0 
•
0 1 
0 0 1
• Pruébalo,
multiplícalo por el vértice homogenizado


1
1 0  
 + 
•   = 0 1   =  +  = ’
0 0 1 1
1
• Las coordenadas trasladadas, ’ siguen
homogéneas
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
Transformaciones
homogenizadas
La traslación usa una matriz 3x3, pero el escalamiento y la rotación
son matrices 2x2
• ¡Homogenicemos! Esto no afecta la propiedad lineal del escalamiento
y la rotación
• Nuetras nuevas matrices de transformación se verán así…
Transformación
Escalado
Rotación
Traslación
Matriz

0
0
cos

0
1
0
0
0 0
 0
0 1
−

0
0 
1 
0 1
0
0
1
• Nota: estas 3 transformaciones se le llaman transformaciones afines.
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Ejemplos
• Escalado: Escalar por 15 en la dirección , 17 en la 
15
0
0
0
17
0
0
0
1
• Rotación: Rotar por 123°
cos(123) −sen(123) 0
sen(123) cos(123) 0
0
0
1
• Traslación: Trasladar por -16 en el eje , +18 en el 
1 0
0 1
0 0
−16
18
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
¡Antes de continuar! Vectores vs.
Puntos
• Hasta ahora, sólo hemos usar la noción de un punto en nuestro espacio
2D.
• Ahora debemos presentar una distinción entre vectores y puntos.
• Usamos las coordenadas homogéneas para representar más
convenientemente la traslación; luego los puntos se representan como (x,
y, 1)T
• Un vector puede ser rotado o escalado, pero no trasladado (porque
siempre comienza en el origen), no uses la coordenada homogénea (x, y,
0)T
• Por ahora, enfoquémonos solamente en los puntos (típicamente vértices)
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Inversas
• How do we find the inverse of a transformation?
• Take the inverse of the transformation matrix
(thanks to homogenization, they’re all invertible!):
Transformation
Scaling
Rotation
Translation
Matrix Inverse
1/
0
0
0
1/
0
cos
−
0
1
0
0
Does it make sense?


0
0
1
0
0
0
1
0
0
1
−
−
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
If you scale something by
factor X, the inverse is
scaling by 1/X
Not so obvious, but can use
math! Rotation Matrix is
orthonormal, so inverse
should just be the
transpose, (proof on slide
23)
If you translate by X, the
inverse is translating by -X
More with Homogeneous
Coordinates
Some uses we’ll be seeing later
• Placing sub-objects in parent’s coordinate system to construct
hierarchical scene graph
– transforming primitives their own coordinate systems
• View volume normalization
– mapping arbitrary view volume into canonical view
volume along -axis
• Parallel (orthographic, oblique) and perspective projection
• Perspective transformation (turn viewing pyramid into a cuboid to
turn perspective projection into parallel projection)
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
A moment of appreciation for linear
algebra
• The inverse of a rotation matrix  is just its transpose,  ! That’s
really convenient, so let’s understand how it works…
• Take a rotation matrix  = 1 2 3
• First note these properties of 
–
–
Columns are orthogonal to each other: vi • vj = 0 (i  j)
Columns represent unit length vectors: ||vi|| = 1
• Let’s see what happens when we multiply  and :
•
1
2
3
1
2
3
1
2
3
1
1
1
2
2
2
3
1 • 1 1 • 2 1 • 3
3 = 2 • 1 2 • 2 2 • 3
3
3 • 1 3 • 2 3 • 3
• Using the properties we defined we can see that the result is the
identity matrix 100 010 001 , thus   = I, and by definition of matrix
inverse, matrix  must be inverse of 
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
Composition of Transformations
(2D)
(1/2)
We now have a number of tools at our disposal, we can
combine them!
• An object in a scene uses many transformations in
sequence, how do we represent this in terms of
functions?
• Transformation is a function; by associativity we can
compose functions: ( ° ) 
• This is the same as first applying  to some input  and
then applying : ((()))
• Consider our functions  and  as matrices (1 and 2
respectively) and our input as a vector ()
•
Our composition is equivalent to 1 2 
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Composition of Transformations
(2D) (2/2)
• We can now form compositions of transformation matrices to
form a more complex transformation
• For example, , which scales point, then rotates, then
translates:
•
1
0
0
0
1
0


1
cos

0
−

0
0
0
1
s
0
0
0
s
0
0
0
1


1
• Note that we apply the matrices in sequence right to left, but
practically, given associativity, we can compose them and
apply the composite to all the vertices in, say, a mesh.
• Important: Order Matters!
• Matrix Multiplication is not commutative.
• Be sure to check out the Transformation Game at
http://www.cs.brown.edu/exploratories/freeSoftware/repository/edu/brown/cs/exploratories/applets/transfo
rmationGame/transformation_game_guide.html
• Let’s see an example…
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Not commutative
6
Translate by
=6, =0 then
rotate by 45º
5
4
3
2
1
0
1
Y
2
3
4
5
6
7
8
9
10
6
5
Rotate by 45º
then translate
by =6, =0
4
3
2
1
0
1
2
3
4
5
6
7
8
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
9
10
X
•
Composition (an example) (2D)
(1/2)
Start:
Goal:
Rotate 90°
Uniform Scale 3x
Both around object’s cente
not the origin
• Important concept: Make the problem simpler
• Translate object to origin first, scale , rotate, and
translate back:
–
•
1 0
−  = 0 1
0 0
3 cos90 −90 0 3 0 0 1 0 −3
3 90 90 0 0 3 0 0 1 −3
1
0
0
1 0 0 1 0 0 1
Apply to all vertices
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Composition (an example) (2D)
(2/2)
• − 
• But what if we mixed up the
order? Let’s try − 
–
cos90 −90
90 90
0
0
0 1 0
0 0 1
1 0 0
2 3
2 0
1 0
0 0 1 0
3 0 0 1
0 1 0 0
• Oops! We managed to scale
it properly but when we
rotated it we rotated the
object about the origin, not
its own center, shifting its
position…Order Matters!
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
−2
−2
1
Aside: Skewing/shearing

“Skew” an object to the side, like shearing a
card deck by displacing each card relative to
the previous one



What physical situations mirror this behavior?!?
Squares become parallelograms - 
coordinates skew to right,  stays same
Notice that base of house (at =1) remains
horizontal, but shifts right - why?
Y
6
5
 
4
4
3
2
1

0
1
2
3

1
Skew   
0

4
5
6
7
8
9
1 
tan  
1 
2D non-Homogeneous
Skew 
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán


1
 0

0

1
tan 
1

0
0

0
1

2D Homogeneous
10
X
Inverses Revisited
• What is the inverse of a sequence of transformations?
  … 
−
−
= −


− … 
• Inverse of a sequence of transformations is the composition
of the inverses of each transformation in reverse order
• Say we want to do the opposite transform of the example
on Slide 27, what will our sequence look like?
−
−
 
= − − − 
0
0 cos90 90 0 1 0 −2
1 0 2 1/3
• 0 1 2 0
1/3 0 −90 90 0 0 1 −2
0 0 1 0
0
0
1 0 0 1
0
1
• We still translate to origin first, then translate back at the
end!
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
•
•
Aside: Windowing Transformations
Windowing transformation maps contents of a 2D clip rectangle ("window")
to a rectangle on the screen, e.g., interior canvas of a window manager's
window ("viewport"), so also known as window-to-viewport transformation
Sends rectangle with bounding coordinates 1 , 1 , (2 , 2 )to
1 , 1 , 2 , 2
(2 −1 )/(2 − 1 )
0
0
0
(1 2 − 2 1 )/(2 − 1 )
(2 − 1 )/(2 − 1 ) (1 2 − 2 1 )/(2 − 1 )
0
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
•
•
Aside: Transforming Coordinate
Axesas changing the position of
We understand linear transformations
vertices relative to the standard axes
Can also think of transforming the coordinate axes themselves
Rotation
•
Scaling
Translation
Just as in matrix composition, be careful of which order you modify your
coordinate system
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Dimension++ (3D!)
• How should we treat geometric
transformations in 3D?
• Just add one more coordinate/axis!



• A point is represented as
• A matrix for a linear transformation  can be
represented as (1) (2) (3) where 3 corresponds to
0
the z-coordinate, 0
1
• But remember to use homogeneous coordinates!
Thus embed the scale and rotation matrices upper left
submatrix, translation vector upper right column
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
Transformations in 3D
Transformation
Matrix
Scaling

0
0
0
Rotation
Translation
Comments
0

0
0
0
0

0
0
0
0
1
See next slide
1
0
0
0
0
1
0
0
0
0
1
0



1
Looks just like the 2D version
right? We just added an sz term.
This one’s more complicated. In
2D there is only one axis of
rotation. In 3D there are
infinitely many, thus the matrix
has to take into account all
possible axes.
See next slide…
Similar to the 2D version, we
just have one more term, ,
representing change in
the  axis
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
35/45
Rodrigues’s Formula…
•

Rotation by angle  around vector  = 

Note: This is an arbitrary unit vector  in  space
•
Here’s a not so friendly rotation matrix:
•
•
This is called the coordinate form of Rodrigues’s formula
Let’s try a different way…
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
36/45
Rotating axis by axis (1/2)
• Every rotation can be represented as the composition of 3 different
angles of counter-clockwise rotation around 3 axes, namely
– -axis in the  plane by 
– -axis in the  plane by 
– -axis in the  plane by 
• Also known as Euler angles, makes problem of rotation much
easier
 
 
 ()


0
0
−

0
0
0
0
1
0
0
0
0
1
1
0
0
0
0


0
0
−

0
0
0
0
1

0
−
0
0 
1
0
0 
0
0
0
0
0
1
: rotation around  axis,  : rotation about  axis,  : rotation
about  axis
• Note these differ only in where the 3x3 submatrix is embedded in
the homogeneous matrix
37/45
• YouCatólica
can compose
matrices
to form
Universidad
Andrés Bello » these
Computación
Gráfica » Ciro
Durán a composite rotation
•

Rotating axis by axis (2/2)
• It would still be difficult to find the 3 angles to rotate by, given
arbitrary axis  and specified angle 
• Solution? Make the problem easier by mapping u to one of
the principal axes
•
Step 1: Find a  to rotate around  axis to put  in the  plane
•
Step 2: Then find a  to rotate around the  axis to align  with the  axis
•
Step 3: Rotate by  around  axis = coincident  axis
•
Step 4: Finally, undo the alignment rotations (inverse)
•
−
Rotation Matrix:  = −
   ()     
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
38/45
Inverses and Composition in
3D!
• Inverses are once again parallel to their 2D versions…
Transformation
Matrix Inverse
1/
0
0
0
Scaling
Rotation
1
0
0
0
0

−
0
0


0
0
0
0
1
Translation
• Composition works exactly the
0
1/
0
0

−
0
0
1 0
0 1
0 0
same
0 0
0
0
1/
0


0
0
0
0
1
0
0
0
0
1
0
0
0
1

0

0
0
1
0
0
−
0

0
0
0
0
1
0 −
0 −
1 −
way…
0
1
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
39/45
Example in 3D!
• Let’s take some 3D object, say a cube, centered at (2,2,2)
• Rotate in object’s space by 30° around  axis, 60° around  and
90° around 
• Scale in object space by 1 in the , 2 in the , 3 in the 
• Translate by (2,2,4) in world space
• Transformation Sequence: −      , where  translates
to (0,0)
•
1
0
0
0
0
1
0
0
0
0
1
0
60
0
−60
0
2
2
4
1
0
1
0
0
1
0
0
0
0
1
0
0
0
0
1
0
2
2
2
1
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
1
90
−90
0
0
60
0
60
0
0
0
0
1
1
0
0
0
0
0
30 30
−30 30
0
0
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
0
0
0
1
1
0
0
0
90
90
0
0
0
1
0
0
0
0
1
0
0
0
1
0
−2
−2
−2
1
0
0
0
1
40/45
•
Transformations and the scene
Objects can be complex:graph (1/4)
Scene Graph
ROBOT
upper body
head trunk arm arm
•
•
lower body
stanchion
base
3D scenes are often stored in a directed acyclic graph (DAG) called a scene graph
–
–
–
–
WPF
Open Scene Graph (used in the Cave)
Sun’s Java3D™
X3D ™ (VRML ™ was a precursor to X3D)
Typical scene graph format:
–
–
–
objects (cubes, sphere, cone, polyhedra etc.): stored as nodes (default: unit size at origin)
attributes (color, texture map, etc.) stored as separate nodes
transformations are also nodes
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
41/45

Transformations and the scene
For your assignments use
simplified format:
graph
(2/4)




Attributes stored as a components of each object node (no separate attribute
node)
Transform node affects its subtree
Only leaf nodes are graphical objects
All internal nodes that are not transform nodes are group nodes
Represents a
transformation
Step 1: Various transformations
are applied to each of the leaves
(object primitives—head, base, etc.)
Step 2: Transformations are then
applied to groups of these objects
as a whole (upper body, lower
body)
Together this hierarchy of
transformations forms the “robot”
scene as a whole
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
42/45
•
Transformations and the scene
graph (3/4)
Notion of a cumulative transformation
matrix that builds as you move up the
tree (), appending higher level
transformation matrices to the front of
your sequence
•




Example:

– For o1,  = 
– For o2,  =  
– For o3,  =   
– For a vertex v in o3, position in
world (root) coordinate system is:
object nodes (geometry)
–   = (   ) 
transformation nodes
group nodes
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
43/45
•
•
•
•
•
Transformations and the scene
graph (4/4)
You can reuse groups
of objects (sub-trees) if
they have been defined
Group 3 has been used
twice here
Transformations
defined within group 3
itself are the same
Different s for
obj1
each use of group 3 as
a whole
  .   
group3
root



group1
obj3

obj4

group3
Universidad Católica Andrés Bello » Computación Gráfica » Ciro Durán
group2

obj2

group3
44/45

similar documents