Beruflich Dokumente
Kultur Dokumente
C o m p uta c i n G r fica
World Fra me
Marco del mundo (world frame): w
~ t
de mano derecha,
no lo vamos a alterar.
La relacin entre el marco del objeto y el marco del mundo se puede escribir con una
transformacin afn (matriz 4x4) O.
t t
~ O
~o = w
Para mover un objeto en la escena cambiamos entonces la matriz O.
La posicin de cada objeto en la imagen se basa en su relacin 3D con la cmara (sus coordenadas respecto una base apropiada).
t
Se interpreta un ojo viendo hacia su eje z negativo para hacer una foto.
t t
2 3 2 3
~ E
~e = w xe xo
6 ye 7 6 y 7
6 7=E 1 6 o 7
O4
t
p = ~o c = w t t 1 4 ze 5 zo 5
~ Oc = ~e E Oc
1 1
S.J. Gortler. Foundations of 3D Computer Graphics. MIT Press. 2012.
Si queremos aplicar una transformacin M al marco de referencia del objeto respecto a un marco
auxiliar ~at = w
~ A.
t
t
~o
t
~ O
=w
t 1
= ~a A O
t 1
) ~a M A O
t 1
~ AM A
=w O
En cdigo implementamos: O AM A 1
O
S.J. Gortler. Foundations of 3D Computer Graphics. MIT Press. 2012.
Qu marco de referencia ~
a elegir?
t
Marco de referencia auxiliar con origen en el marco del objeto y ejes con la
orientacin del marco de la cmara.
Empezar en WCS.
O = (O)T (O)R
E = (E)T (E)R
t t
~ (O)T (E)R
~a = w
A = (O)T (E)R
Actualizar la matriz O: O OM 0
Utilizando el mismo marco que para los objetos, la cmara gira alrededor del centro del
objeto.
punto hacia donde el ojo mira q y el vector hacia arriba ~u describiendo la direccin
vertical de la cmara.
Ej.
S.J. Gortler. Foundations of 3D Computer Graphics. MIT Press. 2012.
push(M) crea una nueva matriz en el nivel ms alto de la pila que es una copia de la matriz que
estaba previamente en ese lugar.
...
matrixStack.initialize(inv(E));
matrixStack.push(O);
matrixStack.push(O');
draw(matrixStack.top(), cube); //body
matrixStack.pop(); //O'
matrixStack.push(A);
matrixStack.push(B);
matrixStack.push(B');
draw(matrixStack.top(),sphere); //upper arm
matrixStack.pop(); // B'
matrixStack.push(C);
matrixStack.push(C');
draw(matrixStack.top(),sphere); //lower arm
matrixStack.pop(); // C'
matrixStack.pop(); // C
matrixStack.pop(); // B
matrixStack.pop(); // A
// current top matrix is inv(E)*O
// we can now draw another arm
matrixStack.push(F);
... S.J. Gortler. Foundations of 3D Computer Graphics. MIT Press. 2012.
Los objetos rgidos que forman las conexiones entre las junturas (joints) se conocen como links.
El objeto libre en el extremo de la cadena de joints y links se conoce como rgano terminal o end-effector.
En robtica se manejan diferentes joints, en CG los ms comunes son los joints de rotacin o los joints ball-
and-socket.
La direccin permitida de movimiento de un joint se conoce como grado de libertad (DOF) del joint.
Cuando un joint tiene ms de un grado de libertad se puede modelar como un conjunto de n joints, cada uno
con un grado de libertad conectado por n-1 links de tamao cero.
Revolute joint
Prismatic joint
Cylindrical joint
Ball-and-socket joint
Planar joint
root joint
root
Un nodo a partir del cual no hay arcos hacia abajo es el nodo hoja.
El Nodo i contiene:
El Arco i contiene:
V1.1 = T0 T1 T1.1 V1.1 T1.1 (transformacin del Link 1.1 relativo al Link 1)
1.1
Link 1
T0
T1
T0 R1(1)
T1.1
R1.1(1.1)
V1 = T0 T1 R1(1) V1
Para evaluar una jerarqua de links y joints hacemos un recorrido depth-first en el rbol correspondiente.
Cuando un arco se visita hacia abajo en la jerarqua, sus transformaciones se concatenan a la transformacin de su
nodo padre.
Cuando un arco se visita hacia arriba en la jerarqua, la transformacin de ese nodo debe restablecerse antes de
continuar hacia abajo por otra rama.
Un conjunto de parmetros de rotacin y translacin (DOF) que resulta de especificar completamente la posicin y
orientacin de cada link de conoce como configuracin o pose.
Una pose se especifica generalmente con un vector con el mismo nmero n que los n grados de libertad.
[ J.J. Kuffner. Effective Sampling and Distance Metrics for 3D Rigid Body Path Planning. Proc. of the IEEE Int. Conf. on Robotics and Automation (ICRA). 2004.]
CS de cuerpos rgidos
1
x = y
12