Está en la página 1de 49

Universidad Tecnolgica Nacional

Facultad Regional Buenos Aires

Tcnicas de Grficos por


Computadora

Unidad 5

Animacin

Ing. Leandro R. Barbagallo


Ing. Matias N. Leone

ltima revisin: 24 Mar 2011

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

Tcnicas de Grficos por Computadora

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

Cels utilizadas en la animacin


tradicional

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.

Tcnicas de Grficos por Computadora

Cmara multiplano

Keyframes

Una de las tcnicas ms importantes con el que podemos relacionar la animacin


tradicional con la animacin asistida por computadora es la creacin de cuadros clave,
keyframes o tambin llamados extremos. Los keyframes eran dibujos cuidadosamente
elegidos por los animadores maestros para indicar los cursos de accin ms importantes de
la animacin. Con estos cuadros claves, ellos delimitan los cambios de estados ms grandes
que sufre un personaje u objeto. Por ejemplo si se desea animar un personaje que bebe un
vaso de agua, los animadores maestros consideraran los siguientes keyframes:

Unidad 5 Animacin

Keyframe 1

Keyframe 2

Keyframe 3

Keyframe 4

Keyframes de una animacin

Sin embargo si la animacin consintiese solo de estos keyframes, no se lograra la


ilusin de movimiento fluido, ya que al ser pocos frames los cambios seran muy grandes y
rpidos. Para esto los animadores maestros, luego de definir los keyframes ms
importantes, contaban con los animadores asistentes, los cuales inferan los cuadros
intermedios existentes entre cada uno de estos Keyframes, llamados inbetweens o
tweenies. La cantidad de inbetweens a dibujar dependa de la duracin final que se quisiera
tener en la secuencia. Cuantos ms inbetweens mayor la duracin de la secuencia. En
general para evitar que la cantidad de tiempo que transcurre entre un keyframe y otro sea
muy grande y produzca resultados incontrolables, se sola dibujar keyframes de manera tal
que entre ellos existiesen solamente entre tres y cinco inbetweens.

El proceso de dibujo manual de los inbetweens, llamado tweening,


tweening les daba a los
animadores un control muy exacto sobre el resultado final de la animacin a costas de un
trabajo manual realmente tedioso.
Para dar una idea de la cantidad de cuadros que se deban dibujar, para una secuencia
de un minuto de animacin a 30 fps requiere 60x30 = 1800 cuadros distintos de animacin.
La manera que encontraron los productores para alivianar este trabajo fue el de
introducir el uso de computadoras. La animacin por computadora toma varios elementos
de la animacin tradicional, los cuales en algunos casos guardan grandes similitudes.

Animacin asistida por computadora


Como decamos previamente, existen similitudes en las tcnicas utilizadas en la
animacin tradicional y la asistida por computadora. Una de ellas es el uso Cels que puede
relacionarse con facilidad con la tcnicas de blitting de sprites en 2D, en donde el uso de
transparencia por color key o mscara permiten el dibujado de stas por sobre un fondo fijo
sin necesidad de redibujar nuevamente todo el escenario. Por otro lado como veremos ms

Tcnicas de Grficos por Computadora

adelante, los keyframes y el tweening tienen un papel fundamental en la animacin asistida


por computadora.
En la animacin por computadora, existe una distincin entre animacin 2D, en
donde se utilizan mayormente bitmaps y vectores para lograr animacin y la animacin 3D
en donde predominan objetos como los modelos en 3D, las luces, los materiales y las
cmaras. Estos objetos lgicos que conforman las escenas tanto 2D como 3D, permiten que
sus propiedades sean alteradas antes de poder ser rasterizadas, es decir, transformadas en
pixeles para finalmente ser representados en la pantalla.
Cuando se piensa en animacin, se tiende a creer que para lograr dicho efecto, solo se
puede modificar la posicin de los objetos en el espacio. Esto no es del todo cierto, ya que
existen una gran variedad de caractersticas que definen a un objeto en escena. Las
caractersticas o parmetros que poseen los objetos de una escena y que pueden ser
alterados a lo largo del tiempo se denominan animation variables o simplemente avars.
avars La
cantidad de avars que posee un objeto define el grado de libertad o DOF (degree of
freedom) que tiene una animacin. Entre los varios avars que poseen los distintos objetos
de una escena podemos destacar:

Con la animacin definida por keyframe, el animador logra un mayor control


