Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 5 - Apunte
Unidad 5 - Apunte
Unidad 5
Animacin
Unidad 5 Animacin
Contenido
Introduccin ................................................................................................................................... 3
Animacin tradicional.................................................................................................................. 3
Keyframes .................................................................................................................................. 5
Animacin asistida por computadora .............................................................................................. 6
Canales ...................................................................................................................................... 8
Interpolacin .................................................................................................................................. 9
Interpolacin lineal.................................................................................................................... 11
Curvas definidas por tramos ..................................................................................................... 12
Continuidad .............................................................................................................................. 13
Splines cbicos ............................................................................................................................ 15
Hermite .................................................................................................................................... 16
Generacin automtica de tangentes .................................................................................... 18
Bezier ....................................................................................................................................... 19
Ease-in/ Ease-out ........................................................................................................................ 22
Representacin de la orientacin. ................................................................................................ 24
ngulos fijos y ngulos de Euler ............................................................................................... 25
Ventajas y desventajas de ngulos Euler y ngulos-fijos: ..................................................... 27
Ventajas................................................................................................................................ 27
Desventajas: ......................................................................................................................... 27
Gimbal Lock ............................................................................................................................. 28
Rotacin Eje-ngulo ................................................................................................................. 30
Cuaterniones ............................................................................................................................ 31
Rotacin con cuaterniones .................................................................................................... 32
Interpolacin de cuaterniones ............................................................................................... 34
Animacin de modelos 3D ........................................................................................................... 36
Animacin Explicita .................................................................................................................. 36
Animacin implcita................................................................................................................... 39
La articulacin raz ................................................................................................................ 41
La piel ................................................................................................................................... 43
Vertex Blending..................................................................................................................... 46
Animacin por keyframes en animacin esqueltica ................................................................. 47
Ventajas y desventajas de la animacin esqueltica y la animacin por vrtice ..................... 48
Agradecimientos .......................................................................................................................... 49
Bibliografa................................................................................................................................... 49
Introduccin
En las unidades anteriores hemos visto las distintas tcnicas por las cuales se crean,
manipulan, almacenan imgenes. Las imgenes fijas contienen gran cantidad de
informacin por s mismas, y pueden contener mucha ms informacin si estas estn en
movimiento. El sistema visual humano ha evolucionado para poder procesar toda esta
informacin y para poder sobrevivir en el mundo que lo rodea al poder interpretar el
movimiento.
Como ya se introdujo brevemente en el apunte de 2D avanzado la animacin tal como
se presenta aqu est compuesta por una serie de imgenes fijas que cuando se reproducen
en una secuencia suficientemente rpida son percibidas por el observador como una nica
imagen en movimiento. El hecho de que imgenes discretas sean interpretadas como un
continuo se debe a un fenmeno fisiolgico denominado persistencia de la visin el cual
que permite que se llenen los espacios entre cada una de las imgenes.
La palabra animacin proviene del latn anima y significa el proceso de dar vida,
inters, espritu y movimiento. En el contexto de esta unidad, animar consiste entonces en
dar la sensacin de que objetos inanimados tienen vida y movimiento. Aunque existen
muchas formas de animar, en esta unidad solo trataremos aquellas tcnicas relacionadas
con la animacin asistida por computadora la cual no solo se aplica al cine y a los
videojuegos, sino que tambin encuentra su lugar en la arquitectura, diseo, simulacin,
sistemas de realidad virtual, medicina, e investigacin cientfica. Comenzaremos entonces
por hacer una breve introduccin sobre la animacin tradicional que sent las bases de la
animacin asistida por computadora que vemos hoy en da, para luego continuar con las
herramientas matemticas que nos permiten realizar interpolaciones y representar la
orientacin para finalmente aplicar esto en la animacin de modelos en tres dimensiones.
Animacin tradicional
La animacin tradicional hecha con dibujos a mano tal como la conocemos comenz
a principios del 1900 inicio con experimentos de filmaciones hechas cuadro por cuadro,
donde objetos aparecan, desaparecan y cambiaban de forma. Luego dibujantes
profesionales comenzaron a filmar dibujos en hojas de papel, en donde en cada cuadro el
dibujo era levemente distinto.
En 1914 se patent el uso de lminas transparentes de acetato de celulosa llamados
Celuloides o simplemente Cels,
Cels las cuales permitieron combinar varias capas de dibujos en
una sola imagen final. Con esto, cada personaje se dibujaba en una hoja de papel
transparente mientras que el fondo se lo dibujaba en un papel opaco. Primeramente se
colocaba el fondo opaco y por encima de ste, cada uno de los Cels. Luego una cmara
fotografa todos estos elementos desde arriba, logrando el efecto de que todos los Cels y el
fondo se combinen en una nica imagen.
Unidad 5 Animacin
Esta tcnica signific un avance enorme ya que les permita a los animadores reducir
una gran cantidad de esfuerzo, debido a que ahora solo deban modificarse aquellos Cels en
donde el personaje sufra algn cambio respecto del cuadro anterior, mientras que se
reutilizaban los Cels que permanecan sin cambios. En algunos casos, inclusive distintas
partes un nico personaje podan estar constituidas a su vez por varios Cels, como la
cabeza, boca y manos.
Uno de los avances ms significativos en la animacin tradicional surgi de los
estudios de Disney, y fue la cmara multiplano. Este dispositivo constaba de una cmara
montada en la parte superior y por debajo de esta existan distintos planos con Cels
colocados uno debajo del otro. Debido a que cada uno de estos planos poda moverse
independientemente en las seis direcciones, se podra lograr el efecto Parallax, en el cual
los planos que estn ms cercanos a la cmara se mueven ms rpido y los ms lejanos se
mueven ms lentamente creando un efecto de profundidad de campo y dando mejor
sensacin de tridimensionalidad.
Cmara multiplano
Keyframes
Unidad 5 Animacin
Keyframe 1
Keyframe 2
Keyframe 3
Keyframe 4
Unidad 5 Animacin
Canales
Avars
Aunque alterando un avar por vez, podemos llegar a animar un objeto, para lograr
una secuencia de animacin fluida y creble debemos modificar muchos avars de forma
simultnea y coordinada. Algunos avars pueden permanecer sin alterarse durante largos
periodos de tiempo, es decir sin redefinir keyframes, mientras que otros pueden estar
constantemente redefinindose. Para poder visualizar fcilmente la ubicacin de los
keyframes en una pantalla de edicin, se coloca una lnea de tiempo por cada avar, un
debajo de otra. Cada lnea de tiempo es un canal o track,
track y cada uno de estos puede
contener n keyframes dentro de l.
A su vez, podemos decir que un keyframe queda definido mnimamente por un
instante t (keytime
keytime)
keyvalue
keytime y un valor v (key
keyvalue),
value y que el intervalo de tiempo existente entre
dos keyframes consecutivos lleva el nombre de span.
span
Entonces puede decirse que una animacin de una escena consiste de mltiples
objetos los cuales poseen caractersticas modificables llamadas avars, las cuales pueden
tomar valores a lo largo del tiempo ya sea por keyframes o por procedimientos. Cada avar
tiene su propio canal en donde se almacenan un conjunto de keyframes con valores
almacenados en distintos instantes de tiempo. El proceso de animar es entonces alterar
gradualmente los valores de los avars que acorde avanza el tiempo.
La ventaja de utilizar la computadora para animar es que la cantidad de valores que se
pueden generar entre dos keyframes es prcticamente infinita. Como la cantidad de cuadros
que se pueden mostrar por segundo en la pantalla no suele ser constante, el instante t de
tiempo en que puede llegar a necesitarse el dibujado de un cuadro puede que no caiga
justamente en el instante donde existe un keyframe. En estos casos el instante a representar
se encuentra entre medio de dos keyframes consecutivos, por lo que para garantizar que
entre dos keyframes de un mismo canal exista siempre un valor debemos asegurarnos de
que exista una funcin, es decir que para cada instante de tiempo exista un nico valor de
avar.
Para saber qu valor de parmetro debera ir entre dos keyframes, debemos encontrar
una manera en la que, con saber al menos los dos keyframes, podamos obtener un valor
intermedio. Es aqu cuando se utilizan las tcnicas de interpolacin matemtica que
introduciremos a continuacin.
Interpolaci
Interpolaci n
A fin de obtener los infinitos valores que pueden existir entre dos keyframes
espaciados en el tiempo, acudimos a la tcnica de interpolacin la cual intenta generar
curvas matemticas que nos van a ayudar a obtener dichos valores sin demasiado costo
computacional. Cuando se construye una curva a partir de un conjunto de puntos y dicha
curva pasa a travs de todos y cada uno de ellos, entonces se dice que la curva interpola los
puntos. Por otro lado, si se utilizan los puntos para controlar la forma general de la curva,
entonces se dice que la curva aproxima los puntos. Es por esto que en la aproximacin
aproximaci n,
n la
curva no necesariamente toca todos los puntos, mientras que en la interpolacin esto es
una condicin necesaria.
Unidad 5 Animacin
10
x = f (t )
11
Interpolacin lineal
La curva paramtrica ms simple que interpola dos puntos es la lnea. Al utilizar la
ecuacin de la misma podemos generar cualquier punto que caiga dentro de esa lnea. A
esta tcnica se la conoce como interpolacin lineal o LERP,
LERP y es muy popular por ser
simple y poco costosa de calcular.
P(1)
P(u )
P (0)
P1
P0
Interpolacin lineal
f (t ) = P0 +
t t0
( P1 P0 )
t1 t0
11
Unidad 5 Animacin
12
f (u ) = F0 (u ) P0 + F1 (u ) P1
F0 (u )
F1 (u )
Curvas definida
d efinidas
efinidas por tramos
La interpolacin que vimos hasta ahora se realiza entre dos puntos nicamente, sin
embargo como hemos dicho antes, por cada canal de animacin, pueden haber cientos o
miles de keyframes con valores espaciados en el tiempo. Entonces, Cmo podemos hacer
para interpolar entre ms de dos puntos? La solucin ms simple es crear curvas definidas
por segmentos o tramos, donde dependiendo del instante t que deseemos interpolar,
elegiremos el par de puntos correspondientes. El mtodo para encontrar los dos puntos a
interpolar es el siguiente:
Para el valor de t que queremos interpolar buscamos en la lista de keyframes
aquellos que estn ubicados en los tiempos ti y ti +1 de manera tal que ti t ti +1 .
Con los dos valores de keyframes encontrados Pi y Pi +1 utilizamos la formula ya vista
t ti
u=
ti +1 t i
Para que asegurarnos u que este dentro del rango [0,1] .
Finalmente para obtener el valor interpolado utilizamos la funcin interpolacin
original, fi (u ) = (1 u ) Pi + uPi +1 utilizando u como parmetro.
P1
f1
P0
P3
f2
f3
P2
13
Uno de los problemas que podemos encontrar al implementar la bsqueda de los dos
keyframes consecutivos a interpolar es que hay que desarrollar un algoritmo que vaya
recorriendo linealmente y en orden creciente todos los keyframes hasta encontrar los dos
keyframes tal que sus posiciones en t cumplan que ti t ti +1 . Esta bsqueda lineal no
suele traer problemas de performance a menos que estemos tratando con miles de
keyframes y a su vez cientos de canales. Para estos casos, la bsqueda de los dos keyframes
a interpolar se optimiza utilizando bsqueda binaria, tomando ventaja del hecho de que los
distintos ti se encuentran ordenados de menor a mayor.
Continuidad
Para que la curva sea una curva propiamente dicha, la forma definida por tramos debe
cumplir la condicin de continuidad, es decir:
f i (1) = f i +1 (0)
Este orden de continuidad, donde la curva se podra dibujar de forma continua sin
levantar el lpiz de la hoja, se denomina orden de continuidad C 0 .
En el contexto de la animacin por computadora, cuando interpolamos mediante una
curva que solo cumple la continuidad C 0 , es probable que notemos cambios repentinos en
la velocidad del movimiento, lo cual en muchos casos no es algo deseable. A pesar de su
facilidad y rapidez de clculo, la interpolacin lineal por tramos suele utilizarse en casos
donde existen muchos segmentos muy juntos entre s, en donde la diferencia de cambio de
velocidad en la curva no es muy notoria. El efecto de cambio repentino de velocidad que
mencionbamos antes es debido a que la pendiente de cada una de las ecuaciones de cada
tramo es constante, y luego cuando se cambia de un tramo a otro, esta pendiente cambia
sbitamente. La pendiente o velocidad de cambio es el primer derivada de la ecuacin, y en
la interpolacin lineal por tramos la condicin:
f i(1) f i+1 (0)
No siempre se cumple. Para asegurarnos que la velocidad de cambio sea continua,
tenemos que recurrir al orden mayor de continuidad, el orden C1 . Con esto se garantiza que
las primeras derivadas (lneas tangentes) en los puntos de unin de los tramos sean iguales.
Existe tambin el orden de continuidad C 2 en el cual tanto la primera como la segunda
derivada de los dos tramos de curvas son iguales en el punto de unin, garantizando que la
velocidad con la cual se recorre la curva sea continua. Ordenes ms altos de continuidad se
definen de forma similar, aunque no se los suele tener en cuenta en la animacin por
computadora.
13
Unidad 5 Animacin
14
C0
C2
C1
G1
La curva tiene continuidad geomtrica en P1
mientras que en P2 tiene continuidad paramtrica
P3
15
Splines cbicos
Como acabamos de ver, la solucin que ofrecen las curvas lineales por tramos no nos
permiten lograr continuidad mayor a C 0 , y en aplicaciones donde necesitamos que la
transicin entre un tramo y otro sea suave esto no es posible. Para lograr niveles de
continuidad C1 es necesario encontrar una forma de representar curvas de una manera
rpida y compacta. Es aqu cuando la solucin ms utilizada para lograr ordenes de
continuidad ms altos es utilizar polinomios de grado tres o ms. La razn por la cual no se
utilizan los polinomios de grado dos, es decir las parbolas, es porque no tienen el
suficiente grado de flexibilidad para poder cumplir con la continuidad C 1 .
En el mundo del dibujo manual, un spline es una vara flexible de madera o plstico
que se utiliza para producir curvas suaves que pasan por un conjunto designado de puntos.
Se utilizaban pequeas pesas distribuidas a lo largo de la vara para mantenerla en posicin
mientras se dibujaba la curva.
En el contexto matemtico, los splines son todas aquellas curvas en las que la primer
y segunda derivada son continuas en todos sus tramos. Un caso particular de estas son los
splines naturales
natural es donde se exige que f i(1) = f i+1 (0) = 0 para cada uno de sus tramos,
produciendo resultados muy similares al dispositivo de spline visto anteriormente.
En los grficos por computadora se utilizan los polinomios cbicos ya que estos
ofrecen un alto grado de flexibilidad y a su vez un esfuerzo de cmputo relativamente bajo.
Adems el polinomio cbico es el polinomio con menor grado que nos puede permitir
continuidad C 2 al unir varios tramos. Si bien se pueden lograr curvas ms precisas con
polinomios de grados mayores a tres, estos requieren ms coeficientes y pueden adems
introducir oscilaciones que pueden provocar resultados inesperados.
Los polinomios paramtricos cbicos tienen la forma:
P(u ) = au 3 + bu 2 + cu + d
Tambin podemos reescribir en forma de matriz como:
15
Unidad 5 Animacin
16
P(u) = u 3
u2
a
b
u 1
c
d
Hermite
La interpolacin por medio de Hermite (llamada as por el matemtico francs
Charles Hermite) utiliza un polinomio cubico. En esta tcnica no solo es necesario indicar
los puntos extremos Pi y Pi+1 , sino que tambin es necesario que se indiquen los vectores
tangentes P1 y Pi+1 de cada uno de sus dos extremos.
P1
P1
P0
f (u )
P0
Interpolacin por Hermite
P(0) = D = P0
P(1) = a + b + c + d = P1
Con esto nos asegurarnos que haya continuidad C 0 . Sin embargo, adems tenemos
que definir las condiciones de borde para las tangentes:
P(0) = c = P0
P(1) = 3a + 2b + c = P1
17
Si resolvemos y reemplazamos
P(u ) = au 3 + bu 2 + cu + d
obtenemos que para Hermite la ecuacin paramtrica finalmente es:
P(u) = (2u 3 3u 2 + 1) P0 + (2u 3 + 3u 2 ) P1 + (u 3 2u 2 + u ) P0 + (u 3 u 2 ) P1
Si tomamos cada una de las funciones base o de mezcla:
F1 (u ) = 2u 3 3u 2 + 1
F2 (u ) = 2u 3 + 3u 2
F3 (u ) = u 3 2u 2 + u
F4 (u ) = u 3 u 2
F1 (u )
F2 (u )
F3 (u )
F4 (u )
17
Unidad 5 Animacin
18
Valor
Keyframes
Pi
Pi
Spline Catmul-Rom
19
Los Splines KochanekKochanek- Bartels (conocidos tambin como TCB Splines) se utilizan
mayormente para ayudar a los animadores a definir las tangentes mediante tres valores de
control:
Tensin: Es que tan aguda es la curva.
Continuidad: Es que tan rpido es el cambio en velocidad y direccin.
Sesgo (Bias): Es la direccin de la curva mientras pasa por el punto extremo.
Bezier
La generacin de curvas por medio de Bezier (llamada asi por el matemtico francs
Pierre Bezier) es muy parecida a la de Hermite, salvo que la manera de manipular la forma
de la curva resulta mucho ms intuitiva.
Mientras que la estrategia de Hermite usa dos tangentes para controlar la forma de la
curva, en la de Bezier se utilizan dos puntos auxiliares para definir los vectores tangentes.
Bezier utiliza cuatro puntos P0 , P1 , P2 , P3 donde los puntos de inicio y fin son P0 , y P3 ,
mientras que los puntos que ayudan a controlar la forma de la curva son P1 y P2 . Para
encontrar las funciones que definen la curva de Bezier, se plantean ecuaciones en base a sus
condiciones de borde.
19
Unidad 5 Animacin
20
Punto de control
P1
Punto extremo
P0
P3
Punto extremo
P2
Punto de control
De forma similar, para la derivada al final de la curva es formada por el vector que se
forma entre P2 y P3
P (1) = 3( P3 P2 )
Resolviendo la ecuacin, encontramos que el polinomio de Bezier est formado por:
P(u ) = (1 u ) 3 P0 + 3u (1 u ) 2 P1 + 3u 2 (1 u ) P2 + u 3 P3
Los polinomios
F1 (u ) = (1 u ) 3
F2 (u ) = 3u (1 u ) 2
F3 (u ) = 3u 2 (1 u )
F4 (u ) = u 3
Reciben el nombre de polinomios de Bernstein de orden 3, y tienen la propiedad de
que son siempre positivos en [0,1] y que la suma de estos es siempre igual a 1.
21
F (u )
F1 (u )
F4 (u )
F2 (u )
F3 (u )
P0
P3
P2
21
Unidad 5 Animacin
22
Distancia
0.5
0.5
Tiempo
23
V0
t2
d
=
v
0
2t1
t1
d = v0 + v0 (t t1 )
2
t t2
v0
t
1 t2
d = v0 1 + v0 (t 2 t1 ) + (v0
)(t t 2 )
2
2
23
0 < t < t1
t1 < t < t2
t2 < t < 1
Unidad 5 Animacin
24
Representacin de la orientacin.
En las secciones anteriores mencionamos que entre las mltiples caractersticas que
podamos animar de los objetos 3D se encontraban los avars como posicin, tamao, color,
etc.
Para dar la sensacin de movimiento, como trasladar un objeto, simplemente se
interpolaban los valores extremos definidos por los keyframes. Sin embargo al intentar
interpolar la orientacin, nos vamos a encontrar con algunas particularidades, que van a
hacer que tratemos a esta propiedad de los objetos en forma separada. Dicho de otra forma,
interpolar avars como posicin, color o tamao no es lo mismo que interpolar una
orientacin.
Podramos pensar que la orientacin de un objeto nos indica la direccin a la cual este
apunta, pero esto no es totalmente correcto, ya que direccin no es lo mismo que
orientacin. Un vector tiene direccin, pero no tiene orientacin. Si intentamos girar un
vector largo de su eje, veremos que a fin de cuenta no terminan produciendo cambio alguno
en el vector. A diferencia de los objetos o modelos, los vectores no tienen grosor ni
dimensin ms que su longitud.
25
cos( )
0
Yaw( EjeY )
sin ( )
0
0
Yaw( 90) =
1
0
0
M = 0.5
1
0 sin ( )
1
0
0 cos( )
0
1
0
0
0
0
0
Yaw(90) =
1
0 1 0
1 0 0
0 0 0
0 0 1
0 1 0
0
0
1 0 0
+ 0.5
1
0 0 0
0 0 1
0
0 1 0 0
0 0 0
=
0 0 0
0 1 0
1
0
0
0 1 0
1 0 0
0 0 0
0 0 1
0 0 0
1 0 0
0 0 0
0 0 1
Unidad 5 Animacin
26
Por otro lado, una forma alternativa para especificar la orientacin, es mediante los
ngulos de Euler, en donde las secuencias de rotaciones se realizan respecto a los ejes del
modelo, en lugar de los ejes globales. Dicho de otra forma, los ejes de rotacin son los ejes
de las coordenadas locales fijadas al objeto, donde si se rota el objeto, tambin se rotan
consigo sus ejes de coordenadas.
Para ilustrar los ngulos de Euler se lo suele comparar con los ngulos de navegacin
de un avin, que son direccin (Yaw), cabeceo (Pitch) y alabeo (Roll). Al igual que los
ngulos fijos, los ngulos de Euler pueden usarse con cualquier secuencia de rotacin de
cada uno de los ejes. Puede demostrarse que los ngulos de Euler son equivalentes a utilizar
ngulos fijos, pero revirtiendo la orden de la secuencia. Por ejemplo los ngulos de Euler
expresados en la secuencia X Y Z son equivalentes a los ngulos fijos Z Y X . Ambos
sistemas de representacin de la orientacin tienen las mismas ventajas y desventajas.
27
En DirectX existe una mtodo auxiliar que utiliza los ngulos de Euler para crear una
matriz de rotacin en usando como convencin Roll, Pitch y Yaw, es decir Z X Y .
public static Matrix RotationYawPitchRoll (
float yaw,
float pitch,
float roll
)
Ventajas y desventajas
desventajas de ngulos Euler y ngulosngulos-fijos:
Ventajas
Son fciles de interpretar: Las rotaciones expresadas como desplazamientos
angular se pueden interpretar ms fcilmente por las personas que las
matrices.
Son compactas: Solo requieren tres valores para representarlas, y no nueve
valores como en el caso de las matrices.
Desventajas:
La representacin para una misma orientacin no es nica.
Por ejemplo si a alguno de los ngulos le sumamos algn mltiplo de 360, entonces
la orientacin no va a cambiar, a pesar de que la terna de valores va a ser distinta. Otra
forma de ver esto es que rotar (0, 0, 180) resulta en la misma orientacin que (180, 180, 0).
Unidad 5 Animacin
28
Gimbal Lock
29
cos( x ) sin( y )
sin( x )
cos( x ) cos( y )
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
Grado de libertad
perdido
Ejes X y Z
alineados
Yaw = 0
Pitch = 90
Roll = 0
Gimbal lock
29
Unidad 5 Animacin
30
Rotacin EjeEje-ngulo
Tal como se poda apreciar en la seccin anterior, la interpolacin de orientaciones
donde los keyframes estn expresados como ngulos de Euler puede dar resultados
indeseados. Sin embargo, Leonard Euler demostr mediante su teorema de rotacin que se
puede pasar de una orientacin a otra por medio de una rotacin simple con respecto de un
nico eje. En este contexto cada orientacin se la representa por medio de una tupla de
cuatro nmeros, que consiste de un vector A ( x, y, z ) y un ngulo :
31
A1 A2
A1 A2
= cos 1
A fin de interpolar entre las dos rotaciones debemos crear una matriz de rotacin
respecto de un eje arbitrario, y luego Interpolar tanto el ngulo de rotacin respecto del
nuevo eje, es decir , como los ngulos 1 y 2 de cada uno de los ejes A1 y A2 .
Aunque la forma de pensar la orientacin como Eje-ngulo para interpolar la
orientacin nos libra de los efectos del gimbal lock, est an puede tener algunos
problemas. Uno de ellos es que resulta muy costoso concatenar dos representaciones Ejengulo y el otro es que utiliza funciones trascendentes para calcular la rotacin de los
vectores.
Es por eso que se utiliza otra forma de representar la orientacin, que tiene las
ventajas del Eje-ngulo y que adems nos permite un mejor mtodo para concatenar. Es
aqu cuando conviene utilizar los llamados Cuaterniones.
A1
A2
Cuaterniones
Los cuaterniones fueron inventados por William Hamilton en 1843 como una
extensin de los nmeros complejos, aunque recin en 1985 Ken Shoemake logr
encontrarle una aplicacin en los grficos por computadora. Los cuaterniones son una
herramienta matemtica que permite solucionar algunos de los problemas que presentan la
representacin de Euler y matrices, y permite lograr interpolaciones de orientacin estables
y constantes.
Si bien el desarrollo matemtico formal de los cuaterniones se extiende claramente
por fuera del alcance de la materia, sera apropiado introducir algunos conceptos que nos
permitirn comprender su funcionamiento bsico.
31
Unidad 5 Animacin
32
qqqq
Un cuaternin
est formado por cuatro valores, un vector de tres dimensiones
v = ( x, y, z ) y un escalar s .
qqqq
= [x y z s ]
qqqq
= [s; v ].
q = s2 + v2
Norma de un cuaternin:
1
Inversa de un cuaternin: q =
1
q
[s;v]
s2 + v2 = 1
Esto provoca que muchos clculos se simplifiquen, y que se pueda pensar al
cuaternin de forma semejante a la de una representacin eje-ngulo de la que se
mencionaba en las secciones anteriores. En un cuaternin unitario, el escalar s puede
interpretarse grficamente como el ngulo de rotacin donde s = cos( / 2) . Por otro
lado el vector v puede representar el eje de rotacin B , solo que normalizado y escalado
respecto de v = sen( / 2) .
Por lo tanto un cuaternin unitario nos sirve para representar una orientacin de un
ngulo respecto de un eje de rotacin ( x, y, z ) de la siguiente forma:
33
x
y
Representacin Cuaternin
qp = q q p q 1
33
Unidad 5 Animacin
34
El resultado de esto es un cuaternin puro, es decir sin parte escalar, donde el punto
ya rotado se encuentra en la parte ( x, y, z ) del cuaternin q .
p
1 2( q y2 + q z2 ) 2( q x q y + q s q z ) 2(q x q z q s q y )
0
0
0
0
1
q
Multiplicando esta matriz M por un vector, har que el vector rote respecto del
cuaternin q . En trminos de performance, una vez que se forma el cuaternin, no se
vuelven a utilizar funciones trigonomtricas. De forma similar existen formas de convertir
un cuaternin a matriz y viceversa.
Interpolacin de cuaterniones
Habiendo esquematizado la manera de representar una rotacin, el prximo paso es
interpolar orientaciones con cuaterniones. Al igual que cuando al principio de la seccin
nos vimos tentados de interpolar los componentes de una matriz de rotacin, interpolar
linealmente los compontes de un cuaternin no produce los resultados que esperaramos.
El grupo de cuaterniones unitarios podra pensarse como puntos cuatridimensionales
de una esfera de radio uno, es decir una hiperesfera. Interpolar linealmente los componentes
de dos cuaterniones producira una lnea recta que conecta el primer y segundo cuaternin,
que adems no mantendra la misma velocidad durante toda su trayectoria. Sin embargo lo
que se espera de una interpolacin de orientacin de cuaterniones es que genere una curva
de velocidad constante a lo largo de una esfera, es decir un arco geodsico. En lugar de
realizar una interpolacin lineal o LERP (linear interpolation) se puede utilizar una
interpolacin esfrica lineal o SLERP ( Spherical Linear interpolation), donde se interpolan
de a intervalos de ngulos iguales.
Uno de los mtodos eficientes para realizar SLERP entre dos cuaterniones p y q es
utilizando la siguiente frmula:
Slerp( p, q, t ) =
sen((1 t ) ) p + sen(t )q
sen( )
35
Slerp
Lerp
Al igual que la interpolacin lineal, con SLERP si queremos interpolar una curva por
secciones, vamos a notar discontinuidades en cada uno de las keyframes de orientaciones.
Es por eso que SLERP tambin se suele combinar con mtodos de interpolacin cubica.
35
Unidad 5 Animacin
36
Animacin de modelos 3D
Hasta este momento solo describimos algunas de las tecnicas que nos permiten
animar objetos al aplicarle transformaciones geometricas, como trasladar, rotar, escalar y
tambien vimos que se pueden animar al alterar alguna de sus caracteristicas, como su color,
nivel de traslucidez, etc.
Sin embargo, con este tipo de transformaciones no podemos lograr animaciones que
alteren al objeto de forma drastica, o que lo deformen. Muchas veces necesitamos que un
objeto en tres dimensiones se parezca a un humano, animal, robot, etc y este debe caminar,
correr, cruzarse de brazos. Para lograr alterar la malla del objeto 3d de esta forma, no
alcanza con aplicar transformaciones afines a todos sus vertices por medio de matrices. Es
necesario bajar a un nivel realizar transformaciones que diferencien a cada uno de sus
vertices. Cada vertice o grupo de vertices de la malla debe poder animarse
independientemente.
A lo largo de esta seccion veremos dos grandes clasificaciones en las cuales
lograremos animar los vertices de una malla: la animacin explcita y los implcita.
Animacin Explicita
La forma explcita de animar, se basa esencialmente en almacenar los vrtices de los
cuadros muestreados una cierta frecuencia, tal como 25 o ms cuadros por segundo. En
cada cuadro de la animacin, se almacenan todos los vrtices de la malla, teniendo
prcticamente cientos y hasta miles de copias distintas de los vrtices de la malla. Al
momento de ejecucin, a medida que avanzan los cuadros se envan todos los vrtices de la
malla de ese cuadro de nuevo al rendering pipeline, en el cuadro siguiente, se envan los
vrtices del cuadro siguiente. Si este proceso se hace por encima de una cierta frecuencia
lograremos la ilusin de movimiento. Esta tcnica de animacin se denomina perper- vertex
vertex
animation debido a que se interpolan cada uno de los vrtices que forman la malla. Es una
de las tcnicas ms sencillas y directas de animar una malla.
Como decamos en la unidad 3 de la materia, la malla no solo est compuesta por un
conjunto de vrtices sino que tambin la forman los ndices que conforman los tringulos,
las coordenadas de textura, los materiales, etc. Sin embargo es muy probable que a lo largo
de la animacin, estas caractersticas permanezcan constantes por lo que en general se
almacenarn una nica vez en el formato de animacin de malla.
37
Como podrn haber notado, este mtodo explcito de animacin per-vertex tiene dos
principales desventajas.
El primero es que el requerimiento de memoria es altsimo, ya que crece a medida
que aumentamos la frecuencia de muestreo (los cuadros por segundo de la animacin) o
aumentamos la duracin de la animacin. Si una malla posee 3000 vrtices, en cada cuadro
se almacenan otra vez esos 3000 vrtices pero en posiciones distintas. En una animacin de
unos cuantos segundos, podremos notaremos que el almacenamiento de esta animacin
puede alcanzar unos cuantos megabytes de memoria.
La otra desventaja es que al depender de una frecuencia de muestreo especifica,
cuando la tasa de actualizacin del render es mayor, la animacin ser ms rpida, y
cuando la tasa de render es menor se ver ms lento, y justamente lo que se quiere es
mantener una sensacin de velocidad de animacin constante.
Ante este problema utilizamos los mtodos de interpolacin vistos en las secciones
anteriores, de forma tal que la posicin de cada vrtice en el tiempo este determinado por la
interpolacin entre la posicin del vrtice del cuadro anterior y el cuadro actual, logrando
una transicin ms suave.
El consumo de memoria (y CPU tambin) de esta tcnica puede mejorarse al aplicar
keyframes, en lugar de crear muestras de los vrtices a intervalos constantes. Si los cambios
en las posiciones de los vrtices son lo suficientemente lineales, no necesitamos almacenar
todos los cuadros intermedios, sino que almacenando el keyframe inicial y final e
interpolndolos linealmente vamos a poder aproximarlo con bastante exactitud. De tal
forma una animacin de 1 segundo de duracin que tiene 24 cuadros, y por ende 24 veces
su geometra, puede simplificarse por medio de 5 a 10 keyframes, ahorrndonos un gran
espacio en memoria. El problema surge sin duda en elegir cuales son los cuadros clave.
Una forma de eliminar cuadros que pueden ser redundantes es mediante un mtodo
que reduzca la cantidad de cuadros, y al mismo tiempo mantenga una fluidez en la
animacin en un umbral aceptable. El problema de eliminar la cantidad mxima de cuadros
y mantener una calidad aceptable no es una tarea fcil.
37
Unidad 5 Animacin
38
Keyframe
Cuadro interpolado
Cuadros superpuestos
39
Keyframe
Cuadro interpolado
Cuadros superpuestos
Animacin implcita
A fin de intentar solucionar algunas de los problemas que trae aparejado la animacin
explcita, se desarrollo la animacin implcita. A diferencia del mtodo visto anteriormente,
los mtodos implcitos se basan en estructuras de datos auxiliares que al momento de ser
modificadas, repercuten en los objetos que tienen asociados. Dicho de otra manera, no es
necesario especificar exactamente la posicin de cada vrtice para lograr una animacin,
sino que se altera una estructura superior, la cual afecta en distinto grado a los vrtices
asociados a ella.
Estos mtodos son significativamente ms complejos que los mtodos explcitos,
pero por otro lado brindan mayor flexibilidad y una reduccin bastante grande en el
consumo de memoria.
La animacin explicita per-vertex es de alguna manera redundante en cuanto a que si
nos ponemos a observar, en la mayora de las animaciones la topologa del objeto se
conserva. Sus formas fundamentales rara vez cambian por completo y los movimientos de
cada una de sus partes parecen guardar cierta dependencia entre s. Tomemos como
ejemplo uno de nuestros brazos, si movemos nicamente la mano, el brazo y antebrazo no
tienen movimiento alguno. Sin embargo si movemos nicamente el brazo, veremos que
junto con l se traslada el antebrazo y la mano. Como podemos notar, existe una relacin de
jerarqua entre los elementos de nuestro cuerpo. Los dedos estn conectados a nuestra
mano, la mano al antebrazo y ste a su brazo. Es posible que alterando uno de los
elementos de esta jerarqua, se alteren de forma automtica los elementos que estn ligados
a estos.
39
Unidad 5 Animacin
40
Los huesos son estructuras que se encuentran conectadas por medio de articulaciones
que solo pueden moverse en cierto sentido. Observen por ejemplo que nuestras muecas
tienen menor grado de libertad para moverse que nuestros brazos. Luego de los huesos
tenemos a los msculos los cuales estn recubiertos por piel. Haciendo una gran
simplificacin podramos decir que nuestra piel se mueve mayormente en funcin de la
posicin de nuestros huesos.
Rodilla
Mueca
Hombro
1 grado de libertad
2 grados de libertad
3 grados de libertad
41
Por otro lado la piel de un modelo est conformada por la geometra del modelo, en la
cual cada vrtice est ligado a uno o ms articulaciones de forma tal que si se modifica la
posicin u orientacin de una de ellas, todos sus vrtices asociados se vern afectados. Ms
tarde veremos cmo es el proceso para asociar los vrtices a cada una de las articulaciones.
La articulacin raz
Hueso
Hu
eso
41
Unidad 5 Animacin
42
y3
x3
y1
x1
y0
x0
x
Jerarqua de espacios de coordenadas definido por
la estructura esqueltica
43
La piel
La piel de un modelo es lo que le da su forma y detalle. Est conformada por sus
vrtices, caras, normales, coordenadas de textura, etc. Sin esta piel asociada a un esqueleto
no se podra apreciar la animacin del modelo ya que recordemos que el esqueleto es
nicamente utilizado como una estructura auxiliar.
Sin embargo cabe preguntarse cmo y cuando se realiza esta asociacin entre piel y
articulacin. La respuesta es que al momento de editar el modelo, tenemos que realizar lo
que se denomina Skinning que consiste en especificar para cada vrtice que articulacin le
corresponde. Entonces por cada vrtice, a dems de su posicin ( x, y, z ) debemos
almacenar al menos un ndice que indique el nmero de articulacin. Con esto indicamos
que ese vrtice es influenciado en un 100% por las transformaciones que le realicemos a
esa articulacin.
43
Unidad 5 Animacin
44
T3
T2
T1
T0
R3 (3 )
R2 ( 2 )
R1 (1 )
Articulacin raiz:
W0 = T0
Articulacin 1:
W1 = T0 R1T1
Articulacin 2:
W2 = T0 R1T1R2T2
Articulacin 3:
W3 = T0 R1T1R2T2 R3T3
En los editores de modelos, como 3D Max, Maya, Blender etc, este proceso de
asociacin de vrtices a huesos se realiza respecto de una posicin de esqueleto que le
resulta cmoda para el artista. Esta posicin es la llamada Bind Pose o Rest Pose y es el
despliegue del esqueleto por defecto. Esto significa que para cuando se anime el esqueleto,
los cambios en rotacin, o traslacin se especifican respecto de esta pose inicial. En la Bind
Pose el esqueleto se encuentra dispuesto de tal forma que coincide con la posicin de la
malla sin transformar.
Durante la animacin esqueltica, la posicin y orientacin de los huesos irn
modificndose, por lo que los vrtices deben actualizarse en funcin de ellos. A medida que
se modifica alguno de los parmetros de las articulaciones, ya sea posicin u orientacin,
todas sus articulaciones hijas deben actualizar tantos sus matrices relativas como absolutas.
Para implementar esto se realiza un recorrido del rbol del esqueleto primero en
profundidad o Preorden, donde en cada paso se calcula la Matriz Relativa de la articulacin
y luego su Matriz Absoluta, hasta que se llegue a una articulacin hoja.
Una vez actualizada la informacin de cada articulacin, debe llegar el momento de
transformar la piel, es decir realizar transformaciones a los vrtices ligados a cada una de
ellas. Durante este proceso se deben tener algunas consideraciones especiales. Una de ellas
es que los vrtices de la malla se almacenan respecto del espacio de modelo, y no respecto
del espacio de articulacin. Con esto queremos decir que para transformar los vrtices no
alcanza con solo transformarlos por la Matriz Absoluta de cada articulacin, sino que
debemos expresar la posicin de cada vrtice respecto del espacio de la articulacin a la
que pertenece en la posicin de Bind Pose y se realiza transformando estos vrtices por la
inversa de la matriz absoluta la articulacin de Bind Pose.
45
Una vez que se anima y se actualizan las matrices se obtiene la Matriz Absoluta Ti de
cada articulacin i . La Matriz Absoluta Bi de cada articulacin en Bind Pose tambin se
tiene en cuenta. Para obtener la matriz que se va a utilizar para transformar los vrtices v de
la malla, primero se debe multiplicar la inversa de Bi por la matriz Ti y luego con esta
matriz resultante transformar los vrtices:
1
v = v Bi Ti
45
Unidad 5 Animacin
46
Vertex Blending
Hasta ahora cada vrtice se mueve en funcin de una nica articulacin y esto en si
mismo provoca algunos efectos indeseados. Por ejemplo uno de ellos se muestra en
evidencia cuando al doblar un codo los vrtices correspondientes a distintos huesos se
superponen entre s, puesto que los vrtices, al pertenecer a un nico hueso, no tienen en
cuenta cuando les puede afectar la posicin de los huesos vecinos. Este efecto es producido
ya que se utiliza Rigid Skinning, donde a cada vrtice es asociado a un solo hueso.
Es por eso que la tcnica de Soft Skinning, tambin llamada Vertex Blending,
intenta solucionar esto al permitirle al artista asignarle a cada vrtice que porcentaje de
influencia o peso tiene cada articulacin sobre l. Por ejemplo, en los vrtices cercanos al
codo, se puede especificar que un vrtice tenga un 50% de peso del hueso del antebrazo y
otro 50% de peso del brazo. De forma similar aquellos vrtices ms cercanos a la mitad del
antebrazo tendrn un mayor peso del hueso de ste. Por lo tanto cada vrtice en lugar de
poseer un ndice con el numero de articulacin a la que pertenece, ahora deber tener dos o
ms ndices, cada uno con un valor wi de 0 a 1 que indique cuanto es la influencia de esa
articulacin por sobre el vrtice. La condicin que se debe cumplir es que para cada vrtice
la suma de todos los pesos de los huesos a los que pertenece sume uno:
N 1
=1
i =0
v = v Bi Ti wi
1
i =0
Recordemos que una de las consideraciones que debamos tener al transformar los
vrtices es que debamos conservar los vrtices originales del modelo sin transformar, y
que en cada cuadro de animacin debamos transformarlos por la matriz o matrices que
influan a cada vrtice. La transformacin de los vrtices se recalcula en cada cuadro de
animacin utilizando el poder del CPU, y luego los vrtices ya transformados deben
47
enviarse a la memoria de video para ser renderizados. A medida que aumentan los FPS
aumentan tambin aumenta la cantidad de datos que deben calcularse y transferirse al
adaptador de video, haciendo de esto un potencial cuello de botella.
Es por eso que existe una forma de realizar este proceso de forma ms eficiente
utilizando mayormente el GPU. Aqu los vrtices originales del modelo se almacenan en un
buffer esttico ubicado en la memoria de video del adaptador grfico. En cada cuadro
cuando se anima el esqueleto, del lado del CPU solo se calculan las matrices pertenecientes
a cada articulacin. Luego estas matrices se envan como entrada a un Vertex Shader (Ver
unidad 8 Adaptadores de video), el cual aplica las transformaciones en base a los vrtices
que se encuentran ubicados en la memoria de video local del GPU. Con esto logramos
minimizar la performance, utilizando de mejor manera el GPU y liberando el CPU para que
realice otro tipo de tareas.
47
Unidad 5 Animacin
48
49
Agradecimientos
Mariano Banquiero
Federico Leone
Nicols Cortez
Bibliografa
Computer animation - Algorithms and Techniques Rick Parent Morgan Kaufmann
2002
Advanced Animation and Rendering Techniques Theory and Practice Alan Watt , Mark
Watt - Addison Wesley Professional 1992
Advanced 3D game programming with DirectX 10.0 Peter Walsh Worldware
Publishing 2008
Fundamentals of Computer Graphics 3rd edition - Peter Shirley - Morgan Kaufmann 2009
Core Techniques and Algorithms in Game Programming: Daniel Snchez, Crespo Dalmau
- New Riders Games 2003
Real-Time Rendering, 3rd Edition - Tomas Akenine-Moller, Eric Haines, Naty Hoffman AK Peters 2008
Essential Mathematics for Games and Interactive Applications, A Programmer's Guide 2nd Edition 2008
Computer Graphics with OpenGL - 3rd edition - Donald Hearn, Pauline Baker - PrenticeHall 2003
Real-time 3D Character Animation with Visual C++ -Nik Lever - Focal Press 2002
Focus on 3D Models Evan Pipho Premier Press 2003
Computer Animation Complete - Rick Parent, David S. Ebert Morgan Kaufmann 2010
Character Animation in 3D - Steve Roberts Focal Press 2004
3D Math Primer for Graphics and Game Development - Fletcher Dunn, Ian Parberry Wordware Publishing - 2002
Okino Computer Graphics - http://www.okino.com/conv/skinning.htm
Motek Stockmoves - http://stockmoves.motekentertainment.com
49