23
Tema 5.- Animación por ordenador. Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 1/23 Tema 5.- Animación por ordenador.

Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Embed Size (px)

Citation preview

Page 1: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 1/23

Tema 5.- Animación por ordenador.

Page 2: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 2/23

Índice ÍNDICE........................................................................................................................................................................ 2

ANIMACIÓN POR ORDENADOR.......................................................................................................................... 3 5.1. INTRODUCCIÓN. ............................................................................................................................................. 3 5.2. CONCEPTOS BÁSICOS. .................................................................................................................................... 3 5.3. PRIMEROS HITOS EN LA HISTORIA DE LA ANIMACIÓN..................................................................................... 5 5.4. ANIMACIÓN TRADICIONAL APLICADA A LA ANIMACIÓN POR ORDENADOR..................................................... 5 5.5. ESPECIFICACIÓN DE ANIMACIONES ................................................................................................................ 6

5.5.1. Listas lineales........................................................................................................................................ 6 5.5.2. Lenguajes de programación de alto nivel ............................................................................................. 6 5.5.3. Lenguajes gráficos ................................................................................................................................ 7

5.6. MÉTODOS PARA CONTROLAR UNA ANIMACIÓN.............................................................................................. 7 5.6.1. Control explícitamente declarado......................................................................................................... 7 5.6.2. Control procedural ............................................................................................................................... 7 5.6.3. Control basado en restricciones ........................................................................................................... 7 5.6.4. Control por análisis de la acción en vivo.............................................................................................. 8 5.6.5. Control cinemático y dinámico ............................................................................................................. 8

5.7. TÉCNICAS DE ANIMACIÓN POR ORDENADOR .................................................................................................. 8 5.8. VISUALIZACIÓN DE ANIMACIÓN..................................................................................................................... 9 5.9. TRANSMISIÓN DE ANIMACIONES .................................................................................................................. 10 5.10. FORMATOS PARA DESCRIBIR ANIMACIONES ............................................................................................. 10

5.10.1. FLC/FLI (Animator Pro File Formats)............................................................................................... 10 5.10.2. GIF89a................................................................................................................................................ 15 5.10.3. Virtual Reality Modeling Language (VRML)...................................................................................... 15

5.11. HERRAMIENTAS PARA LA CREACIÓN DE ANIMACIONES............................................................................ 23 5.11.1. Ulead GIF Animator ........................................................................................................................... 23 5.11.2. Advanced GIF Animator ..................................................................................................................... 23

Page 3: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 3/23

Animación por ordenador.

5.1. Introducción. Los temas de animación y vídeo podemos considerarlos como una extensión lógica del tema de

los gráficos e imágenes estáticas, tal que ahora consideraremos un cierto número de estos/as entre los que existe una relación temporal.

Una secuencia de imágenes está caracterizada por su resolución, número de colores y el número

de imágenes que se muestra por unidad de tiempo (frame rate), de forma que la impresión obtenida sea la de que existe movimiento. Este último valor debe estar alrededor de las 25 imágenes por segundo para dar la sensación de movimiento continuo.

El término de animación generalmente se aplica a imágenes que están realizadas mediante

gráficos y generadas por ordenador.

5.2. Conceptos básicos.

El término animación viene del griego "anemos" = viento, aliento y del latín "animus" = dar vida. El concepto de animación se asocia habitualmente con el de movimiento. Podemos definir la animación por ordenador como la "generación, almacenamiento y presentación de imágenes que en sucesión rápida producen sensación de movimiento."

El fenómeno de la persistencia de la visión (de 100 a 20 mseg.) permite que se fundan las

imágenes y que se pueda generar la ilusión de movimiento. Los distintos fotogramas no deben ser muy diferentes entre sí, y la sensación de movimiento es más fluida a partir de una frecuencia de presentación de unos 20 Hz.

Para reproducir un movimiento real se toman muestras del mismo a intervalos de tiempo

regulares, y este muestreo puede sufrir el denominado “aliasing temporal”, relacionado con el aliasing geométrico. El aliasing temporal se llama también “efecto estroboscópico” porque un muestreo insuficiente hace que el movimiento se perciba como iluminado con una luz estroboscópica. Para evitarlo, se usa el difuminado de movimiento ("motion blur") que recoge en un solo fotograma varias posiciones del objeto en movimiento. Ejemplo del problema del aliasing temporal: si quisiéramos reproducir el movimiento de un segundero, ¿qué efecto lograríamos tomando muestras a intervalos de 3, 15, 30, 50, 60, 70 seg.?

Si se dispone de una serie de fotogramas de una animación, y suponiendo una frecuencia de

presentación constante, al aumentar el número de fotogramas el movimiento se hace más lento, y al disminuir el número de fotogramas, el movimiento se hace más rápido. Por ejemplo, eliminando una imagen de cada tres, la velocidad aumenta en un 50%.

La animación por ordenador permite representar modelos que evolucionan a lo largo del tiempo

(no solamente cambian su posición, sino quizá también su tamaño, color, iluminación, textura...). La animación por ordenador puede entenderse desde distintos puntos de vista:

• Arte. • Herramienta de visualización. • Técnica de efectos especiales. • Mejora con respecto a la imagen estática.

La animación en tiempo real va generando los fotogramas a medida que son necesarios. La

animación fotograma a fotograma calcula los fotogramas uno a uno y luego los muestra. A medida que los ordenadores se hacen más rápidos, los algoritmos de generación de imágenes se hacen más

Page 4: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 4/23

complejos, por lo que probablemente siempre existan las dos. Según cual sea el origen de los fotogramas con respecto al ordenador, se distinguen:

• Procedencia externa: fotogramas dibujados a mano, o generados a partir de la filmación de un movimiento real (técnica denominada rotoscopia).

• Algunos fotogramas son creados en el ordenador. El animador define manualmente los fotogramas principales de la animación (fotogramas clave, cotas o “keyframes”), y el ordenador calcula los fotogramas restantes mediante métodos de interpolación.

• Generación completa por el ordenador. Son animaciones procedurales o simulaciones en las que la dinámica del modelo se describe de forma algorítmica.

En un sistema de animación por ordenador, y siguiendo la analogía de un estudio

cinematográfico se distinguen: • Guión: descripción detallada de las escenas que componen la animación. • Decorado: elementos inmóviles de la escena. • Actores: elementos móviles definidos mediante unas variables que se modifican a lo

largo del tiempo siguiendo unas reglas determinadas. • Focos: fuentes de luz que iluminan la escena. Se pueden modificar tanto posición como

características a lo largo del tiempo. • Cámaras: se definen por su posición, su punto de interés y ángulo de visión.

Panorámicas, zooms, fundidos... Otros movimientos de cámara: ecuaciones matemáticas, seguimiento de un actor, técnicas interactivas. Se pueden usar múltiples cámaras virtuales.

• Coreografía: creación de los elementos, descripción de sus movimientos y sincronización de los mismos. Para todo ello es necesario utilizar un sistema de animación.

El proceso de obtención de animaciones lo podemos dividir en varias etapas, que describimos a continuación: Entrada: Antes de poder usar el ordenador, los dibujos han de ser digitalizados para crear frames, donde las entidades a animar se encuentren en posiciones extremas o características. Estas imágenes digitalizadas pueden ser producidas por el ordenador usando programas adecuados o creados al digitalizar fotos o dibujos. Los dibujos pueden requerir de un cuidadoso post-procesamiento para obtener una buena calidad. Composición: Los frames individuales de una animación completa son generados mediante el uso de técnicas de composición de imágenes par combinar elementos de fondos y de primeros planos. Usando frames de baja resolución de una animación en un gris, podemos generar un trailer usando la característica de pan-zoom disponible en algunos sistemas. Pan implica coger una parte de la imagen y zoom agrandarla hasta tamaño de pantalla completa. Este proceso se puede repetir para varios elementos contenidos en los frames de animación. Si este procedimiento se realiza a la suficiente velocidad obtenemos una sensación de continuidad. Puesto que cada imagen es reducida a un tamaño 1/25 o 1/36 respecto del original y entonces alargado a tamaño completo, podemos reducir de manera efectiva la resolución del monitor. Intermedio: La animación de movimiento de una posición a otra requiere la composición de frames con posiciones intermedias. En animación basada en ordenador, este proceso se realiza usando métodos de interpolación.

Page 5: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 5/23

5.3. Primeros hitos en la historia de la animación

• 1824 Peter Roget presenta el trabajo "The persistence of vision with regard to moving objects" en la British Royal Society.

• 1831 Los doctores Plateau y Ritter construyen el "fenaquistoscopio": ilusión de movimiento mediante dos discos giratorios.

• 1872 Eadweard Muybridge comienza su recopilación fotográfica sobre animales en movimiento.

• 1889 George Eastman comienza la fabricación de película fotográfica. • 1895 Los hermanos Louis y Auguste Lumière patentan un dispositivo llamado

cinematógrafo, capaz de proyectar imágenes en movimiento. • 1906 J. Stuart Blackton realiza la primera película de animación titulada "Humorous phases

of funny faces". • 1909 Winsor McCay realiza unos dibujos animados llamados "Gertie the Trained Dinosaur"

conteniendo unos 10000 dibujos. • 1913 Pat Sullivan crea una serie de dibujos animados titulada "Félix el Gato". • 1927 La Warner Brothers lanza "El cantante de Jazz", primera película sonora. • 1928 Walt Disney crea los primeros dibujos animados con sonido sincronizado: el ratón

Mickey. • 1964 Ken Knowlton de los laboratorios Bell, comienza a desarrollar técnicas informáticas

para generar animaciones.

5.4. Animación tradicional aplicada a la animación por ordenador La animación tradicional tiene muchos años de vida, y es un buen punto de partida para la

animación por ordenador. Los estudios de “dibujos animados” llevan desde principios de siglo desmenuzando el movimiento y estudiando cómo se puede reproducir con la máxima naturalidad. Es interesante conocer alguno de los principios básicos de la animación tradicional porque pueden facilitar la síntesis de movimiento por ordenador:

Anticipación. Se prepara la siguiente acción (e.g. antes de salir corriendo, postura forzada en sentido contrario). La anticipación permite:

Preparar los músculos para la acción. Preparar al espectador y captar la atención hacia la acción principal. Indicar la velocidad de la acción.

Para conseguir movimientos fluidos y sensación de elasticidad se usan

deformaciones de estiramiento y compresión. Los objetos se deforman en la dirección de desplazamiento para dar sensación de peso y gravedad. La deformación es perpendicular a la trayectoria en los impactos. La regla básica consiste en mantener el volumen de los objetos constante. Con estas deformaciones se evita el efecto estroboscópico de forma semejante al difuminado por movimiento.

Solapamiento y continuación de las acciones. El solapamiento consiste en

comenzar la siguiente acción antes de terminar la anterior (e.g. para abrir una puerta, uno se acerca y ya está estirando la mano antes de llegar). La continuación significa que los movimientos no se detienen bruscamente, sino que continúan más allá de su posición final (e.g. raquetazo, que continúa por inercia mucho después de haber dado a la bola).

Page 6: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 6/23

Por lo tanto, las fases en la animación de un movimiento son: 1) anticipación, 2) realización (con estiramientos, compresiones, solapamientos...) y 3) continuación.

• La asimetría consigue unos personajes más creíbles y realistas. • La exageración sirve para llamar la atención sobre los elementos más importantes. • Acción principal y acciones secundarias. La acción principal ha de ser única y clara:

debe pasar una sola cosa en cada momento. A nivel individual en cada imagen: con la silueta del personaje debería bastar para entender la acción. A nivel global (en toda una secuencia), el lenguaje cinematográfico ha de ser igualmente claro. Sin embargo, se usan acciones secundarias (e.g. anticipación, continuación) que complementan la acción principal sin competir con ella.

• La mayoría de los desplazamientos siguen trayectorias curvas.

En animación tradicional se usa a menudo la terminología cinematográfica para hacer referencia a las partes de una animación:

• Película (presentación, episodio): es toda la animación en su conjunto. En animación tradicional, suele haber una introducción que se repite en cada episodio.

• Escena: una cierta continuidad en cuanto a lugares, actores y acciones (e.g. una persecución en coche).

• Secuencia: sucesión ininterrumpida de planos que integran un tramo coherente y concreto del argumento.

• Plano: serie de fotogramas captados con la cámara sin dejar de funcionar. • Fotograma: cada una de las imágenes individuales.

5.5. Especificación de animaciones

Existen varios lenguajes y diferentes especificaciones formales para describir animaciones, que podemos dividir en tres categorías:

5.5.1. Listas lineales Cada evento se describe por el número de frame de inicio, el número de frame de fin y una acción (evento) a realizar. La acciones aceptan típicamente parámetros de entrada en forma de instrucción tipo:

42,53,B, ROTATE “PALM”, 1, 30 Esta instrucción representaría una animación entre las frames 42 y 53, el objeto PALM debería ser rotado 30 grados alrededor del eje 1. Una tabla determina la rotación en cada frame individual, permitiendo que las animaciones tengan un movimiento uniforme o acelerado.

5.5.2. Lenguajes de programación de alto nivel Otra forma de describir animaciones es embebiendo el control de la animación en un lenguaje de programación de alto nivel. Los valores de las variables en el lenguaje son usados entonces como parámetros de las rutinas de animación. ASAS, que se basa en una extensión a LISP, es un ejemplo de este tipo de lenguajes. Las primitivas del lenguaje incluyen vectores, colores, polígonos, superficies, grupos, puntos de vista, submundos y aspectos de iluminación. También incluye una amplia colección de transformaciones geométricas que operan sobre objetos. El siguiente ejemplo describe una secuencia animada donde un objeto llamado my-cube es rotado completamente mientras se hace un pan.

Page 7: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 7/23

(grasp my-cube) ; poner el cubo como objeto actual (cw 0.05); rotación en el sentido del reloj (grasp camera); poner la cámara como objeto actual (right panning-speed); mover hacia la derecha

