MESA REDONDA TIPS Y TRUCOS DE GRAFICACION


PROGRAMACION DE GRAFICOS Y JUEGOS BAJO WINDOWS. Alvaro Aarancibia

COMPOSICION CON "MATES" DE ACCION VIVA Y CGI Robert García

ALGUNOS PROBLEMAS DE LAS ANIMACIONES TIPO WARP Jose Fidel Kuri

PETRIFICADO: MORPH DE MATERIALES CON SECUENCIA TEMPORAL Gonzalo León

CREACION Y USO DE TEXTURAS PROCEDURALES DINAMICAS Arnulfo Zepeda


PROGRAMACIÓN DE GRAFICOS Y JUEGOS BAJO WINDOWS.

Alvaro Aarancibia

Nacido en Illapel, Chile, en 1962. LLega a México como apéndice familiar, bajo insistente invitación de la junta de gobie rno en 1974. Estudío dibujo y pintura por 5 años, física en la UNAM y se pervirtío a la computación como medio de vida. Se dedica a la programación desde 1984, y a la animación en 2D y 3D desde 1990; ha hecho algunas animaciones para cine y presentaciones, y ahora tiene un negocio propio y hace juegos para su venta masiva en los E.E.U.U.

La utilización de gráficos al programar en el ambiente Windows presenta ciertas peculiaridades, originadas en dos puntos importantes: -el redibujado en memoria -la paleta de Windows

En especial al utilizar 256 colores es importante poner atención a la paleta que se utilizará; recordemos que Windows reserva los primeros 20 colores para el sistema, dejando a nuestra disposición los 236 restantes. Los primeros 20 sí los podemos utilizar, más ha de quedar claro el riesgo de que se alteren los colores del sistema, como el fondo del desktop, barras de menu, botones y otros. Estos problemas desaparecen al utilizar video de 16 o 24 bits, pero la enorme mayoría de aplicaciones se diseñan pensando en el estandar de SVGA 640x480 con 256 colores.

Por otra parte, si queremos utilizar gráficos de cierto tamaño, aun en sistemas poderosos Windows parece lento al desplegarlos, situación que se agrava cuando utilizamos efectos como desvanecimiento o cortinas. Al programar en VB es posible simular la técnica conocida como double buffering, en la que un gráfico se genera en memoria antes de pasarlo a memoria de video para su presentación, con la posibilidad de diferentes operaciones logicas.

La librería diseñada para atraer programadores de juegos al ambiente Windows, WinG, provee un par de tecnicas encontradas hasta ahora solo en DOS, como el double buffering. La importancia de esta habilidad se entiende cuando observamos que juegos de acción, con gran demanda sobre el video, y hasta ahora solo posibles en DOS, pueden ser ya diseñados y utilizados bajo Windows con un desempeño similar al que tendría en DOS.


COMPOSICION CON "MATES" DE ACCION VIVA Y CGI

Roberto García

Imágica

Tel 011+(525)+5643388

Los recientes comerciales producidos para la campaña de lanzamiento de la "Naranjada Monterrea l", hacen patente lo que en otros tiempos fue una idea poco aceptada: en México, mediante un aprovechamiento creativo de las posibilidades que brindan los siste mas digitales de animación y manipulación de imágenes, se pueden lograr resultad os de gran calidad, que además de su buena y atractiva factura, compiten indiscu tiblemente con los estándares internacionales.

Para estos comerciales, era ne cesario que el producto estuviera bailando junto con un grupo de bailarines sobr e fondos diversos, con los cuales debían estar unificados totalmente. Así, se el igieron las tecnicas más adecuadas: animación tridimensional, bidimensional y co mpuestos de imágenes por multicapas.

La animación de la Naranjada bailando, t enía que estar llena de flexibilidad y dinamismo, así como ser sumamente ritmica y articulada, simulando los movimientos de un bailarin que se compasa sensualme nte al ritmo de un buen son. Frente a tales necesidades, se recurrío al "ALIAS P OWER ANIMATOR", versión 5.0. Modelando a base de "splines" el bote de naranjada y animandolo mediante un "skeleton" fue como se pudieron lograr las caracteristi cas que la animación exigía.