artstico, a costa de un trabajo muy laborioso y artesanal. Cabe destacar que en este tipo de
control de animacin, la secuencia animada resultante se reproducir siempre de la misma
forma, sin importar cuantas veces se la repita, debido a que la misma se encuentra
delimitada por los valores de los keyframes. Aunque la forma ms comn de definir los
valores de los avars a medida que avanza el tiempo es mediante los keyframes, esta forma
no es la nica. Existen, por otro lado una serie de situaciones en las que resulta mejor
definir los avars de los objetos en base a algoritmos o formulas matemticas o fsicas. Por
ejemplo si tenemos que animar el movimiento de las agujas de un reloj, probablemente sea
mejor definir la funcin matemtica que permite rotar un objeto a una determinada
velocidad en lugar de definir los keyframes. Este tipo de control de animacin se denomina
animacin procedural. Dentro de este tipo tambin se encuentran la animacin basada en la
fsica en donde a cada objeto se le definen distintas propiedades como masa, forma, centro
de gravedad, coeficiente de friccin, etc, y luego mediante la resolucin de ecuaciones se
obtienen los valores de los avars, como posicin, velocidad, ngulo de rotacin, etc. Con la
animacin procedural, pequeos cambios en los parmetros ingresados pueden producir
cambios impredecibles en la animacin. Dentro de las aplicaciones de la animacin basada
en la fsica se encuentran la animacin de partculas, de telas, pelajes, fluidos, etc.

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.

Tcnicas de Grficos por Computadora

Editor de keyframes en Adobe Flash CS4

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

La interpolacin en forma general se refiere a las distintas tcnicas que podemos


utilizar para generar una curva en base a un conjunto finito de puntos.
En este contexto, existen tres tipos de ecuaciones: explicitas, implcitas y
paramtricas.
Explicitas: Son del tipo y = f (x) . Son buenas para generar puntos ya que por
cada x , genera un y . Sin embargo es dependiente el eje de coordenadas que
elijamos y hay problemas si tenemos ms de un valor de y para un valor de

x determinado, por ejemplo y = x .

Implcitas: Son del tipo f ( x, y ) = 0 , Son tiles para determinar fcilmente si


un punto cae dentro de la curva o no, ya que solo basta con reemplazar los
valores en la ecuacin y verificar si cumple con la igualdad. La desventaja es
que no se pueden generar puntos a partir de la forma implcita.

Paramtricas: Son el tipo

x = f (t )

en donde por cada valor de t se genera un


y = g (t )
punto ( x, y ) . La ventaja es que para un mismo valor de x le pueden
corresponder ms de un valor de y . Esta forma de ecuacin es las ms
utilizada en la animacin por computadora y en la generacin de curvas
geomtricas.

Cuando se utilizan las ecuaciones paramtricas en el contexto de la animacin, el


parmetro generalmente se define como u o t y podemos generalmente asociarlos con el
tiempo, independientemente de la unidad que se utilice. Por convencin se suele utilizar la
letra u cuando se asegura el valor de esta parmetro recae siempre entre el intervalo
unitario [0,1] .

11

Tcnicas de Grficos por Computadora

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

La misma se la define como:


f (u ) = P0 + u ( P1 P0 )
Si reagrupamos:
f (u ) = (1 u ) P0 + uP1
Cuando u = 0 entonces f (0) genera el punto inicial P0 y cuando u = 1 entonces
f (1) genera el punto final P1 . Los valores de u que se encuentran entre 0 y 1 generarn
puntos dentro del segmento P0 P1 . Es importante remarcar que la interpolacin se encuentra
indefinida para valores de u fuera del intervalo [0,1] . Sin embargo, en muchos casos los
valores de tiempo t de los keyframes no siempre se encuentran entre el rango de [0,1] , por
lo que tenemos que convertir el valor t del intervalo [t0 , t1 ] en el parmetro u comprendido
dentro del intervalo [0,1] para poder utilizar la ecuacin vista anteriormente. Para esto
utilizamos la frmula:
t t0
u=
t1 t0
La formula de interpolacin definida en funcin de t queda entonces como:

f (t ) = P0 +

t t0
( P1 P0 )
t1 t0

La forma f (u ) = (1 u ) P0 + t P1 tambin puede reescribirse de manera ms genrica


utilizando las funciones base o funciones de mezclado (Blending Functions)

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

Interpolacin lineal definida por tramos

13

Tcnicas de Grficos por Computadora

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

Las condiciones C n que acabamos de mencionar son llamadas ordenes de


