Tuesday, May 22, 2007

Los key frames son los dibujos que son escenciales para indicar en donde empeiza y en donde termina una traslación . Se llaman frames o cuadros llave, debido a que su posición dentro del tiempo es medida respecto a los cuadros o frames que hay en un filme de pelicula. Una secuencia de frames define que movimientos el espectdor verá, mientras que la posición del keyframe en una película define el tiempo del movimeitn. Ahora bien, es claro que dos o tres keyframe a lo largo de un segundo no crearán la ilusión de movimiento, por lo que se deben llenar los demás cuadros conb dibujos intermedios.

Todas las películas con formato Mpeg están formadas por recuadros de 16 x 16. Para ahorrar espacio, los recuadros que son casi idénticos a aquellos recuadros del siguiente fotograma de la película son descartados. Esto produce una gran relación de compresión, ya que, en una escena en la que haya dos personas hablando, en la que no se mueven demasiado, los únicos recuadros que tendrán que cambiar serán aquellos en los que vemos sus bocas. Por esto, porque usamos recuadros de un fotograma en el siguiente, no tenemos una imagen completa. Por ejemplo, para tener el fotograma 5, carga los fotogramas 1, 2, 3 y 4 y ponlas juntas. Muchos archivos ASF y algunos de los primeros archivos codificados en DivX eran hechos así. El problema era que no se podía escoger el momento desde el que querías ver la película. No podías, por ejemplo, ver media película y volver mas tarde para terminarla. Tenias que empezar otra vez desde el principio. Esto se debe a que el avance rápido de cualquier reproductor de video tiene que examinar todos y cada uno de los fotogramas para poder reconstruir la película en el punto en el que lo dejaste.

Aquí es donde las Keyframes entran en juego. Una keyframe es introducida cada x segundos para que se pueda seguir el avance de la película. También proporciona una imagen perfecta en la que se puedan basar los medios fotogramas (delta frames). Los métodos de codificación en Mpeg dan el nombre de I-Frames o Intra-frames a estas keyframes. Los medios fotogramas vienen en dos tipos: B-frames o fotogramas en reversa y P-frames los fotogramas predichos. Puede sonar complicado, pero ambos están diseñados para almacenar la diferencia entre los fotogramas anterior y posterior a la keyframe como pequeños bloques.

La mayoría de los programas de compresión emplean un keyframe cada 5 o 10 segundos. Porque los keyframes, como imágenes completas, ocupan mucho mas espacio que los fotogramas parciales e incrementarán el espacio ocupado por el archivo de manera notable. Evidentemente, cuanto menos pongamos, mas compresión obtendremos. Si cortas un video en el espacio existente entre dos keyframes, el reproductor será incapaz de reconstruir los fotogramas de las películas hasta que no llegue al siguiente keyframe de la lista. Algunos programas “inteligentes” de Mpeg, son capaces de reconstruir las keyframes finales a partir de los trozos que le hayan llegado, evitando así el problema. De todas maneras, deberás estar pendiente en aquellos que no lo hagan.

VirtualDub puede, por norma general, arreglar una película sin keyframes si se utiliza en modo de reparación, pero una vez mas, no podrás cortar la película entre keyframes. Debes cortar en el punto donde se encuentre una de ellas.

Con esto en mente, y si usas los botones de keyframes de VirtualDub para avanzar y retroceder en la película que quieres cortar o unir, te será imposible cortar la película entre keyframes porque saltaras de una a otra =^)

DEsventajas keyFrames:ocupan mucho mas espacio que los fotogramas parciales e incrementarán el espacio ocupado por el archivo de manera notable.

Forward kinematic animationes un metodo muy usado en graficos 3d para aniamr modelos . funciona de la siguiente manera: Las posisicones de las partes de un modelo en particular en un determinado momento, son claculadas por la posición y la orientación del objeto, aunque también se ayuda de la información propircionada por las articulaciones (hombro,codo, muñeca, rodilla etc.) Ya que las articulaciones atan como se deberá mover el modelo. Lo delimitan, si el codo, por ejemplo esta en una posicion

