Foto-blog de Antonio Castro

Retoque fotográfico con Gimp, fotos copyleyft, licencia Creative Commons (CC-BY), fotos gratis para uso comercial con reconocimiento.

Macrofotografía abeja

Etiqueta: animación

Povray conceptos básicos de animacion. (Tutorial)


Conceptos básicos sobre animación en Povray.

Siempre se ha dicho que una imagen vale más que mil palabras. Esto es especialmente cierto cuando intentamos explicar las funcionalidades de un trazador de rayos. En este caso en lugar de una imagen lo que se necesita es un vídeo porque vamos a explicar los conceptos básicos de la animación en Povray. (Nada mejor que una demo).

Las facilidades que ofrece Povray para animaciones sencillas se logran en base al uso de una variable ‘clock‘ que será entregada por Povray con un valor distinto para cada fotograma. Esta variable puede ser utilizada en el fuente pov que describe la escena haciendo que la escena vaya variando en función de ese valor.

Nosotros ya hemos explicado  Giros, traslaciones, y escalado de objetos en Povray.  Si definimos estas transformaciones en función de la variable clock, lograremos animación de esos objetos. También podemos mover las luces, o la cámara, etc.

La utilidad pov.py:

Povray en temas de animación básicamente se limita a generar la secuencia de imágenes y guardarlas en disco por separado, pero en este artículo ofreceremos una nueva versión de nuestra herramienta pov.py. (es una utilidad para el S.O. Linux) que sirve para automatizar el lanzamiento de Povray. Esto resulta muy cómodo cuando estamos haciendo pruebas. En el caso de animaciones no nos hemos contentado con esto. Esta nueva versión de la utilidad pov.py escrita en lenguaje Python y de libre descarga, será capaz de generar un vídeo en formato mp4 a 25 imágenes por segundo que podremos subir a Youtube.

También facilita una metodología de trabajo ya que hace copias de seguridad de los fuentes rotándolos, y ofrece un conjunto limitado de resoluciones, (las más usadas). Todo ello lo consigue generando un fichero *.ini que le dirá al trazador de rayos Povray como tiene que hacer el renderizado de la escena, así cómo y cuando lanzar comandos auxiliares para la generación del vídeo mp4. Unos comandos los lanzará al finalizar cada fotograma, y otro finalmente lo lanzará cuando se complete toda la generación de fotogramas generando el vídeo. La utilidad ov.py requiere:

  • S.O. Linux.
  • Intérprete de lenguaje Python
  • Utilidad   convert de la aplicación ImageMagick (para pasar a jpg)
  • Programa  ffmpeg (para generar el vídeo mp4)

Descarga gratuita del código fuente Python de la utilidad pov.py

Con unos mínimos conocimientos de programación no es difícil adaptarla al S.O. Windows.

Si usamos pov.y sin argumentos, obtendremos un mensaje de ayuda indicando como se usa.

Uso: /usr/local/bin/pov.py {Proyecto} {OutFiType} {size=0..12} {quality=1..11}
[ {Initial_Frame} {Final_Frame} {Initial_Clock} {Final_Clock}
[ {Subset_Start_Frame} {Subset_End_Frame} ] ]

1) Proyecto:
        Nombre_del_proyecto (Input_File_Name=Nombre_del_proyecto.pov)

2) OutFiType:
   t) tga,    c) tga (comprimido)
   n) png,    p) ppm

3) Size: 0..12
 0) 40x30     (4:3) =1.333 No backup       7) 640x480     (4:3)
 1) 80x60     (4:3) No backup              8 ) 800x600     (4:3)
 2) 100x75    (4:3)  No backup             9) 960x540    (16:9)
 3) 200x150   (4:3)                       10) 1024x768    (4:3)
 4) 266x200   (4:3)                       11) 1280x720   (16:9)
 5) 368x207  (16:9) =1.777                12) 1920x1080  (16:9)
 6) 400x300   (4:3)

4) Quality: 1..11

Explicemos a grandes rasgos como funciona la animación en Povray:

Por ejemplo, si tomamos el eje ‘Y’ como eje vertical y deseamos girar un objeto sobre si mismo sobre este eje. Podemos indicar rotate <0,clock,0> y si lanzamos Povray para que nos genere 360 fotogramas con valores de clock desde 1 a 360 obtendremos una secuencia completa de giro a intervalos de un grado. Si deseamos obtener una animación con una calidad HD para Youtube y nuestra escena la tenemos en un fichero llamado ‘ejemplo.pov’ usaríamos el comando:

pov.py ejemplo n 11 11 1 360 1 360

En el fotograma 1, clock valdría 1, y en el fotograma 360, clock valdría 360, pero eso es así porque las hemos hecho coincidir para hacerlo mas sencillo de entender. La duración de este vídeo con 360 fotogramas sería 360/25= 14.4 segundos.

Esto nos generaría igualmente un fichero ejemplo.ini (podemos mirarlo por curiosidad) una copia de seguridad del fuente en el directorio ‘bak’. Una serie 360 de imágenes en formato png (compresión sin pérdida de calidad) en el directorio out_pov. Una serie de otras 360 imágenes aún más comprimidas (perdiendo algo de calidad) en formato jpg en el directorio out_pov_jpg, y un vídeo de vídeo ‘ejemplo.mp4’ pero pasemos a ver un caso real.

Un ejemplo concreto pru_anim_rotate.pov:

Yo he usado una escena llena de estos objetos que ya conocemos llamados triconos. Creo que desde el punto de vista didáctico definen muy bien la posición de un objeto por su completa asimetría y son fáciles de seguir e identificar por sus combinaciones de colores. A cada objeto le he proporcionado un tipo de movimiento diferente.

El vídeo pru_anim_rotate.mp4 se obtuvo con el comando: pov.py pru_anim_rotate n 11 11  1 720 1 360

Este mp4 es el que hemos subido tal cual a Youtube y queda con una calidad HD muy aceptable. Este vídeo durará 28.8 segundos. El fichero *.ini obtenido ha sido este:

; ### (generado por pov.py)
Declare=AspectRatio=1.777778
Width=1280
Height=720
Quality=11
Library_Path=/usr/share/povray/include
Input_File_Name=/home/antonio/Escritorio/desktop_acastro/PROYECTOS/VIDEO/PRODUCCION_PROPIA/pru_anim_rotate/pru_anim_rotate.pov
Output_File_Type=n  ; (t,c,n,p)
Output_File_Name=pru_anim_rotate.png
; ###
Pre_Scene_Command='rm -fr out_pov out_pov_jpg; mkdir out_pov out_pov_jpg'
Post_Frame_Command='convert -quality 65 %o out_pov_jpg/%s.%n.jpg ; mv %o out_pov/%o'
Post_Scene_Command='ffmpeg -f image2 -i out_pov_jpg/%s.%%d.jpg -sameq %s.mp4'
Output_to_File=on
verbose=on
Bits_Per_Color=5 ; 5 bits (32768 colores); 8 bits (16 millones de colores)
; ### Animacion
Initial_Frame=1
Final_Frame=720
Initial_Clock=1
Final_Clock=360


Vemos que en este fichero se ha declarado una constante AspectRatio=1.7777777. Es para nuestra cámara en Povray y su valor es el resultado de dividir anchura por altura 1280/720.  (Estamos usando un formato 16/9)

(Si por ejemplo hubiéramos usado  pov.py pru_anim_rotate n 11 11  1 36 1 360 habría durado 1.44 segundos).

Para finalizar:

En los comentarios del fuente de ‘pov.py’ encontrarás información adicional y cualquier otra cosa que necesites saber tanto de ‘pov.py’, como de la escena animada, como de la generación del vídeo , me pones un comentario y con gusto te aclararé lo mejor que pueda tus dudas.


Giros, traslaciones, y escalado de objetos en Povray.

¿Cómo generar animaciones sencillas con Gimp?(Tutorial)

Pájaro volando.

Pájaro volando.

Vamos a explicar como generar animaciones sencillas usando Gimp. Para ello vamos a suponer que ya sabes manejar Gimp con capas, cosa que ya explicamos recientemente en ….

La imagen final será un gif animado. Nosotros hemos generado un gif en blanco y negro, pero no habría ninguna diferencia si lo generamos a todo color.

Lo único que hay que hacer es dibujar un fotograma distinto en cada capa y renombrarlas indicando el tiempo en milisegundos que de visualizarse cada fotograma. En nuestro caso todos los fotogramas tienen una duración de 80 milisegundos, pero esto puede modificarse a voluntad.

Si estuviéramos diseñando un banner, seguramente necesitaríamos usar tiempos muy diferentes para cada fotograma con el fin de combinar efectos de movimiento o destellos, con pausas para la lectura.

En nuestro caso hemos empezado haciendo un dibujo a mano alzada del cuerpo de un pájaro. Después de eso hemos accedido al diálogo de capas y hemos duplicado la capa varias veces hasta lograr un total de ocho capas. Desde el diálogo de capas tenemos que ir activando cada capa. Recordemos, eso se hace posando sobre la capa activa con el botón derecho del ratón y se desplegará un menú. Pincharemos en la opción de renombrar las capas, y al hacerlo indicaremos en el nombre la cantidad de milisegundos. Hay que indicarlo entre paréntesis seguido de ms. En nuestro caso los nombres serán: pajaro1 (80ms), pajaro2 (80ms), …, pajaro8 (80ms).


Escritorio de trabajo con Gimp para crear una animación.

Escritorio de trabajo con Gimp para crear una animación.

He situado una serie de ventanas y capturado un pantallazo de todo mi escritorio para ofrecer un aspecto global. Para ver los detalles tienes que ampliar la imagen pulsando en ella. En la imagen aparecen varios detalles a los cuales aún no hemos llegado, pero esto te ayudará a localizar algunas cosas.

Como es lógico para hacer una animación de este tipo, es conveniente partir de un boceto previo. Hay cuadernos de dibujo que enseñan la técnica del dibujo animado y yo me he basado en uno de ellos. Concretamente se titula «Cómo dibujar y pintar Dibujos Animados» por Treston J. Blair de la editorial «Walter Foster». Un autoeditor tiene que aprender un montón de cosas diferentes y el dibujo y la animación pueden ayudarnos.

Dibujo de un pájaro volando

Dibujo de un pájaro volando


Para el primer fotograma hay que dejar solo visible la capa en la que vamos a trabajar, y seleccionarla antes de trabajar en ella. Solo tuve que añadir las alas según indicaba el boceto y luego borrar los trazos sobrantes, ocultos por el ala, pintando en blanco sobre ellos.

Para los fotogramas siguientes lo que hice es hacer visible esa cada y la inmediatamente inferior. Además, la capa sobre la que trabajamos podemos hacerla un poco transparente mientras trabajamos en ella para tener de referencia un dibujo tenue de la imagen previa a modo de guía. Repetiremos el proceso con cada capa hasta terminar.

Una vez terminado y para reproducir la animación, seleccionamos en el menú la opción. Filtros -> Animación -> Reproducción. Aparecerá una ventana en la cual podremos pulsar play y variar la velocidad de reproducción.

En mi caso, descubrí que el cuerpo del pájaro quedaba clavado en el sitio mientras movía las alas, y eso resultaba poco natural, así que desplacé las capas verticalmente de forma escalonada y por grupos hasta lograr el efecto deseado. Cuando el pájaro sube las alas, el cuerpo desciende ligeramente, y cuando las baja, se impulsa para arriba y el cuerpo sube. Recuerda que para desplazar varias capas hay que ligar con la cadenita las capas que deseamos desplazar en bloque.

Puede servirte este ejemplo para continuar tu ejercitación en el uso de capas. Si lo prefieres haz su propio ejercicio más sencillo con solo unas pocas capas.

Creado con WordPress & Tema de Anders Norén