continuidad paramtrica, y en el contexto de las curvas paramtricas se intenta hacer
distinciones entre continuidad paramtrica y continuidad geomtrica,
geomtrica siendo esta ultima
un poco menos restrictiva.
En el orden de continuidad paramtrico C1 , se requiere que la tangente del primer
segmento sea igual a la tangente del vector del segundo segmento en el punto de unin, sin
embargo en el orden de continuidad geomtrico G1 , solo se requiere que las tangentes de
ambos segmentos sean proporcionales, es decir:
f i (1) = k f i +1 (0)
Para algn escalar k > 0 .
La razn para la cual se relajan las condiciones de continuidad de las curvas, es
debido a que si bien las curvas no son perfectamente continuas, para la percepcin humana
estas siguen pareciendo continuas. Ordenes ms altos de continuidad geomtrica
encuentran lugar en aplicaciones en diversas reas como el diseo de automviles y
arquitectura.
La continuidad paramtrica C 0 y la geomtrica G 0 son iguales, y siempre se cumple
n
que cualquier curva C n es tambin una curva G , pero a la inversa.
La continuidad geomtrica G1 requiere que el vector tangente tenga una direccin
continua an cuando cambie la velocidad. En la continuidad C1 se requiere que la
velocidad la cual se recorre la curva sea continua, mientras que en G1 esto no es necesario.
P2
C1
P1
P1

G1
La curva tiene continuidad geomtrica en P1
mientras que en P2 tiene continuidad paramtrica

P3

15

Tcnicas de Grficos por Computadora

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

Si logramos encontrar las funciones a, b, c y d para de los polinomios de cada tramo,


de forma tal que la transicin entre un tramo y otro sea suave, entonces podemos eliminar
las discontinuidades de primer orden que tenamos en la interpolacin lineal. Existen
diversas tcnicas para encontrar o forzar una solucin a las funciones a, b, c y d
mencionadas. A continuacin veremos dos de las formas ms comunes de interpolacin por
splines cbicos.

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

Para encontrar las funciones a, b, c y d del polinomio de Hermite debemos plantear


las ecuaciones de forma tal que cumplan con las restricciones o condiciones de borde.
Empecemos por la condicin bsica que es que en el principio del tramo la curva debe
coincidir con P0 y en el extremo final debe coincidir con P1 , por lo que:

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

Tcnicas de Grficos por Computadora

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

Y las graficamos resulta:


F (u )

F1 (u )

F2 (u )

F3 (u )

F4 (u )

El resultado de evaluar la curva en un punto determinado resulta de la combinacin


lineal de cada una de estas funciones de mezcla. Aqu se puede notar que las funciones que
afectan a los puntos extremos influyen con ms peso que las funciones que afectan a las
tangentes.
Para construir curvas por tramos podemos hacer lo mismo que en la interpolacin
lineal por tramos, donde tenemos que aseguramos no solo que los extremos coincidan en
valor:
f i (1) = f i+1 (0)
Sino que tambin los vectores tangentes en los extremos sean iguales.
f i(1) = f i+1 (0)
Los vectores tangentes se pueden usar ms que para mantener el primer orden de
continuidad, ya que cambiando su magnitud tambin controlamos la velocidad a la que se
mueve por la curva. Cuanto ms largo es el vector tangente, ms rpido se va a mover un
punto a lo largo de la curva y ms recta sta se vuelve.

17

Unidad 5 Animacin

18

Valor

Keyframes

Ejemplo de interfaz para especificar


keyframes

Generacin automtica de tangentes


Las tangentes pueden definirse manualmente mediante las interfaces de usuario para
crear distintos efectos en la velocidad de la animacin, sin embargo si no deseamos definir
manualmente cada una de las tangentes, podemos recurrir a los splines cbicos naturales,
en los cuales la segunda derivada se iguala a cero, con lo cual las tangentes pueden
encontrarse mediante clculo.
Tambin existen mtodos para encontrar tangentes automticamente en base a los
puntos extremos Pi y Pi+1 . En el caso de las Cardinal Splines donde la tangente en un
punto Pi se obtiene en base al vector formado entre el punto extremo anterior y el punto
extremo siguiente.
Pi = a ( Pi +1 Pi 1 )
Siendo la constante a una medida de tensin de la curva.
El caso de los splines
splines C atmullatmull -Rom,
Rom son un caso particular de los cardinal splines
1
donde la constante a toma valor de .
2
Pi +1
Pi +1 Pi 1
Pi 1

Pi

Pi

Spline Catmul-Rom

19

Tcnicas de Grficos por Computadora

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

Segmento de curva de Bezier


Al igual que Hermite el principio del tramo la curva debe coincidir con P0 y en el
extremo final debe coincidir con P1
P(0) = D = P0
P(1) = a + b + c + d = P1
Sin embargo, la primer derivada en el comienzo es proporcional al vector que se
forma entre el primer y segundo punto de control. Para ser ms preciso es 3 veces el vector
formado por P0 y P1 .
P (0) = 3( P1 P0 )

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

Tcnicas de Grficos por Computadora

F (u )

F1 (u )

F4 (u )

F2 (u )

F3 (u )

Adems se puede demostrar matemticamente que la curva de Bezier se encuentra


dentro del cerco (convex hull) generado por sus puntos de control, lo que la convierte en
mucho ms intuitiva que otras curvas.
P1

P0

P3

P2

Las curvas cubicas de Bezier son ampliamente utilizadas en aplicaciones para


modelado 3D y animacin, debido a su facilidad de uso y su bajo costo de clculo.

Ejemplos de aplicaciones con editores de keyframes que utilizan


curvas Bezier

21

Unidad 5 Animacin

22

EaseEase - in/ EaseEase -out


Existen casos en la animacin en donde queremos que la velocidad con la que se
realizan los cambios en los avars den una sensacin de naturalidad. Para esto ahora
debemos tener en cuenta la distancia recorrida de la curva con respecto al tiempo. En estos
casos para lograr naturalidad en el movimiento, se busca que el movimiento empiece con
una velocidad cero, acelere hasta una velocidad constante en la mitad y luego desacelere
hasta terminar con una detencin total. Adems se busca que durante todo el tramo, no haya
saltos instantneos en la velocidad, es decir que se busca continuidad C 1 .
Este tipo de efectos se utilizan para lograr que una cmara acelere y desacelere con
naturalidad, que una pantalla de scroll de una ventana acelere y desacelere cuando llega al
fin de su recorrido, o cuando se hace un carrusel para ver el contenido de una librera de
discos en un reproductor de msica porttil. Es en estos casos que se utilizan curvas llamas
ease-in/ease-out, que pueden traducirse como curvas relajadas.
Para construir curvas ease-in/ease-out se suelen utilizar dos enfoques muy comunes,
una utiliza funciones sinodales para la parte de aceleracin y desaceleracin y una funcin
constante para el medio. Cada parte de la funcin se elige cuidadosamente de modo tal que
los tramos de funciones sinodales y la funcin lineal tengan continuidad C 1 a lo largo de
toda la curva.
1

Distancia

0.5

0.5

Tiempo

Ejemplo de funcin ease-in/ease-out

Para evitar la posible degradacin en performance de las funciones trascendentales de


seno y coseno utilizadas en el mtodo de ease-in/ease-out visto anteriormente, se puede
utilizar un mtodo alternativo en el cual se define una velocidad mxima para el tramo
intermedio de la curva, y se busca una aceleracin constante para la parte creciente y una
desaceleracin constante para la parte decreciente. La curva de velocidad-tiempo producida
es la siguiente:

23

Tcnicas de Grficos por Computadora

V0

Al plantear las funcin de velocidad tiempo y resolver la integral obtenemos la curva


por tramos para una aceleracin y desaceleracin parablica.
La siguiente funcin de ease-in/ease-out parablica toma en cuenta la velocidad v0 y
las constantes t1 y t2 que determinan en qu momento deja de acelerar y comienza
desacelerar respectivamente.

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.

En la unidad 3 de Conceptos Bsicos de 3D vimos que las rotaciones eran un tipo de


transformacin donde se utilizaban matrices de rotacin homogneas de 4x4. Para
demostrar la particularidad de la orientacin que mencionbamos anteriormente
supongamos que deseramos animar la orientacin de un objeto usando dos keyframes en
los cuales en cada uno almacenamos una matriz de rotacin. Al momento de interpolar cada
uno de los nueve elementos de esta matriz podramos observar que esta no va a cumplir con
la propiedad que tienen todas las matrices de rotacin, que es la propiedad de
ortonormalidad donde los vectores que la forman son de longitud unitaria y son
perpendiculares entre ellos. Para dar un ejemplo prctico, al cambiar la orientacin de un
objeto 3D en respecto del eje Y desde -90 a 90, veremos que exactamente a la mitad de la
interpolacin, la matriz de rotacin quedara as:

25

Tcnicas de Grficos por Computadora

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

La transformacin que produce esta matriz no es de cuerpo rgido, lo que significa


que de aplicrselo a un objeto este no mantendra su forma. Esta particularidad en la
interpolacin de los elementos de la matriz no sucede con las transformaciones de
traslacin o escalado.
Es por esto que se puede decir que la interpolacin directa de los elementos de
matrices de transformacin que contienen rotaciones no produce resultados consistentes.
Durante las prximas secciones veremos cules son las formas alternativas para interpolar
efectivamente la orientacin as como tambin una forma ms intuitiva de representar las
orientaciones.

ngulos fijos y ngulos de Euler


La propiedad de orientacin la podemos representar mediante tres valores reales, que
representan los ngulos de rotacin respecto de cada uno de los ejes. Esto es debido a que la
mnima cantidad de valores que necesitamos para representar una rotacin en tres
dimensiones es justamente tres. De la misma forma que en la traslacin indicamos el
desplazamiento respecto de un marco de referencia, para la rotacin hacemos lo mismo
pero en lugar de indicar desplazamiento de posicin, indicamos un desplazamiento angular.
Cuando nos referimos a la representacin de ngulos fijos (Fixed angles), decimos
que la rotacin la expresamos mediante la secuencia de tres rotaciones respecto a los ejes
ortogonales del mundo, o ejes globales.
Por ejemplo podemos elegir una secuencia X Y Z donde primero se rota respecto
al eje X , despus en Y y luego en Z . Luego de cada secuencia de rotacin, los ejes de
coordenadas globales se mantienen fijos.
El orden en que se realizan las rotaciones es arbitrario y no hay una nica forma de
hacerlo. En aplicaciones de modelado 3D se suele utilizar la secuencia X Y Z , mientras
que en animacin y fsica se utiliza la secuencia Z X Y , inclusive se puede repetir uno de
los ejes como es el caso de la secuencia X Z X utilizado en el campo de la robtica.
25

Unidad 5 Animacin

26

Si por ejemplo tenemos tres valores de rotacin: (10,45,90) y utilizamos la


convencin X Y Z lo que vamos a hacer es primero rotar 10 grados respecto al eje X ,
luego 45 grados respecto al eje Y , y finalmente 90 grados respecto del eje Z .
Por conveniencia, en lugar de rotar cada uno de los vrtices por cada una de las
matrices, se las concatenan en una sola matriz de rotacin:
R = Rx R y Rz

Debemos recordar que es importante que siempre conservemos el orden de la


secuencia de rotaciones que vamos a elegir, ya que la concatenacin de matrices de
rotacin no es conmutativa.

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

Tcnicas de Grficos por Computadora

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).

Interpolar ngulos no es fcil:


Esto ocurre debido a que los componentes de las coordenadas cartesianas son
esencialmente independientes entre s, mientras que los ngulos de Euler y fijos no lo son.
Al interpolar los ngulos se los est tratando como independientes, sin embargo se ignora el
27

Unidad 5 Animacin

28

hecho de que la orientacin en realidad se implementa concatenando rotaciones. Al


interpolar ngulos de Euler o ngulos fijos, se puede producir un efecto indeseado llamado
gimbal lock, el cual se explicar a continuacin.

Gimbal Lock

Gimbal lock es un trmino que deriva de un problema mecnico de los soportes de


cardn que se utilizan en los girscopos presentes en los sistemas de navegacin de las
aeronaves. En general constan de tres marcos o anillos concntricos. Bajo ciertas rotaciones
los gimbals rotan hasta su lmite fsico perdiendo un grado de libertad y producindose el
gimbal lock. El equivalente matemtico de esto puede ocurrir cuando se utilizan tanto
ngulos de Euler como ngulos fijos cuyas rotaciones son concatenadas una detrs de la
otra en forma jerrquica.

29

Tcnicas de Grficos por Computadora

Para ilustrar un caso en el que se produce un gimbal lock, supongamos que


convenimos en utilizar una secuencia de transformacin X Y Z , y rotamos un modelo
90 sobre su eje Y , es decir (0, 90, 0). Al hacer esto el eje Z local se alinea con el eje X
global, por lo que la rotacin alrededor de Z es redundante. En trminos ms simples, un
gimbal lock ocurre cuando al menos uno de los tres ejes de rotacin se alinea con otro,
reduciendo entonces el nmero disponible de grados de libertad.
Podemos ver a continuacin cual es el efecto que produce el gimbal lock sobre las
matrices de rotacin. Si utilizamos la convencin Roll-Pitch-Yaw de DirectX que vimos
anteriormente, veremos que la matriz resultante de concatenar Z X Y es:
cos( z ) cos( y ) + sin( z ) sin( x) sin( y ) sin( z ) cos( x) cos( z ) sin( y ) + sin( z ) sin( x ) cos( y )
sin( z ) cos( y ) + cos( z ) sin( x ) sin( y ) cos( z ) cos( x ) sin( z ) sin( y ) + cos( z ) sin( x ) cos( y )
R ( x, y, z ) =

cos( x ) sin( y )
sin( x )
cos( x ) cos( y )

0
0
0

0
0
0

Ahora, si rotamos el eje X a 90, luego de aplicar propiedades trigonomtricas, la


matriz queda:
0 sin( z y )
cos( z y )
sin( z y ) 0 cos( z y )
R (90, y , z ) =

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

Como podemos ver, la matriz de rotacin ahora depende de un solo ngulo ( Z Y ) lo


que significa que los ngulos Z e Y estn asociados a un mismo grado de libertad. Luego

29

Unidad 5 Animacin

30

cuando tratemos de realizar una rotacin en Y le estaremos restando a la rotacin que


hayamos hecho respecto de X , debido a que la matriz depende de ( Z Y ) .
Sin importar el orden en que se especifiquen la secuencia de rotaciones, ya sea
X Y Z , Z X Y , Y Z X o cualquier otra, est demostrado que siempre existirn
casos en los cuales ocurre el fenmeno del gimbal lock.
En el contexto de la animacin por computadora, cuando se interpolan orientaciones
de un modelo y ocurre un gimbal lock se nota que el camino que toma el modelo desde la
orientacin origen hasta la orientacin destino no es la ms directa o ms corta en distancia.
Inclusive en algunos casos el camino puede ser errtico. En la siguiente figura se muestra
un ejemplo de esto.

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 :

Esta forma de representar la orientacin es til a la hora de realizar interpolaciones,


ya que dos orientaciones ( A1 ,1 ) y ( A2 , 2 ) pueden realizarse al interpolar los ejes de
rotacin y los ngulos de forma separada.
Para lograr interpolar los ejes, se debe encontrar un eje auxiliar de rotacin B , que es
perpendicular a los otros dos ejes A1 y A2 , y luego se realiza el producto cruz de estos dos
ejes:
B = A1 A2

El ngulo de rotacin respecto del nuevo eje auxiliar B se obtiene tomando la


inversa del coseno entre el producto cruz de los vectores normalizados de los ejes A1 y A2 :

31

Tcnicas de Grficos por Computadora

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

Se puede escribir tanto esta forma:

= [x y z s ]
qqqq

Como de esta otra:

= [s; v ].

El vector v es la parte imaginaria del cuaternin y s es su parte real.


Las operaciones de los cuaterniones son:
Adicin: q1 + q2 = [s1 + s2 ; v1 + v2 ]
Multiplicacin por un escalar a : aq = [as ; av]
Multiplicacin de cuaterniones: q1 q2 = [ s1 s 2 v1v2 ; s1v2 + s2 v1 + v1 v2 ]
Como se puede ver, el producto cruz hace que la multiplicacin sea asociativa pero
no conmutativa.

q = s2 + v2

Norma de un cuaternin:

1
Inversa de un cuaternin: q =

1
q

[s;v]

Rotacin con cuaterniones


El propsito de utilizar esta herramienta matemtica es para representar orientaciones
mediante aquellos cuaterniones unitarios, es decir aquellos que cumplen con la condicin:

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:

q = [cos( / 2) , sen( / 2)( x, y, z )]

33

Tcnicas de Grficos por Computadora

x
y
Representacin Cuaternin

Por ejemplo si queremos representar la rotacin de un ngulo respecto del eje X ,


el cuaternin queda formado de esta manera:

q = [cos( / 2) , sen( / 2)(1,0,0)] = [0, (1,0,0)]


De manera similar, si buscamos una rotacin de un ngulo respecto del eje Y ,
seguido de una rotacin de ngulo respecto del eje Z , solo tenemos que multiplicar
ambos cuaterniones entre s.

q1 q2 = [0, (0,1,0)] [0, (0,0,1)] = [0, (0,1,0) (0,0,1)]


= [0, (1,0,0)]
Como podemos ver, lo que finalmente resulta de esta concatenacin de rotaciones es
una nica rotacin de respecto del eje X . El producto cruz en la multiplicacin de
cuaterniones de hecho corrige el problema de la independencia de los ejes separados, el
cual era ignorado por la representacin de ngulos de Euler. Representando las
orientaciones mediante cuaterniones eliminamos de forma definitiva el problema del
Gimbal Lock.
Por otro lado observen que en los cuaterniones se almacena la orientacin una nica
vez en lugar de estar compuesto por tres rotaciones sucesivas.
Hasta este punto solo sabemos representar distintas orientaciones mediante
cuaterniones, sin embargo ahora debemos encontrar una forma de rotar cualquier punto
respecto de la nueva orientacin. Para rotar un punto p hacia una orientacin representada
por el cuaternin q , primero convertimos p a un cuaternin puro, es decir sin parte
escalar:
q p = [0, p ]
Luego realizamos la siguiente multiplicacin:

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

Para aprovechar las transformaciones matriciales, que en general estn


implementadas por hardware (ver Unidad 8 Adaptadores de Video), esta rotacin de
cuaterniones puede convertirse a la siguiente matriz de rotacin:

1 2( q y2 + q z2 ) 2( q x q y + q s q z ) 2(q x q z q s q y )

2(q x q y q s q z ) 1 2(q x2 + q z2 ) 2(q y q z + q s q x )


q
M =
2
2
2(q x q z + q s q y ) 2(q y q z q s q x ) 1 2( q x + 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

Tcnicas de Grficos por Computadora

Slerp

Lerp

Diferencia entre orientaciones interpoladas a


intervalos regulares por medio Lerp y Slerp

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

Tcnicas de Grficos por Computadora

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

Otros de los grandes problemas que surgen al utilizar per-vertex animation y


keyframes es cuando se realizan movimientos de rotacin. En casos donde por ejemplo se
desea hacer que un personaje realice un movimiento circular con un brazo, si nicamente
especificamos dos keyframes de inicio y fin, la interpolacin lineal nos dar el efecto de
que los vrtices del brazo se trasladan en lnea recta y no a lo largo de una curva tal como
se esperara. Es por eso que necesitaremos muchos ms que dos keyframes para lograr el
efecto deseado, y como decamos antes, elegir cuantos intervalos para minimizar este efecto
es un problema no tan sencillo de resolver.

Keyframe

Cuadro interpolado

Animacin per-vertex con dos keyframes nicamente

Cuadros superpuestos

39

Tcnicas de Grficos por Computadora

Keyframe

Cuadro interpolado

Cuadros superpuestos

Animacin per-vertex con cinco keyframes

Por otro lado la ventaja que nos da la animacin per-vertex es la de permitir el


cambio de formas o morph target . Si se da la condicin de correspondencia uno a uno
entre los vrtices de los dos objetos, y adems sus caras estn conformadas de la misma
manera, podemos interpolar los vrtices de cada uno de los objetos, logrando que una
forma se transforme continua y gradualmente en otra totalmente distinta.

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

Grados de libertad de las articulaciones

La animacin esqueltica es una tcnica de animacin implcita que toma como


paradigma a esta relacin jerrquica definida por el sistema seo. Aqu se hace una clara
distincin entre los huesos y la piel.
Los huesos son la estructura jerrquica en forma de rbol, que representa el esqueleto
del modelo a animar. Estos huesos son los elementos que guan el movimiento del modelo,
por lo que el proceso de animacin consiste nicamente en modificar la posicin de los
huesos que lo conforman. El esqueleto es una estructura abstracta, que por lo general no se
renderiza, aunque para propsitos de edicin o depuracin, se suelen dibujar los huesos
como lneas conectadas mediante pequeas esferas o cajas que representan las
articulaciones.
A decir verdad, son las articulaciones las que conforman el sistema esqueltico
porque si en cada articulacin se especifica su posicin y su orientacin, cuando unimos
dos articulaciones podemos calcular la longitud del hueso que las une. Trazando un
paralelo con las estructuras de datos como los rboles, las articulaciones seran los nodos y
los huesos las aristas.

41

Tcnicas de Grficos por Computadora

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

El esqueleto est representado de forma conceptual por una estructura de rbol y


como tal posee una nica raz, de donde se desprenden las dems articulaciones. Cualquier
operacin que se le realicemos a esta raz, afectar a todo el resto del esqueleto. Si
trasladamos la articulacin raz, trasladamos todos los huesos que dependen de este y por
ende todos los vrtices. Es por eso que la articulacin raz representa la transformacin
global del esqueleto. Si bien la articulacin raz puede estar en cualquier parte del
esqueleto, usualmente se ubica en la zona de la pelvis.

41

Unidad 5 Animacin

42

Cualquier articulacin, excepto la raz, tiene su articulacin padre y sus articulaciones


hijas. La posicin y orientacin de una articulacin esta especificada respecto a la posicin
de su articulacin padre. Esto hace que cada articulacin posea su propio marco de
referencia o sistema de coordenadas local. La nica excepcin es la articulacin raz la cual
utiliza el sistema de coordenadas de modelo.

y3

x3

Cada articulacin tiene su propia orientacin y su propia traslacin respecto de su


articulacin padre, por lo que esta transformacin se suele concatenar en una nica matriz
llamada Matriz Relativa. Esta matriz concentra tanto la translacin como rotacin de la
articulacin. A continuacin se debe calcular y almacenar la Matriz Absoluta, que es el
resultado de multiplicar la Matriz Relativa por la Matriz Absoluta de su articulacin padre.
La Matriz Absoluta de una articulacin es la que contiene todas las transformaciones que se
realizaron antes de sta en la jerarqua del esqueleto y adems su propia transformacin. En
el caso particular de la articulacin raz, la Matriz Relativa es la misma que la Matriz
Absoluta.

y1

x1

y0
x0

x
Jerarqua de espacios de coordenadas definido por
la estructura esqueltica

43

Tcnicas de Grficos por Computadora

Es justamente esta concatenacin de matrices en forma jerrquica la que le da a este


mtodo de animacin su gran flexibilidad que proviene del hecho que el animador no tiene
que concentrarse en animar vrtices, sino que solo se tiene que concentrarse en animar las
articulaciones el esqueleto que le son de inters.

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

Transformacin de espacio de articulacin a


espacio de mundo

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

Tcnicas de Grficos por Computadora

Bind pose de un modelo 3D

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

Los vrtices transformados v son los que se envan para renderizar.


La otra consideracin que hay que tener es de no sobrescribir los vrtices originales
de la malla con los de la transformacin esqueltica, de lo contrario si reutilizamos estos
vrtices ya transformados en las sucesivas transformaciones va a provocar que la malla
vaya deformndose a medida que avanzan los cuadros. Es por eso que se debe conservar
siempre una copia de los vrtices originales en posicin de Bind Pose y cada vez que se
anima se aplican las transformaciones de la animacin a los vrtices originales.
Finalmente, otro detalle a tener en cuenta es acerca de las normales de los vrtices.
Estas no tienen que ser transformadas de la misma manera que los vrtices, ya que las
normales no se trasladan de la misma forma que lo hacen los vrtices. Para transformar las
normales de los vrtices, lo que se debe hacer es aplicar la misma matriz de transformacin
que los vrtices pero solo aplicarles la parte de la rotacin, es decir, sin aplicarle ningn
tipo de traslacin.
En cuanto a los ndices de las caras y las coordenadas de textura, estas se mantienen
constantes sin importar la posicin que tome el esqueleto. Son los vrtices los que en
definitiva terminan cambiando de posicin, mientras que cantidad de vrtices,
conformacin de las caras y la forma en que la malla esta texturizada no cambia.

45

Unidad 5 Animacin

46

Resultado de convertir los vertices de model space a


bone space

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

La transformacin de cada vrtice queda entonces definida por la suma ponderada de


las N matrices de transformacin de las articulaciones que lo influyen.
N 1

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

Tcnicas de Grficos por Computadora

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.

Sin vertex blending

Utilizando vertex blending

Problemas generados al no utilizar vertex blending

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.

Animacin por keyframes en animacin esqueltica


En la animacin esqueltica, tambin se utilizan los keyframes pero en lugar de
almacenar copias de los vrtices transformados en cada cuadro tal como lo hace la
animacin per-vertex, en la animacin esqueltica cada keyframe solo contiene
transformaciones de las articulaciones.
Cada articulacin tiene su propio canal de animacin, donde en cada keyframe se
establecen tanto la orientacin en representacin de ngulos de Euler, como tambin su
traslacin x, y, z .
Al igual que la animacin explicita, en la implcita tambin se vale de la interpolacin
de keyframes para poder variar los avars de orientacin y posicin de manera ms suave y
continua.
Si queremos obtener la posicin de cada articulacin en el tiempo, solo debemos
interpolar linealmente las traslaciones indicadas los keyframes de inicio y de fin. Sin
embargo para la rotacin ya no podemos interpolar linealmente el desplazamiento angular
de cada uno de los componentes de los ngulos de Euler, ya que como vimos
anteriormente, esto suele traer aparejado el problema de gimbal lock.

47

Unidad 5 Animacin

48

La mejor manera de atacar esto es convirtiendo los ngulos de Euler en los


cuaterniones que vimos anteriormente, para luego realizar la interpolacin lineal esfrica
(SLERP). Los cuaterniones son la herramienta matemtica que nos permiten realizar los
cambios de orientacin de las articulaciones sin sufrir el efecto del gimbal lock. Adems,
aplicando esta tcnica, veremos que los huesos cambian su orientacin con una velocidad
continua y sin ninguna anomala.
Ventajas y desventajas de la animacin esqueltica y la animacin por vrtice
La animacin implcita tiene muchas ventajas comparada con la animacin explicita.
La memoria requerida en la animacin implcita se reduce fuertemente cuando en
cada keyframe se almacenan solo los cambios en traslacin y orientacin de los huesos..
Adems la animacin implcita, a travs de la cinemtica inversa se puede lograr una
mejor integracin con el ambiente, ya que la posicin de sus huesos puede reaccionar de
forma interactiva con otros objetos.
Otra de las ventajas es que una misma animacin esqueltica puede reutilizarse para
varias mallas. Si el esqueleto es el mismo, se puede realizar el proceso de Skinning a
distintas mallas, reutilizando los mismos keyframes.
Otra ventaja de la animacin explicita es que distintas animaciones pueden mezclarse
gradualmente entre si, en lo que se denomina Animation Blending. Se pueden lograr
transiciones ms suaves entre distintas animaciones, como por ejemplo si se est en estado
de reposo puede pasar a correr, sin producir saltos de animacin.
Por otro lado la desventaja principal de la animacin implcita es su complejidad de
implementacin, siendo mucho ms complejo desarrollarla frente a un sistema explcito. El
costo de procesamiento tambin se incrementa debido a las intensivas transformaciones
matriciales.
Finalmente, otra desventaja es que al ser una estructura jerrquica, puede resultar una
limitacin si el modelo requiere que se realice una metamorfosis en otro objeto que no
guarde la misma forma. Es por eso que se desalienta el uso de animacin esqueltica
cuando se quieren lograr efectos de Morph Target.

49

Tcnicas de Grficos por Computadora

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

También podría gustarte