Este metodo convendria cuando la persona , quiere que su animacion se mueva no siguiendo un patron definido, es decir hay un monito que se puede mover arriba abajo, bailar etc. puede moverse de muchos metodos, tonz es mejor programar como se debe mover, limitnado como se mueven sus extremidades, sin embargo, si se queire que sieeempre se baile simepre, pus mejor es osar los keyframes. te lo complicas sabroso, pero sabes que ya esta como tu deseas que se mueva

a cinemática se ocupa de la descripción del movimiento sin tener en cuenta sus causas.

El objetivo de la cinemática inversa consiste en encontrar el gesto que deben adoptar las diferentes articulaciones para que el final del sistema articulado llegue a una posición concreta.

Por ejemplo imaginemos que tenemos un robot con piernas, las piernas surgen de la cadera y a continuación estaría el fémur, la rodilla, la tibia y el pie (para simplificar acabaremos en el pie sin mas articulaciones).

En esta figura podemos observar el sistema que pretende imitar una pierna, como es lógico la posición de la cadera es fija o la podremos calcular en relación al cuerpo del robot o anclaje, pero ahora el problema que surge es, el posicionar el pie.

Basándonos en un sistema de coordenadas cartesianas podemos definir la posición que queremos que tome el pie, por ejemplo a 4cm en vertical y a 2,5cm desde la cadera, pero nos surgen los siguientes problemas;

- Que ángulo debe adoptar el fémur respecto a la cadera?

- Que ángulo debe adoptar la tibia respecto a la rodilla?

- Donde posicionamos la rodilla para que el pie tome la posición que queremos adoptar?

La cinemática inversa pretende solucionar el problema, veamos como podemos hacerlo.

Tomaremos la posición de la cadera como punto de origen de los vectores fémur y tibia, estos vectores tienen un radio o largo invariable, por ejemplo 10cm cada uno, con lo que el radio máximo que la pierna puede alcanzar será de 10cm de fémur + 10cm de tibia = 20cm. Para simplificar los cálculos es importante que el largo de fémur y tibia sea el mismo como veremos mas adelante.

Tomaremos el siguiente caso práctico, en el cual queremos posicionar el pie en un sistema cartesiano en la posición y=10 y x=5 con relación a la cadera.

Pensando un poco podemos observar que se forma un triángulo rectángulo entre los puntos de cadera y pie y disponemos del largo de los 2 catetos que son equivalentes a la posición X e Y en el sistema de representación cartesiano, así pues podemos calcular la hipotenusa de este triángulo como sigue.

Un cateto vale 10 y el otro 5, por lo tanto (10²+5²) = (100+25) = 125 ahora nos falta hacer la raiz cuadrada y quedaria Raíz(125) = 11,80 que seria la distancia entre los puntos de origen y destino(cadera a pie).

Ya sabemos la distancia y este dato es muy importante para el siguiente calculo, pero nos falta aun una cosa y es el ángulo que forma la hipotenusa que acabamos de calcular. Esto lo calcularemos con la siguiente formula:

ArcTan ( X / Y )

Y quedaría como sigue, (5 / 10) = 0,5 y ahora calculamos la ArcoTangente de 0,5 que nos dará como resultado 26,56º

Ya tenemos definido en coordenadas polares el punto donde queremos poner el pie del robot con respecto al punto de origen formado por la cadera que es de donde parte el fémur.

Ahora vamos a calcular que ángulo tendrán que tomar el fémur y la cadera para que el pie apunte justo a esa posición.

Sabemos que el fémur y la tibia tienen una longitud exactamente igual y esto como comentábamos al principio es de vital importancia para que el calculo sea simple ya que el punto donde convergen caerá siempre en la vertical de la mitad de la distancia entre cadera y pie (línea punteada en la siguiente figura), por lo tanto la rodilla siempre caerá en esa línea aunque no sabemos a que altura, y tampoco importa ya que solo nos interesa el ángulo de fémur y tibia.