Posteriormente, había que comenzar el armado de los comerciales, y mientras se terminaban, simultaneamente en otra estación de t rabajo se iniciaba la captura de las imagenes filmadas. Transfiriendolas de Beta cam SP a un disco Accom, se revisaban y ordenaban las pistas dentro del Matador de Parallax. Este sistema de animación 2D y procesador de imagenes era el idoneo para llevar a cabo el compuesto final de mas de 10 capas o pistas.

Al mismo tiempo, en el Pandemonium de Xaos Tools se buscaba una llamativa y espectacular transición entre dos fondos, pista que posteriormente sería utilizada en uno de los comerciales.

Una vez que fondos, tomas antiguas en blanco y negro de un p artido de futbol y las escenas de los bailarines estuvieron ordenadas, se proced ío a la creación en animación 2D de los elementos y pistas restantes.

A este punto surgío una dificultad, las escenas en "Blue Screen" de los actores, no pef oraban limpiamente al componerlas con el fondo; aun a pesar de que la transferen cia de cine a video habian sido correctas. Ante esto, lo ideal era no utilizar l os mates del Rank, sino generarlos en el propio Matador. Esto se hizo mediante e l uso de un programa denominado Macro, donde cada cuadro de las imagenes era ana lizado para obtener su matte en base de "blue" y fondo.

Una de las ventajas q ue ofrece el Matador, es la posibilidad que da de animar y programar funciones d e pintura electrónica y composición, durante el tiempo que se desee. Igualmente importante resultó para el proyecto el poder que tiene automatizar procesos repe titivos. Esto se logró mediante el diseño de un pequeno programa de instrucciones llamado Macro. Estructurando y grabando un Macro que trate y ejecute las funciones que se le indique (pintura, coloreado, tipo de brocha, opacidad, sombreado, movimiento, composicion de pistas, etc.) sobre el primer cuadro, despues puede ser repetido todas las veces que se desee y, mientras se incrementa el número de cuadros, una secuencia entera puede ser totalmente, dandole el mismo tratamiento que al primer cuadro de una manera automatizada y con rapidez y precision.

Justamente, el Macro fue la herramienta mas utilizada y la forma en que se aplico, para el compuesto definitivo de los comerciales, en general, fue la siguiente:

Primero se usaron como base los cuadros de los fondos en movimiento. Posteriormente, se pusieron y recortaron con sus mattes las pistas de las escenas de los bailarines (filmados en Blue Screen); despues, al pegarlo sobre el fondo, se pusieron fuera de foco y simultaneamente se hizo que estos recortes (con transparencias y una funcion de Warp que los invertian y deformaba proyectaran su sombra sobre el piso, el cual tuvo que ser modelado en Alias como una pista mas; esto, para que los modelos parecieran realmente integrados a los fondos. Mas adelante, las animaciones 3D (Naranjada bailando y letreros) y sus mattes fueron colocadas en su posicion y tiempos establecidos, como varias pistas mas; proyectando por supuesto, las sombras que la imagen final requeria para tener mayor verosimilidad e integracion.

Finalmente se pudieron tener los compuestos definitivos de los comerciales y como era ..... y corregir los posibles defectos se rotoscopiaron y reticaron una a una las tomas; esto, para lograr los resultados mas optimos y de una limpieza absoluta.

Software utilizado: Alias Power Animator (Alias Research) Matador (Parallax) Hardware utilizado: Indigo 2 Extreme Iris Crimson (Silicon Graphics Inc) Accom WDS (Accom)


ALGUNOS PROBLEMAS DE LAS ANIMACIONES TIPO WARPP>Ing. Jose Fidel Kuri

Tel. 011+(525)+2724678

Ingeniero en Computación, Universidad Nacional Autonoma de Mexico, Director general de Comput er Graphics.

Fis. Giancarlo Bombardieri Ghezzi

Física, Facultad de Ciencias de la Universidad Nacional Autonoma de Mexico . Visualizacion y desarrollo en Computer Graphics.

Computer Graphics se dedica a la elaboración de animación por computadora y efectos especiales para televisión. Actualmente estan trabajando en un proyecto muy especial que involucra animación tridimensional, paint-box, fotomontaje, aplicación de wraps y morph's (metamorphosis).

Las animaciones tipo Warp consisten en deformar una imagen fija mediante puntos de control, para obtener animaciones. Si a esto se le agrega una disolvencia entre dos imagenes el resultado es una metamorfosis (morph). El warp simple puede tener muy interesantes aplicaciones, como sincronizacion de discurso (lip sync. Uno de los problemas mas comunes se deben a que cuando se realizan las deformaciones estas afectan no solo al objeto que nos interesa animar, sino que deforman por igual el fondo. La manera sencila de evitar esto se logra duplicando la curva de control muy cerca de la curva que se va a animar, de esta manera, una curva deforma la imagen y la otra fija el fondo. Como ejemplo de esto, presentamos algunas animaciones sencillas de movimiento de parpados, labios y orejas de animales.

Otro problema interesante del warp se da cuando se tienen objetos translucidos a los que se quiere aplicar una deformacion. Supongamos que tenemos una copa a traves de la cual se logra ver el fondo de la imagen. Si deformamos la copa para hacer que se incline, podemos evitar que el fondo por fuera de la copa se "jale", pero ¿que pasa con el fondo que se alcanza a ver en el interior de la copa?. Para evitar esta deformacion se realizan varios pasos. Primero se realiza el warp con la deformacion no deseada, pero se renderea un matte ubicando la informacion del alpha channel. Luego se toma la imagen fija original, se retoca para "borrar" la copa, y por ultimo se componen ambas imagenes: el warp y el fondo "sin copa" usando el matte como filtro. El resultado final es tal y como lo esparabamos.


PETRIFICADO: MORPH DE MATERIALES CON SECUENCIA TEMPORAL

D.I. Gonzalo Leon

gleon@spin.com.mx

Egresado de la Facultad de Arquitectura, Carrera de D iseño Industrial Universidad Nacional Autonoma de México. Actualmente trabaja re alizando proyectos de CAD y diseño industrial, para lo que usa herramientas de a nimación en 3D y de dibujo asistido por computadora.

El problema que se plantea para desarr ollar este ejercicio es el siguiente: Como mostrara un objeto que cambia de mate ria, p. ej. se convierte en piedra, y que tal cambio sea visible. Escogí represe ntar la secuencia en que el cambio de materiales se efect ua durante la animació n, para producir un efecto de "transformación visible", como una ola visible que recorre el objeto.

El ejemplo es un personaje, cuyas diversas partes del cue rpo tienen asignados materiales distintos, y que mueve sus brazos en 70 cuadros para dar la impresión de que está asustado por qeu se esta convirtiendo en piedra. El primer paso consistió en hacer un render de la animación tal cual, con todos sus materiales. En un segundo paso, se construyó un cubo cuyo material era mate, esto es, que se renderea como un recorte que deja ver el fondo. Este cubo cubria completamente el personaje original, y en los 70 cua dro se desplazaba verticalmente mostrando secuencialmente el personaje en su interior. El renderin del mate se hizo sin fondo y el personaje tenia asignado un material pétreo. Se ensamblaron las dos animaciones con un programa de animación 2d.

El efecto fue bastante bueno para los objetivos propuestos, pero algo artificial en cuanto a que el borde se veia demasiado recto. Para evitar esto, se repitió el render del mate, esta vez usando una esfera como objeto-cubierta, cuya intersección con el pe rsonaje dió una paariencia mucho más natural. La imagen que presento es un ensamble de cuatro momentos de esta transformación.

En un último intento por agregar más realismo a la escena, pretendí crear varios elementos de cubierta, siguiendo la geometria y hasta cierto punto animandolos. Este último intento demostró ser mucho más complicado, sobre todo en las extremidades que se movian sobre articulaciones de una manera bastante compleja. Otro problema detectado tiene que ver con la ilusión de petrificación: en el supuesto de que el personaje se convertía en piedra, es ilógico que se siga moviendo si ya se ha transformado. Pero este es un problema de animación, mas que de efectos de materiales, por lo que quedará para otros ejercicios.

El software usado para modelado fué: Terrain Maker para el fondo y el personaje pertenece a la libreria de Screiber Instruments "Imagine 3d people", La animación y el render se hicieron utilizando 3dstudio. El ensamble final se hizo en Animator Pro.


CREACION Y USO DE TEXTURAS PROCEDURALES DINAMICAS

Arnulfo Zepeda

zepeda@s iggraph.org

Estudió física en el CINVESTAV, y formó uno de los primero s departamentos de animación por computadora en México en los años 80. Actualmen te es consultor de imágenes y multimedia.

Surgío de un proyecto experimen tal la idea de tener en la escena un volcan en erupción. Además de otros efectos , como el humo que surge del volcan y partículas (o rocas) que son lanzadas en l a fase de erupción, surgío el problema de crear la lava que va bajando por las p endientes del volcan. La idea que se siguio fue usar un mapa de textura, el cual es mapeado de manera plana por encima del volcan paralelamente a su base, de ta l manera que necesitamos crear una sucesión de mapas de textura desde cuyo centr o fluya la "lava" y se vaya moviendo hacia la periferia del mapa de textura, lo cual de como resultado que parezca que la lava va fluyendo hacia abajo en el vol can ya rendereado.

Para modelar la "lava" haremos algunas suposiciones heuris ticas respecto a como esperamos que se comporte. Estas son:

1. La "lava fluye del centro del mapa de textura (desde el centro del volcan) hacia afuera (hacia los bordes del volcán bajando por su pendiente).

2. La "lava" pasa por punto s en los que ya había "lava" (formando arroyos de lava) y ocasionalmente se "sal e" a puntos antes no cubiertos (haciendo que la lava vaya cubriendo toda el area superior del volcan y fluye hacia abajo un cinturon de lava)

Las alternativa s para generar nuestro efecto son las siguientes:

A. Crear una textura a mano , cuadro por cuadro. Las ventajas de esta técnica es que se tiene el control abs oluto del efecto y se puede tener una mayot finura en los detalles. Las desventa jas residen en que toma mucho tiempo en hacerse manualmente, y ello impone un lí mite práctico a que tantos cuadros se pueden hacer.

B. Modelado físico de agu a "viscosa" Esto implica realizar una simulación de la realidad física de un flu ido, tomando en cuenta la viscosidad mayor que presenta la lava respecto al agua . Las ventajas de esto reside en que se obtiene un mayor realismo en el movimien to de la lava. Las desventajas residen en que es más díficil y tardado de progra mar, y es un proceso pesado computacionalmente hablando, lo que impide que se ha gan demasiadas pruebas para obtener el efecto artistico deseado.

C. Un modela do heuristico en base a texturas procedurales dinamicas Es un método rápido de p rogramar (tomo menos de medio día), es rápido en ejecución (una iteración de pru eba completa llevaba 10 minutos) y las reglas de como debe fluir la lava son con figurables a traves de reglas de comportamiento, por lo que se pueden hacer vari as pruebas antes de seleccionar la que da el efecto deseado. Se usa un modelo he uristico en el que se deja caer dez

La textura se genera a traves de un model o de probabilidades, al estilo de un automata celular, de la siguiente manera: < P>Al caer (o surgir!) una gota de lava en el centro del mapa de textura, el pixe l sobre el que cae puede estar ocupado o desocupado. Si se encuentra desocupado, la gota de "lava" se adhiere a ese pixel. Si esta ocupado, tiene que moverse (e n lugar de desplazar a la lava ya existente!) hasta encontrar un pixel al cual s e le pueda pegar. El moviemiento de dicha gota de lava esta regido por un modelo probabilistico en el cual la gota encuantra a que pixel vecino (de los ocho que tiene) se puede mover. Se asume un sistema coordenado para el mapa de textura e n el cual el centro corresponde a las coordenadas (0,0).

El comportamiento to tal de la lava se rige pues desde un solo método de un objeto de la clase lava, en un programa C++ :

// primer intento, probabilidad de ir a pixel vacio= 100, a pixel ocupado=10
// Resultado:da un area casi perfectamente circular!< BR>float lava::prob(int xcoor,int ycoor,int xdesp,int ydesp)
{
  if (empty (xcoor+xdesp,ycoor+ydesp))
       return random(100)/100.0 ;  else
        return random(10)/100.0  ; 
}

Aquí los párametros de entrada al m étodo "prob" son las coordenadas donde actualmente está la gota de lava, y el de splazamiento que está intentando realizar (que es -1,0,o +1 según el vecino al q ue se intenta mover) y el método empty me indica si ese pixel (vecino) ya esta o cupado o no, de lo cual depende la probabilidad que se calcula. Esta primera apr oximación indica que la probabilidad de moverse a un pixel desocupado es 10 vece s mayor (comparese el 100 contra el 10) que moverse a uno ya ocupado. El resulta do de este experimento nos da una figura casi perofectamente circular.

Nuestr o segundo intento radica en añadir a la probabilidad de moverse a un pixel desoc upado un factor que es el producto vectorial punto entre la coordenada y el desp lazamiento tentativo, lo cual es obviamente un máximo cuando el desplazamiento e s radial alejandose del centro de nuestro mapa de textura:

// lava que es  empujada radialmente fuera del centro
// Resultado:da más el efecto de una m ancha propagandose (como un lago de lava)
float lava::prob(int xcoor,int ycoo r,int xdesp,int ydesp)
{
  if (empty(xcoor+xdesp,ycoor+ydesp))
       r eturn random(100)/100.0 + (xcoor*xdesp+ycoor*ydesp)/20.0 ;  else
       retur n random(10)/100.0  ; 
}
(FLC=64KB)

Si n embargo, el resultado final es unicamente una mancha que se va recorriendo hac ia una de las esquinas, y no "lava". Nuestro tercer intento se basa en el analis is de que realmente lo que queremos, es que la lava forme arroyos, ello implica aumentar la probabilidad de que la lava se propage a puntos ya ocupados. En este espiritu, decidimos invertir la condicion y ver que pasaba:

// Inversion  de la condicion de probabilidad : sigue pixeles ocupados para formar arroyos
// Resultado: forma arroyos muy definidos y la lava no se deparrama(no forma la gos)!
float lava::prob(int xcoor,int ycoor,int xdesp,int ydesp)
{
  if (empty(xcoor+xdesp,ycoor+ydesp))
       return random(10)/100.0  ; else
       return random(100)/100.0 + (xcoor*xdesp+ycoor*ydesp)/20.0 ;  
}
(FLC=19KB)

El resultado fue la creacion de arroyos bien definidos sin ningun lago de lava! La respuesta es entonces intuituva : aumentar la probabilidad de formar lagos (ir hacia pixeles vaios) y bajar la probabilidad de formar arroyos (ir hacia pixeles ocupados):

// Formando arroyos, darle mas oportunidad(probabilidad) a los "lagos"
// Resultado: Tiene las caracteristicas deseadas, solo que necesita mas arroyos!
float lava::prob(int xcoor,int ycoor,int xdesp,int ydesp)
{
  if (empty(xcoor+xdesp,ycoor+ydesp))
       return random(70)/100.0  ; else
       return random(70)/100.0 + (xcoor*xdesp+ycoor*ydesp)/150.0 ;  
}
(FLC=62KB)

Esto casi dio el resultado requerido, pero se afinaron un poco mas los parametros para formar menos lagos , y resulto! :

// Afinacion de parametros finales : 
// Resultado : LAVA ADECUADA PARA NUESTROS FINES.
float lava::prob(int xcoor,int ycoor,int xdesp,int ydesp)
{
  if (empty(xcoor+xdesp,ycoor+ydesp))
       return random(40)/100.0  ; else
       return random(70)/100.0 + (xcoor*xdesp+ycoor*ydesp)/150.0 ;  
}
(FLC=68KB)

A partir de aquí, lo necesario es generar cada cuadro de la textura (dejando "caer" a cada cuadro 35 gotas de lava - un parámetro que tambien podemos variar), y mapeandola cuadro a cuadro a nuestro volcan! (FLC=560KB)


©Todos los derechos reservados, se prohibe la reproducción salvo permiso por escrito del autor.
©All rights reserved, any copying or duplication of this material is prohibited without written authorization by its author.


Regreso a Boletines
Regreso al Home Page del Grupo Profesional SIGGRAPH Ciudad de México