5.5.3. Lenguajes gráficos Un problema con lenguajes de programación tradicionales textuales es que no se puede visualizar fácilmente las acciones gráficas al examinar los scripts. Los lenguajes de animación gráfica describen animaciones de manera más visual. Tales lenguajes se usan para nombrar y editar los cambios simultáneos en la animación y para ver los efectos creados. La descripción de acciones se realiza usando paradigmas visuales. Como ejemplos de estos lenguajes podemos destacar GENESYS o DIAL.

5.6. Métodos para controlar una animación

El control de la animación es independiente del lenguaje usado para describir animaciones. Veamos a continuación varias técnicas para controlar animaciones.

5.6.1. Control explícitamente declarado El control explícito es la forma más sencilla de control de animación. El animador proporciona una descripción de todos los eventos que podrían ocurrir en una animación. Esto puede ser realizado mediante la especificación de transformaciones simples, como pueden ser escalado, traslaciones y rotaciones, o especificando frames y métodos para ser interpolados. La interpolación puede ser especificada de manera explícita o bien mediante un sistema interactivo a través de manipulación directa con un ratón, joystick, etc.

5.6.2. Control procedural El control procedural se basa en la comunicación entre diferentes objetos, donde cada objeto adquiere conocimiento sobre propiedades estáticas y/o dinámicas de otros objetos. Esta información puede ser usada para verificar que los objetos se mueven de forma consistente. En particular, en los sistemas que representan procesos físicos, la posición de un objeto puede influir en los movimientos de otros objetos (p.ej., asegurando que las bolas no pueden sobrepasar los límites de las paredes). En sistemas basados en actores, los actores individuales pueden cambiar sus posiciones con otros para influir en su comportamiento.

5.6.3. Control basado en restricciones Aunque algunos objetos en el mundo real se muevan en línea recta, esto no ocurre siempre. Los movimientos de algunos objetos están determinados por otros objetos con los que interactúan. En este caso, es más sencillo especificar una secuencia de animación usando restricciones (generalmente determinadas por el entorno) que usar control explícito. Actualmente se está realizando mucho trabajo para soportar jerarquías de condiciones y determinación de movimiento. Muchos de estos trabajos permiten especificar restricciones que tienen en cuenta la dinámica de los cuerpos reales y las propiedades estructurales de los materiales.

Page 8: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 8/23

5.6.4. Control por análisis de la acción en vivo Examinando los movimientos de los objetos en el mundo real, podemos animar el mismo movimiento creando las correspondientes secuencias de objetos. La animación tradicional usa rotoscopia (ver 5.7). Primero se hace una película donde la gente o animales hacen el papel de las entidades de la animación. Luego, se procesa esa película, mejorando los fondos y cambiando los actores humanos por los equivalentes animados. Otra técnica es asignar indicadores a los puntos clave del cuerpo del actor humano. Las coordenadas de los puntos clave correspondientes en un modelo de animación pueden ser calculadas observando la posición de esos indicadores.

5.6.5. Control cinemático y dinámico

La animación tradicional a menudo rompe las leyes de la Naturaleza, y suele definir movimientos atractivos y con carácter, pero imposibles en la realidad. Para realizar animaciones realistas, hay que tener en cuenta esas leyes de la Naturaleza: animación basada en leyes físicas, que utiliza la cinemática y la dinámica. Muchos movimientos cotidianos son muy difíciles de reproducir. La cinemática estudia los movimientos con independencia de las fuerzas que los producen, y se usa en animación en dos variantes:

• Cinemática directa: a partir del grado de rotación de las articulaciones, se calcula la posición de la estructura articulada.

• Cinemática inversa: a partir de una posición deseada de la estructura articulada, se calcula cuál debe ser el grado de rotación de las articulaciones. Para este problema puede haber cero, una o varias soluciones. El movimiento basado en cinemática inversa recuerda al de las marionetas con hilos.

La dinámica estudia el movimiento teniendo en cuenta las fuerzas que lo producen. Se puede

obtener gran realismo, pero resulta difícil especificar la animación. Hay que tomar en consideración masas, aceleraciones, grados de libertad, restricciones al movimiento, movimientos prioritarios... La dinámica de los cuerpos rígidos articulados es más sencilla que la de los cuerpos deformables. Se distingue:

• Dinámica directa: a partir de las masas y fuerzas aplicadas, se calculan las aceleraciones. • Dinámica inversa: a partir de las masas y aceleraciones, se calculan las fuerzas que hay

que aplicar.

5.7. Técnicas de animación por ordenador En la animación tradicional, la combinación de un lapicero y el arte del dibujante, se convierten

en una herramienta de gran flexibilidad con la que se pueden lograr movimientos de notable realismo. El ordenador no es una herramienta tan flexible, pero tiene sus ventajas, y puede utilizarse para la creación de animaciones de muy diversas formas. A continuación se describen algunas de las técnicas más comunes.

• La rotoscopia consiste en capturar un movimiento real, y utilizar esa información para

mover un diseño generado por ordenador. La captura de los datos del movimiento real incluye:

o Simplificación del modelo: normalmente, los movimientos reales (por ejemplo, el lanzamiento de un disco en atletismo) son demasiado complejos para intentar capturarlos íntegramente. Hay que identificar las partes fundamentales del movimiento.

o Identificación y marcado de los puntos de referencia. Normalmente son las articulaciones, y se suelen marcar con círculos de tela de un color vivo, pelotas de ping-pong...

Page 9: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 9/23

o Realización de movimientos y recogida de datos (mediante múltiples cámaras de vídeo, traje de datos...)

o A continuación, y una vez digitalizada la información, se aplica ésta al modelo generado por ordenador para controlar su movimiento. Mediante esta técnica se consiguen movimientos de gran realismo, ya que al fin y al cabo se está copiando el movimiento real.

• La animación paso a paso consiste en definir manualmente cada uno de los fotogramas.

En algunos tipos de animación tradicional (animación de figuras de plastilina), se usa esta técnica. Utilizando un ordenador, se puede definir manualmente cada uno de los fotogramas de una animación, por ejemplo, dibujar cada uno de los bitmaps de una pequeña animación cíclica. Esta técnica es muy lenta, y solo se usa para pequeñas animaciones.

• La animación por cotas consiste en basar el movimiento en unos fotogramas

fundamentales (“keyframes”) y luego dejar que el sistema genere automáticamente los fotogramas intermedios mediante métodos de interpolación. Es importante que las cotas sean representativas del movimiento para que la interpolación tenga suficiente información. Esta técnica está basada en los métodos de trabajo de la animación tradicional en la que los animadores más expertos dibujan los momentos fundamentales del movimiento (cotas o keyframes) y los animadores principiantes dibujan los fotogramas intermedios (“inbetweens”).

• La animación procedural consiste en describir el movimiento de forma algorítmica. Hay

una serie de reglas que controlan cómo se van modificando los distintos parámetros (como la posición o la forma) a lo largo del tiempo. Para movimientos sencillos (un péndulo o una rueda que gira) es una buena solución, pero para movimientos más complejos (una persona caminando, o una moneda que cae al suelo), resulta difícil conseguir buenos resultados. Hay algunas técnicas con resultados interesantes, como los sistemas de partículas o la simulación de movimientos grupales.

5.8. Visualización de animación Para mostrar animaciones con sistemas de rastreo, los objetos animados (que pueden consistir de primitivas gráficas como líneas o polígonos) deben ser convertidos y almacenados como mapa de píxels. Un objeto rotatorio puede ser mostrado mediante sucesivas vistas desde posiciones diferentes. La conversión antes mencionada deber ser realizada al menos 10-20 veces por segundo para dar un efecto de suavidad razonable; una nueva imagen debe ser generada en como máximo 100 ms. La conversión actual de un objeto debería tomar una pequeña porción de ese tiempo. Por ejemplo, si tardamos 75 ms, sólo quedan 25 ms para borrar y redibujar el objeto, lo cual no es suficiente y genera un efecto indeseado. Para solucionar este problema se usa el “double buffering”. A modo de ejemplo consideraremos la visualización de una rotación. Asumiremos que las dos mitades del mapa de píxels son image0 e image1, y el proceso sería el siguiente: Cargar LookUp Table (LUT) para mostrar valores como color de fondo Convertir objeto en image0 Cargar LUT para mostrar image0

Repetir Convertir objeto en image1

Cargar LUT para mostrar image1

Rotar la descripción de la estructura de datos del objeto Convertir objeto en image0

Cargar LUT para mostrar image0

Rotar la descripción de la estructura de datos del objeto Hasta (condición de terminación)

Page 10: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 10/23

Si la rotación y la conversión tarda más de 100 ms, la animación es bastante lenta, pero la transición de una imagen a la siguiente parece instantánea. La carga del LUT suele tardar menos de 1ms.

5.9. Transmisión de animaciones Los objetos animados pueden ser representados simbólicamente usando objetos gráficos o imágenes de mapas de píxels. La transmisión de las animaciones puede seguir unos de los enfoques siguientes:

• Se transmite la representación simbólica de los objetos de la animación conjuntamente a las operaciones realizadas sobre el objeto. El receptor muestra la animación como describimos en el apartado anterior. Puesto que el tamaño en bytes de esta representación es menor que la representación del mapa de píxels, el tiempo de transmisión es corto pero el tiempo de visualización es mayor al tener que generar el receptor el mapa de píxels. En este enfoque, el ancho de banda requerido para transmitir una animación depende de: a) el tamaño de la estructura de representación simbólica usada para codificar el objeto animado; b) el tamaño de la estructura usada para codificar las operaciones; y c) el número de objetos animados y operadores enviados por segundo.

• Se transmiten los mapas de píxels de los objetos y son mostrados por el receptor. El tiempo de

transmisión es más largo, pero se acorta el tiempo de visualización. El ancho de banda necesario es proporcional al tamaño de una imagen en mapa de píxels y la tasa de repetición de imágenes. Estos valores son significativamente mayores que en el caso de una representación simbólica.

5.10. Formatos para describir animaciones 5.10.1. FLC/FLI (Animator Pro File Formats).

La idea básica del formato FLI es simple: "no hay que preocuparse de guardar las partes de un

frame que se mantienen del cuadro anterior". Con ello se ahorra espacio además de ganar en velocidad: es más rápido dejar de poner el valor de un pixel que cambiarlo de valor.

Este fichero está compuesto por una cabecera de 128 bytes seguida por una secuencia de frames.

El primer frame está comprimido utilizando un esquema run-length. Los siguientes se guardan como la diferencia con el frame anterior. Existe un frame extra al final que recoge la diferencia entre el último y el primer cuadro.

Organización de un fichero Las animaciones FLI son secuencias de frames. Cada frame contiene una porción de los datos de la

animación. La velocidad de la reproducción de la animación es controlada por la cantidad de retardo entre cada frame. Cada píxel en un frame contiene un valor de índice al mapa de color definido para ese frame. Los colores en el mapa pueden variar de frame a frame. Aunque el formato FLI está limitado a mostrar un máximo de 256 colores por frame, cada píxel tiene una profundidad de 24 bits, resultando en una paleta de más de 16 millones de colores. El primer frame de cada animación FLI está completamente comprimido usando el algoritmo de run-length visto en el tema anterior. La cabecera de un archivo FLI tiene 128 bytes. Los primeros nueve campos (22 bytes) son los mismos para ficheros FLI y FLC. Los últimos diez campos (106 bytes) contienen datos válidos en archivos FLC y valen 0x00 en archivos FLI. La cabecera FLI tiene el siguiente formato:

Page 11: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 11/23

typedef struct _FlicHeader { DWORD FileSize; /* tamaño del fichero */ WORD FileId; /* indicador de formato de archivo 0xAF11: FLI 0xAF12: FLC*/ WORD NumberOfFrames; /* número de frames, máximo 4000 */ WORD Width; /* ancho de la pantalla en píxels */ WORD Height; /* alto de la pantalla en píxels */ WORD PixelDepth; /* bits por pixel: valor 0x8 */ WORD Flags; /* valor 03h */ DWORD FrameDelay;

/* retardo entre frames; FLI: unidades de 1/70 segundos; FLC: 1/1000 segundos */ WORD Reserved1; /* valor 00h */ // Los siguientes valen 0x00 en un fichero FLI DWORD DateCreated; /* fecha/hora de creación, desde el 1 Enero 1970, formato MSDOS */ DWORD CreatorSN; /* número de serie del programa creador; si fue creado con la librería FlicLib valor 46h 4Ch 49h 42h

("FLIB") */ DWORD LastUpdated; /* fecha/hora de la última modificación, como para la cración */ DWORD UpdaterSN; /* número de serie del programa actualizador */ WORD XAspect; /* aspect ratio del eje X*/ WORD YAspect; /* aspect ratio del eje Y */ BYTE Reserved2[38]; /* valor 00h */ DWORD Frame1Offset; /* Offset del primer frame */ DWORD Frame2Offset; /* Offset del segundo frame */ BYTE Reserved3[40]; /* valor 00h */ } FLICHEADER; XAspect e YAspect contienen el aspect ratio usado para crear la animación. Para una resolución

320x200, el aspect ratio es 6:5 y estos campos valdrían 6 y 5 respectivamente. Por lo general, el aspect ratio suele ser 1:1. Frame1Offset y Frame2Offset contienen el desplazamiento de los dos primeros frames, respectivamente de la animación desde el principio del archivo. El primer desplazamiento se usa para identificar el comienzo de la animación, y el segundo se usa como punto de inicio cuando la animación hace un bucle y vuelve al comienzo de la animación. Los datos de un archivo FLI son encapsulados en bloques. Cada bloque es una colección de datos que empiezan con una cabecera seguida por los datos del bloque. Asimismo pueden contener (sub)bloques con el mismo formato. En caso de llegar a un bloque que no reconozca el lector, se omite. Cada bloque tiene una cabecera de 16 bytes con el siguiente formato:

typedef struct _ChunkHeader { DWORD ChunkSize; /* tamaño en bytes */ WORD ChunkType; /* identificador de tipo de bloque */ WORD NumberOfChunks; /* número de subbloques */ BYTE Reserved[8]; /* valor 00h */ } CHUNKHEADER; A continuación mostramos los posibles bloques que podemos encontrar:

Valor Nombre Descripción 04h COLOR_256 Paleta de 256 colores 07h DELTA_FLC Datos con compresión delta 0Bh COLOR_64 Paleta de 64 colores 0Ch DELTA_FLI Datos con compresión delta 0Dh BLACK Datos de frame en negro 0Fh BYTE_RUN Datos con compresión RLE 10h FLI_COPY Datos sin comprimir 12h PSTAMP Imagen con estampación

Page 12: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 12/23

La estructura interna básica de un archivo FLI es la siguiente:

CabeceraFLI Frame 1 (compresión RLE) (sub)bloque PSTAMP (opcional) (sub)bloque COLOR_256 (sub)bloque BYTE_RUN (sub)bloque COLOR_256 (sub)bloque BYTE_RUN Frame 2 (compresión Delta) (sub)bloque COLOR_256 (sub)bloque DELTA_FLC Frame 3 (sin comprimir) (sub)bloque COLOR_256 (sub)bloque FLI_COPY Frame 4 (Negro) (sub)bloque BLACK Frame n (compresión Delta) (sub)bloque COLOR_256 (sub)bloque DELTA_FLC Cada bloque contiene al menos dos (sub)bloques: un mapa de color y los datos para cada frame. Los

datos pueden ser almacenados en uno de los diferentes formatos comprimidos o no. El primer frame puede contener un bloque PSTAMP. A continuación explicamos la estructura de cada bloque.

DELTA_FLI Contiene un frame de datos comprimidos usando la codificación delta. Los datos contienen las

diferencias de valor de los píxels entre el frame actual y el anterior. Cada línea de rastreo del frame que contiene cambio de píxel es codificada en paquetes, y sólo hay que almacenar los valores de dichos cambios. El formato es el siguiente:

typedef struct _DeltaFliChunk { CHUNKHEADER Header; /* cabecera */ WORD LinesToSkip; /* número de líneas iniciales a saltar */ WORD NumberOfLines; /* número de líneas codificadas */ /* para cada línea */ struct _Line { BYTE NumberOfPackets; /* número de paquetes */ BYTE LineSkipCount; /* número de líneas a omitir */ struct _Packet /* Para cada paquete */ { BYTE SkipCount; /* número de pixels a saltar, indica el número del píxel actual */ BYTE PacketType; /* Codificación del paquete */ BYTE PixelData[]; /* datos de pixels del paquete */ } Packet[NumberOfPackets]; } Lines[NumberOfLines]; } DELTAFLICHUNK;

Page 13: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 13/23

DELTA_FLC Es una nueva versión del bloque DELTA_FLI y aparece en los archivos FLC. Presenta unas pequeñas

modificaciones respecto del bloque DELTA_FLI. Los valores de los píxels ocupan 16 bits en lugar de 8. La estructura es la siguiente:

typedef struct _DeltaFlcChunk { CHUNKHEADER Header; /* cabecera */ WORD NumberOfLines; /* número de líneas codificadas */ struct _Line /* Para cada línea */ { WORD PacketCount; /* conteo de paquetes, de saltos o valor del último byte */ struct _Packet /* Para cada paquete */ { BYTE SkipCount; /* número de pixels a saltar */ BYTE PacketType; /* tipo de codificación */ WORD PixelData[]; /* datos de píxels */ } Packet[NumberOfPackets]; } Lines[NumberOfLines]; } DELTAFLCCHUNK; Los dos bits más significativos de PacketCount determinan el significado del resto. Si valen 0, el

valor es el número de paquetes que hay en la línea y los datos de los paquetes aparecen a continuación. Si valen 10, a continuación existe un campo WORD que contiene el número de paquetes. Si valen 11, PacketCount contiene el salto a la próxima línea codificada.

BYTE_RUN Cuando un frame está codificado con run-length, los datos se almacenan en este tipo de bloque, que

tiene la siguiente estructura: typedef struct _ByteRunChunk { CHUNKHEADER Header; /* cabecera */ BYTE PixelData[]; /* datos de pixels codificados con RLE */ } BYTERUNCHUNK; FLI_COPY Contiene un frame de datos sin comprimir. Se usa cuando obtendríamos una compresión negativa

usando la codificación RLE o la delta. Tiene la siguiente estructura: typedef struct _CopyChunk { CHUNKHEADER Header; /* cabecera */ BYTE PixelData[]; /* valor de los píxels */ } COPYCHUNK; El número de píxels es igual al producto de los campos altura y anchura de la cabecea FLI.

Page 14: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 14/23

PSTAMP Este bloque puede ser una copia reducida de un frame de la animación, posiblemente el título, que

se suele usar como icono. El tamaño suele ser 100x63 píxels, que se ajustan según el aspect ratio del frame. Algunos sistemas lo omiten al no soportarlo. La estructura es la siguiente:

typedef struct _PstampChunk { DWORD ChunkSize; /* tamaño del bloque */ WORD ChunkType; /* identificador de tipo*/ WORD Height; /* altura en píxels */ WORD Width; /* anchura en píxels */ WORD ColorType; /* tipo de traducción de color 0x1 indica espacio de colores de 6 cubos*/ BYTERUNCHUNK PixelData; /* datos */ } PSTAMPCHUNK; Los posibles valores como identificador de tipo son: 0Fh Codificación run-length 10h Datos sin comprimir 12h Tabla de traducción de color de 6 cubos BLACK Representa un frame datos con todos los píxels en negro. El tipo de bloque es 0xd, y tiene la

siguiente estructura. COLOR_64 y COLOR_256 El formato FLI usa un mapa de colores para definer los colores de una animación. El antiguo .FLI

puede tener un máximo de 64 colores, mientras que un archivo .FLC puede llegar hasta 256, teniendo ambos bloques el mismo formato:

typedef struct _ColormapChunk { CHUNKHEADER Header; /* cabecera */ WORD NumberOfElements; /* número de elementos de color en el mapa */ struct _ColorElement /* Para cada elemento */ { BYTE SkipCount; /* Número de colores a saltar */ BYTE ColorCount; /* Número de colores */ struct _ColorComponent /* Para cada color */ { BYTE Red; /* rojo 0..63 para COLOR_64, 0..255 para COLOR_256 */ BYTE Green; /* verde */ BYTE Blue; /* azul */ } ColorComponents[ColorCount]; } ColorElements[NumberOfElements]; } COLORMAPCHUNK; Normalmente, una imagen solo contiene un mapa de colores. Sin embargo, un archivo FLI permite la

definición de un mapa de color para cada frame, lo cual requiere para cada frame 768 bytes, pero se pueden almacenar únicamente los colores que cambian de un frame a otro.

Page 15: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 15/23

5.10.2. GIF89a. De acuerdo con las especificaciones técnicas de 1987, un GIF puede tener más de una imagen por

fichero, permitiendo llevar a cabo una sucesión de imágenes y no una única imagen. A este formato se le añadieron una serie de especificaciones con lo que dio origen al denominado GIF89a, que guarda información acerca de cuestiones como:

• Cuantas centésimas de segundo hay que esperar antes de mostrar el siguiente fotograma. • Esperar por la entrada de usuario. • Especificar el color transparente. • Incluir comentarios no imprimibles. • Mostrar líneas de texto. • Indicar como deberá ser eliminado después de haber sido mostrado. • Extensiones de aplicaciones específicas codificadas dentro del fichero.

La estructura de este fichero ha sido tratada en el tema 4 (Imagen). Allí venía indicado como se temporizaban los diferentes fotogramas de una animación GIF.

5.10.3. Virtual Reality Modeling Language (VRML)

VRML (Virtual Reality Modeling Language) es un formato estándar de fichero (ISO/IEC 14772) que describe cómo se crean y exploran en la Web entornos tridimensionales interactivos. Permite construir entornos con más posibilidades que las 2 dimensiones que permite originalmente HTML (añade a las 2d profundidad y tiempo).

Historia La primera especificación de VRML 1.0 fue creada por Silicon Graphics Inc. y publicada en 1995,

basada en el formato de fichero de Open Inventor (una herramienta OO de SGI para desarrollo de gráficos 3d, basada en OpenGL e independiente de plataforma).

La segunda versión, VRML 2.0, ya con contribuciones de empresas adicionales, añadió

significativamente opciones de interacción.

En diciembre de 1997 VRML97 reemplazó a VRML 2.0 para convertirse en el estándar ISO/IEC 14772. Es casi idéntico a VRML 2.0, con muy pocas diferencias funcionales pero muchas de documentación.

Con esto se formó el Consorcio VRML (VRML Consortium), en el que están por ejemplo Microsoft,

Apple, Oracle o Sony, que es una corporación sin ánimo de lucro con la misión de promover el desarrollo de los estándares sucesivos y extender VRML como el estándar abierto para multimedia 3d y mundos virtuales compartidos en Internet.

En diciembre de 1998 este consorcio se rebautizó como Consorcio Web 3d (Web3D Consortium),

añadiendo a VRML otras tecnologías en el mundo de las 3d e Internet, y buscando la interoperatividad con otros estándares como DHTML, XML, DOM y MPEG-4.

Page 16: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 16/23

Características de VRML 1.0 La primera versión de VRML permite la creación de mundos virtuales con comportamiento

interactivo limitado. Pueden contener objetos que contengan hiperenlaces a otros mundos, documentos HTML u otros tipos MIME válidos, de modo que al seleccionar el usuario el objeto se lanza el enlace correspondiente.

Los requisitos de diseño de VRML son:

• Independencia de plataforma. • Extensibilidad. • Posibilidad de trabajo con bajo ancho de banda.

VRML, como HTML, es un lenguaje de descripción de escenas. El visualizador (integrado o no en

un navegador) analizará el fichero escrito en VRML y permitirá su visión y manejo tridimensional. Además VRML permite definir interacción con el usuario.

Los ficheros VRML son pequeños salvo para mundos muy complejos, y pueden partirse para

conseguir su carga progresiva, según el usuario vaya desplazándose por el mundo virtual. Combinadamente con esto, VRML también incluye la característica de niveles de detalle (LOD, levels of detail), para que el navegador pueda mostrar objetos aproximados rápidamente antes de cargar todo el detalle de los mismos. Estructura básica del lenguaje

VRML define un conjunto de objetos útiles para dibujar gráficos 3d. Estos objetos se llaman

nodos, y se organizan en estructuras jerárquicas llamadas grafos de escena. Estos grafos son más que un conjunto de nodos, definen además un orden para esos nodos, de modo que nodos que aparecen antes pueden afectar a otros que aparecen después. Por ejemplo, un nodo de rotación afectará a los nodos subsiguientes en el mundo. También se pueden aislar unas partes de otras (con nodos de separación).

Un nodo tiene las siguientes características: • Qué clase de objeto es (un cubo, una esfera, una transformación, etc.). • Los parámetros o campos que lo diferencian de otros (el radio de una esfera, la textura de

un mapa...). Cada nodo puede tener de 0 a n campos. • Un nombre que lo identifica (no es obligatorio, pero sí muy conveniente). • Nodos hijos. La jerarquía se implementa permitiendo que algunos tipos de nodos (que se

conocen como nodos de grupo) contengan otros. •

La sintaxis para representar los nodos es la siguiente:

DEF nombreobjeto tipoobjeto { campos hijos }

donde sólo el tipo de objeto y las llaves son obligatorios. Por ejemplo este mundo define una vista de un cono rojo y una esfera azul, iluminados por una luz direccional (cuboYesfera.wrl):

#VRML V1.0 ascii Separator { DirectionalLight { direction 0 0 -1 # Light shining from viewer into world } PerspectiveCamera { position -8.6 2.1 5.6 orientation -0.1352 -0.9831 -0.1233 1.1417 focalDistance 10.84 } Separator { # The red sphere Material { diffuseColor 1 0 0 # Red }

Page 17: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 17/23

Translation { translation 3 0 1 } Sphere { radius 2.3 } } Separator { # The blue cube Material { diffuseColor 0 0 1 # Blue } Transform { translation -2.4 .2 1 rotation 0 1 1 .9 } Cube {} } }

Consideraciones de sintaxis

Para su identificación, todo fichero VRML 1.0 debe empezar por los caracteres

#VRML V1.0 ascii

donde cualquier carácter posterior será ignorado.

De hecho el carácter '#' empieza un comentario en cualquier línea donde aparezca, hasta el final

de la línea correspondiente, excepto dentro de strings.

Los comentarios y los espacios (y tabuladores y retornos) no se consideran pero son útiles para la legibilidad del documento VRML. No obstante, servidores web de VRML pueden eliminar espacios y comentarios antes de transmitir el fichero por eficiencia de espacio. Para información persistente como copyrights o información del autor deben usarse nodos de Info, que no desaparecerán en ningún caso.

VRML es sensible a la capitalización de las letras.

Los nombres son identificadores alfanuméricos no empezados en dígito (no pueden contener

espacios, caracteres de control, comillas, contrabarra, llaves, corchetes, #, +, & o el punto).

Los nombres de campo empiezan con minúsculas, los tipos de nodo con mayúscula.

VRML usa un sistema de coordenadas cartesiano, diestro, tridimensional. Por defecto la proyección en 2d es en la dirección del eje Z positivo, con el X positivo a la derecha y el Y positivo arriba. Por supuesto pueden usarse transformaciones o cámaras para alterar esta proyección por defecto.

La unidad estándar de medida para longitudes, coordenadas y distancias es metros; para los

ángulos radianes.

Campos Hay dos clases de campos:

• Campos con un valor simple (un número, un vector, o una imagen), que empiezan por "SF".

• Campos con valores múltiples, y empiezan por "MF". Se indican entre corchetes y separados por comas.

Los campos de VRML 1.0 son los siguientes:

• SFBitMask: contiene una máscara de flags de bits, definiendo nombres para los flags, en

el formato ( flag1 | flag2 | ... ). Los paréntesis son opcionales si sólo se usa un flag en una máscara. 32 flags como máximo.

• SFBool: contiene un valor lógico (cierto o falso): 0, 1, TRUE o FALSE. • SFColor/MFColor: contienen uno o n (MF) colores RGB; cada color se escribe como una

terna de valores RGB en coma flotante, en el rango de 0.0 a 1.0

Page 18: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 18/23

• SFEnum contiene un valor de tipo enumerado. • SFFloat/MFFloat contienen uno o n números reales de precisión simple • SFImage contiene una imagen bidimensional sin comprimir, con los siguientes datos:

o anchura, altura y número de componentes. o anchura*altura valores hexadecimales, dependientes del número de

componentes: (1) intensidad en un byte (por ejemplo 0xFF blanco 0x00 negro), (2) intensidad y transparencia (p ej. 0xFF00 blanco opaco), (3) 3 bytes RGB (0xFF0000 es rojo), (4) RGB y transparencia (0x00FF0080 es verde semitransparente).

o Los píxels se indican de izquierda a derecha, de abajo hacia arriba. • SFLong/MFLong contienen números enteros de 32 bits. Se pueden indicar también en

hexadecimal (con prefijo 0x) y en octal (con prefijo 0). • SFMatrix contiene una matriz de transformación, escrita por filas, 16 num. reales

separados por espacios. • SFRotation contiene una rotación (4 números reales). • SFString/MFString son campos que contienen uno o n strings ASCII entre comillas

dobles. • SFVec2f/MFVec2f contienen vectores de dos dimensiones. • SFVec3f/MFVec3f vectores de 3 dimensiones.

Nodos

VRML define distintas clases de nodos, normalmente son formas (definen la geometría del

mundo, son los que realmente dibujan algo), propiedades (afectan a la manera en que se dibujan las formas) o grupos.

Los nodos pueden contener cero o más campos: cada tipo de nodo define el tipo, nombre y valor

por defecto para estos campos. El orden de aparición de los campos no es significativo.

Los siguientes nodos determinan formas geométricas: • AsciiText, Cone, Cube, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet, Sphere. • Las propiedades son:

o Propiedades de geometría: Coordinate3, FontStyle, Info, Material, MaterialBinding, Normal, NormalBinding, Texture2, Texture2Transform, TextureCoordinate2, ShapeHints

o Propiedades de matriz o transformaciones: MatrixTransform, Rotation, Scale, Transform, Translation

Los nodos de grupo:

• Separator, Switch, WWWAnchor, LOD Y finalmente una serie de nodos que no encajan en categorías específicas:

• OrthographicCamera, PerspectiveCamera • DirectionalLight, PointLight, SpotLight • WWWInline

Descripción de nodos AsciiText: strings ASCII.

string "" # MFString spacing 1 # SFFloat justification LEFT # SFEnum (LEFT, RIGHT, CENTER) width 0 # MFFloat

Cone parts ALL # SFBitMask (SIDES, BOTTOM, ALL) bottomRadius 1 # SFFloat height 2 # SFFloat

Coordinate3: define una serie de puntos que se usará por un posterior IndexedFaceSet, IndexedLineSet, o PointSet.

Page 19: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 19/23

point 0 0 0 # MFVec3f

Cube width 2 # SFFloat height 2 # SFFloat depth 2 # SFFloat

Cylinder parts ALL # SFBitMask (SIDES, TOP, BOTTOM, ALL) radius 1 # SFFloat height 2 # SFFloat

DirectionalLight define una fuente de luz direccional on TRUE # SFBool intensity 1 # SFFloat color 1 1 1 # SFColor direction 0 0 -1 # SFVec3f

FontStyle define el estilo de letra en curso size 10 # SFFloat family SERIF # SFEnum (SERIF, SANS, TYPEWRITER) style NONE # SFBitMask (NONE, BOLD, ITALIC)

IndexedFaceSet define una forma 3d indicada por sus polígonos, con -1 que separan las caras. coordIndex 0 # MFLong materialIndex -1 # MFLong normalIndex -1 # MFLong textureCoordIndex -1 # MFLong

IndexedLineSet define la forma sólo con polilíneas. coordIndex 0 # MFLong materialIndex -1 # MFLong normalIndex -1 # MFLong textureCoordIndex -1 # MFLong

Info es un nodo de información de la escena, que no tiene efecto en la visualización. string "<Undefined info>" # SFString

LOD es un nodo de grupo para permitir varios niveles de detalle de los objetos. range [ ] # MFFloat center 0 0 0 # SFVec3f

Material define propiedades de varios materiales de superficies subsiguientes. ambientColor 0.2 0.2 0.2 # MFColor diffuseColor 0.8 0.8 0.8 # MFColor specularColor 0 0 0 # MFColor emissiveColor 0 0 0 # MFColor shininess 0.2 # MFFloat transparency 0 # MFFloat

MaterialBinding indica cómo se asocia cada uno de los materiales a las distintas formas (por ejemplo, un cubo puede usar hasta 6 materiales diferentes, uno por cara).

value OVERALL # SFEnum (DEFAULT, OVERALL, PER_PART, PER_PART_INDEXED, PER_FACE, PER_FACE_INDEXED, PER_VERTEX, PER_VERTEX_INDEXED)

MatrixTransform define una transformación 3d con una matriz de 4x4 matrix 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 # SFMatrix

Normal define vectores 3d normales a superficies para usarse posteriormente en nodos de formas. vector [ ] # MFVec3f

NormalBinding indica cómo las normales se asocian con las formas. value DEFAULT # SFEnum

OrthographicCamera define una cámara sin perspectiva position 0 0 1 # SFVec3f orientation 0 0 1 0 # SFRotation focalDistance 5 # SFFloat height 2 # SFFloat

PerspectiveCamera define una cámara con perspectiva position 0 0 1 # SFVec3f orientation 0 0 1 0 # SFRotation focalDistance 5 # SFFloat heightAngle 0.785398 # SFFloat

PointLight es un punto fuente de luz (omnidireccional) on TRUE # SFBool intensity 1 # SFFloat

Page 20: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 20/23

color 1 1 1 # SFColor location 0 0 1 # SFVec3f

PointSet define una serie de puntos startIndex 0 # SFLong numPoints -1 # SFLong

Rotation define una rotación 3d rotation 0 0 1 0 # SFRotation

Scale determina un escalado en las tres dimensiones scaleFactor 1 1 1 # SFVec3f

Separator es un nodo de grupo que guarda el estado, permite la definición de otros nodos hijos, y restaura el estado posteriormente.

renderCulling AUTO # SFEnum (ON, OFF, AUTO) ShapeHints indica el tipo de IndexedFaceSets que se usa

vertexOrdering UNKNOWN_ORDERING # SFEnum (UNKNOWN_ORDERING, CLOCKWISE, COUNTERCLOCKWISE)

shapeType UNKNOWN_SHAPE_TYPE # SFEnum (UNKNOWN_SHAPE_TYPE, SOLID)

faceType CONVEX # SFEnum (UNKNOWN_FACE_TYPE, CONVEX)

creaseAngle 0.5 # SFFloat Sphere

radius 1 # SFFloat SpotLight define una fuente de luz cónica

on TRUE # SFBool intensity 1 # SFFloat color 1 1 1 # SFVec3f location 0 0 1 # SFVec3f direction 0 0 -1 # SFVec3f dropOffRate 0 # SFFloat cutOffAngle 0.785398 # SFFloat

Switch es un nodo de grupo que elige uno o ningún hijo whichChild -1 # SFLong

Texture2 es un nodo de propiedad que define un mapa de textura y sus parámetros filename "" # SFString image 0 0 0 # SFImage wrapS REPEAT # SFEnum (REPEAT, CLAMP) wrapT REPEAT # SFEnum (REPEAT, CLAMP)

Texture2Transform define una transformación 2d para texturas translation 0 0 # SFVec2f rotation 0 # SFFloat scaleFactor 1 1 # SFVec2f center 0 0 # SFVec2f

TextureCoordinate2 define coordenadas 2d para aplicar texturas point 0 0 # MFVec2f

Transform determina una transformación geométrica 3d translation 0 0 0 # SFVec3f rotation 0 0 1 0 # SFRotation scaleFactor 1 1 1 # SFVec3f scaleOrientation 0 0 1 0 # SFRotation center 0 0 0 # SFVec3f

Translation con un vector 3d translation 0 0 0 # SFVec3f

WWWAnchor permite definir enlaces a otros mundos o páginas web name "" # SFString description "" # SFString map NONE # SFEnum (NONE, POINT)

WWWInline permite incluir otros objetos VRML desde otras URL name "" # SFString bboxSize 0 0 0 # SFVec3f bboxCenter 0 0 0 # SFVec3f

Page 21: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 21/23

Instanciación Un nodo puede ser hijo de más de un grupo. A esto se le llama "instanciación" (instancing), usar

una ocurrencia de un nodo múltiples veces, con las palabras claves USE y DEF. DEF da un nombre a un nodo, y USE hace que ese nombre (nodo) se use otra vez. Este mecanismo sólo se puede usar en un mismo fichero.

Por ejemplo:

#VRML V1.0 ascii Separator { DEF Pepe Sphere { } Translation { translation 2 0 0 } Separator { DEF Pepe Sphere { radius .2 } } Translation { translation 2 0 0 } USE Pepe # aquí se usa el radio .2 (el último DEF) }

Extensibilidad

Las extensiones a VRML se incluyen con nodos auto-definidos, en los que se indica antes de sus

campos una descripción de cuáles son esos campos (nombre y tipo de valor), con la palabra fields y entre corchetes.

Por ejemplo si Cube no fuera parte del estándar, se indicaría como

Cube { fields [ SFFloat width, SFFloat height, SFFloat depth ] width 10 height 4 depth 3 }

Esta especificación se debe hacer en cada nodo no estándar, aunque ya haya aparecido antes.

En estas definiciones se pueden indicar relaciones "es-un" con la indicación Is-a, indicando con

ello que el nodo no estándar extiende a otro estándar, por ejemplo: ExtendedMaterial { fields [ MFString isA, MFFloat indexOfRefraction, MFColor diffuseColor, MFFloat transparency ] isA [ "Material" ] indexOfRefraction .34 diffuseColor .8 .54 1 }

Ejemplo

#VRML V1.0 ascii Separator { Separator { # Simple track-light geometry: Translation { translation 0 4 0 } Separator { Material { emissiveColor 0.1 0.3 0.3 } Cube { width 0.1 height 0.1 depth 4 } } Rotation { rotation 0 1 0 1.57079 } Separator { Material { emissiveColor 0.3 0.1 0.3 } Cylinder { radius 0.1 height .2 } } Rotation { rotation -1 0 0 1.57079 } Separator { Material { emissiveColor 0.3 0.3 0.1 } Rotation { rotation 1 0 0 1.57079 } Translation { translation 0 -.2 0 } Cone {

Page 22: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 22/23

height .4 bottomRadius .2 } Translation { translation 0 .4 0 } Cylinder { radius 0.02 height .4 } } } SpotLight { # Light from above location 0 4 0 direction 0 -1 0 intensity 0.9 cutOffAngle 0.7 } Separator { # Wall geometry; just three flat polygons Coordinate3 { point [ -2 0 -2, -2 0 2, 2 0 2, 2 0 -2, -2 4 -2, -2 4 2, 2 4 2, 2 4 -2] } IndexedFaceSet { coordIndex [ 0, 1, 2, 3, -1, 0, 4, 5, 1, -1, 0, 3, 7, 4, -1 ] } } WWWAnchor { # A hyper-linked sphere: name "http://www.foo.edu/CowProject/AboutCows.html" Separator { Translation { translation 0 1 0 } WWWInline { # Reference another object (URL) name "esfera.wrl" } } } }

Consideraciones de navegadores

La extensión para los ficheros VRML es .wrl (de mundo, world).

El tipo MIME de VRML es x-world/x-vrml

VRML 97 Además de las características de VRML 1.0, VRML 97 incluye:

• Objetos animados • Sensores • Guiones (scripts) para definir comportamientos • Interpoladores (color, posición, orientación, etc.) • Extrusiones • Colores y texturas de fondo • Sonido (wav y midi) • Texturas animadas • Gestión de eventos • Mecanismos de definición y reutilización de objetos y comportamientos

Además, VRML 97 es una especificación internacional aprobada por la ISO (VRML 1.0 no lo era).

La línea inicial de todo fichero VRML 97 debe ser:

#VRML V2.0 utf8

Page 23: Tema 5.- - Universidad de Murciadis.um.es/~jfernand/0405/tsm/tema5.pdf · de imágenes que se muestra por unidad de tiempo ... requerir de un cuidadoso post-procesamiento para

Tema 5.- Animación por ordenador.

Tecnologías para los Sistemas Multimedia – Curso 2004/05 - 23/23

5.11. Herramientas para la creación de animaciones

5.11.1. Ulead GIF Animator Con este programa es posible crear tanto animaciones básicas como efectos complejos de manera sencilla. Permite la creación de cada frame de la animación por separado. Tiene la posibilidad de añadir texto a la animación GIF en caso de haber olvidado añadirlo durante la creación de los frames. También es posible realizar el efecto cubo así como transiciones de color, crear imágenes con scroll y añadir efectos de vídeo F/X. Tendremos el control casi total sobre las animaciones que creemos. Además de efectos de texto y de transiciones, podremos establecer niveles de transparencia, retardos entre imágenes y si entrelazamos o no. Incluye un asistente para usuarios novatos. Además, incluye casi todos los filtros que posee Photoshop. Permite convertir películas FLI en animaciones. Puede coger cada frame de la película y hacer de ella un GIF par a que funcione en la web. Permite la previsualización de nuestras animaciones en un browser. Desde las propiedades de la animación podremos saber cuánto ocupa y cuánto tiempo tarda la animación, tanto en formato original como en formato optimizado.

5.11.2. Advanced GIF Animator Es una poderosa herramienta para crear animaciones GIF. Podemos crear imágenes, pancartas, botones e incluso películas, con la posibilidad de usar cualquier editor de gráficos para crear las imágenes de las animaciones. Permite crear imágenes GIF 89ª, gestionar frames GIF, crear bucles finitos e infinitos de animación, cambiar frecuencia de intercambio de frames, convertir formatos de archivos, etc.