Observamos que la línea roja y al línea punteada amarilla forman un ángulo de 90º y como en el caso anterior.. tendremos un triángulo rectángulo solo que ahora la hipotenusa es el propio fémur y contamos con la ventaja de saber su longitud, con lo que solo tendemos que calcular su ángulo, y tenemos que tener en cuenta que este ángulo que obtendremos será en relación a la línea entre cadera y pie por lo tanto para posicionar en el sistema cartesiano tendremos que sumarlos como veremos a continuación. Ahora vamos a calcular el ángulo del fémur de la siguiente manera.

La longitud del cateto opuesto a la rodilla (línea roja) es de 5,9cm (recordemos que es la mitad de la longitud entre cadera y pie) y la hipotenusa (fémur) mide exactamente 10cm con lo cual podemos calcular el seno de este triángulo rectángulo como sigue:

seno = cateto / hipotenusa

El cateto mide 5,9 y la hipotenusa 10 así que (5,9 / 10) = 0,59

Ahora solo tenemos que calcular el arcoseno de 0,59 para saber el ángulo que buscamos, esta función no se encuentra en muchos lenguajes de programación pero se puede calcular de la siguiente manera

ArcSen = Arctan(seno / Raíz(-seno * seno + 1))

Y obtenemos un ángulo de 36,16º correspondiente al seno 0,59

Este ángulo es el ángulo agudo del triángulo rectángulo así que hay que restarle 90º para obtener el ángulo que nos interesa, y esto sumado al ángulo formado por la línea entre cadera y pie nos da el ángulo total referenciado al sistema de coordenadas cartesiano o lo que es lo mismo referenciado al anclaje de la pierna o cuerpo del robot.

Angulo fémur = (90 - 36,16) + 26.56 = 80,4º

Así ya tenemos el fémur en su sitio y solo nos falta calcular el ángulo de la tibia, pero este calculo es mucho mas simple ya que tal ángulo es el doble del ángulo agudo calculado anteriormente con lo cuál:

Angulo Tibia = 36,16º x 2 =72,32º

Este ángulo es en relación al ángulo del fémur como puede observarse en la siguiente figura.

Llegados a este punto ya hemos conseguido el objetivo de saber que ángulo deben adoptar las extremidades de una supuesta pierna, para alcanzar un punto concreto.

Cuando lo uso????

Well, si andas haciendo un video juego y quieres que tu monito reaccione ante ciertos puntos es miy bueno usarlo, si no t importa como reaccione..nel pastel no lo uses.







Motion capture, Motion Tracking or Mocap, es una tecnica para digitalmente guardar movimientos, y es utilizado en los video juegos, deportes, applicaciones medicas.

Un usuario utiliza un par de marcadores en cada una de sus articulaciones para que asi se pueda identificar al movimiento, se idnetifica al movimeitno por las posiciones o los angulos que hay entre los marcadores. La computra capta y guarda estas posiciones, angulos, velocidades, accelraciones, impulsos, lo que da una representacion digital muy certera de como es el movimiento.


En los video juegos, esto puede reducir el costo de las animaciones, ya que no se necesita dibujar cada frame, motion capture ahorra tiempo y crea movimeitos mucho mas naturlaes que animacion creada manualemnte. Sin mebargo, esta limitada a animaciones que sean anatomicamente posibles. Asi por ejemplo, seria muy dificil animar al gracioso y guapo superman que todos amamos y conocemos.

In entertainment applications this can reduce the costs of animation which otherwise requires the animator to draw each frame, or with more sophisticated software, key frames which are interpolated by the software. Motion capture saves time and creates more natural movements than manual animation, but is limited to motions that are anatomically possible. Some applications might require additional impossible movements like animated super hero martial arts or stretching and squishing that are not possible with real actors.

In biomechanics, sports and training, real time data can provide the necessary information to diagnose problems or suggest ways to improve performance, requiring motion capture technology to capture motions up to 140 miles per hour for a golf swing.



Ahora bien...
unreal, implementan varios tipos de animaciones propias, pero de las que nos mandó investigar, utiliza inverse kinematics y motion capture.

Por otro lado,The Quake III engine utiliza para las animaciones los movimientos de tipo vertex. Con vertex , se logra guardar perfectamente la aniamacion. Se pueden tener muchos keyframes ascocidados a una animacion en un segundo, esto permite que haya mas complejidad, y las aniamciones sean menos pobres.

No comments: