Música, ordenadores y Software Libre

Usuario de Debian GNU Linux desde 2000, abandoné definitivamente el uso de sistemas operativos no libres a finales de 2003.

Como estudio digital multipista uso en mis equipos Ardour para grabar, Sane para escanear mis fotos, negativos y diapos y Blender 3D para editar vídeo y trabajar con 3D.


Este blog está pensado para discutir cualquier cosa que se relacione con música, ordenadores y software libre.

domingo, 13 de enero de 2008

Fluidos en Blender: el cómo se hizo.

Dos meses es tiempo suficiente para investigar el funcionamiento del simulador de fluidos que incorpora Blender a partir de su versión 2.40.

Estas simulaciones están hechas en Blender 2.45, e inspiradas en la web de los autores originales, que escribieron el código y lo implementaron con el nombre de el' Beem dentro de la interfaz gráfica del programa para que la gente lo pudiera usar.

Características generales de las tres animaciones:

Todas tienen un filtro anti-aliasing mínimo (el 5) y están calculadas con el motor interno de render que trae la aplicación. Igualmente todas tienen la velocidad de la acción muy ralentizada, y aceleran algo hacia el final. Esto es para poder ver con detalle el movimiento, la inercia y la resolución del fluido. El hecho de que aceleren al final es para que dé tiempo a ver algo más de «cómo evolucionaría» o «qué haría» el líquido si el metraje continuase. Las animaciones no podían ser mucho más largas principalmente por limitaciones en el tiempo: las fases de simulación (creación de la malla de líquido para cada fotograma) y de render (cálculo del fotograma final con los materiales, colores y luces) son muy lentas y tardan mucho, sobre todo la segunda.

Los ficheros originales de las animaciones (.blend) están disponibles para su descarga.

Lo que sigue es una breve explicación sobre cómo se hizo cada una de las tres animaciones que se muestran a continuación.


vídeo .mp4
3,4 mb 480x270


Esta animación está hecha en menos de una semana, de hecho es la más sencilla de las tres bajo un punto de vista técnico. El flujo de trabajo básico lo explica el autor en inglés en la documentación del simulador, pero hay una versión traducida al castellano. Aparte de seguir la documentación, quise ralentizar un poco el movimento del fluido (como contaba antes), controlando la velocidad mediante la curva IPO Fac-Time.

En el fichero .blend que adjunto podréis ver los ajustes de densidad y resolución, así como los parámetros necesarios para configurar la simulación, y su velocidad.

Al cubo transparente que contiene el líquido se le aplicó una subdivisión en los vértices de nivel 2, para que las esquinas aparecieran redondeadas. Las luces (como no podía ser de otra manera) dieron toda la lata que quisieron, hasta que se dejaron convencer...;-)

La animación final, como antes apunté, se hizo con el motor interno del programa, sin las luces cáusticas que proporciona YafaRay, ya que el tiempo de render en una máquina doméstica como la mía se habría disparado hasta el infinito...



vídeo .mp4
4,4 mb 640x360

Aquí la configuración es distinta porque en lugar de ser una masa de líquido son dos: la que cae (que más que masa es una gota, no hay que exagerar) y la que está debajo; y ambas interactúan. Los parámetros cambian, pero no es algo que sea enrevesado. La simulación tomó más tiempo porque la resolución (o exactitud de la emulación del fluido) es mayor: hay que calcular más vértices. El truco residía en ampliarla, a costa de reducir la subdivisión de los vértices de las mallas de líquido por cada fotograma en la fase de render, que de no hacerlo dispararía la espera de manera exponencial. Subdividiendo los vértices de la malla, el tiempo de render por fotograma ¡se multiplicaba por diez!.

Aquí está el fichero .blend para descargar.



vídeo .mp4
1,7 mb 640x360

Esto también parecía interesante para probar el algoritmo del simulador. Es increíble la cantidad de opciones que presenta esta escena: se pueden ajustar el caudal de líquido, el tamaño de la copa, la velocidad de la acción (que el líquido se vierta más despacio o más deprisa) e incluso el impacto del rebote del agua sobre el cristal.

En esta escena hubo que diseñar elementos -la copa, con curvas NURBS- con los que el líquido debía colisionar, obstaculizándolo. Cuando los obstáculos no se configuraban correctamente, los resultados eran de risa: el agua se desbordaba de la copa aunque no llegara a tocarla y esas cosas...:-)

Aquí fueron especialmente difíciles las luces y los materiales; que dicho sea de paso, dieron muchos problemas porque el agua se mostraba opaca y más densa de lo que en realidad era. Hacía que pareciera engrudo o cemento, y los resultados de los primeros ensayos eran horrorosos. A base de experimentar con los parámetros de material, la transparencia, la reflexión y la refracción del líquido; y también con las luces (el tipo, la intensidad y la colocación), se logró dar con una combinación correcta.

Fichero .blend original.


Poco más. En breve subiré más cosas...si tengo tiempo. Saludos!!!

1 comentario:

Bry dijo...

Me parece un gran articulo, ya estoy visitando la explicación en castellano para comprender mejor esto.
Gracias!