From BlenderWiki

Jump to: navigation, search
Manual de Usuario: Contenidos | Guía de Estilo | Versión de Blender 2.40

Simulación de Fluidos

El siguiente capítulo describe cómo animar líquidos usando el simulador de fluidos integrado en Blender a partir de la versión 2.40.

Ejemplo de animación de una presa rompiéndose.
Ejemplo de animación de una presa rompiéndose.

Visión general del flujo de trabajo

  • Al modelar una escena con Blender, ciertos objetos pueden ser marcados para participar en la simulación de fluidos, por ejemplo como fluido, o como obstáculo. La caja envolvente de otro objeto será usada para definir una región con forma de caja para simular el contenedor del fluido.
  • Los parámetros globales de la simulación tales como la viscosidad y gravedad pueden ser establecidos para este objeto dominio.
  • Utilizando el botón Bake (hornear), la geometría y los ajustes son exportados al simulador y la simulación de fluidos se lleva a cabo, generando una malla de superficie junto con una vista previa para cada fotograma de la animación, y guardándolos en disco.
  • La superficie del fluido apropiada para cada fotograma es cargada desde disco y mostrada o renderizada en Blender.

Las dos imágenes encima y debajo de este párrafo son un ejemplo de animaciones de fluidos creadas con el simulador El'Beem en Blender (y renderizadas usando Yafray).

Otra animación de ejemplo de una gota cayendo.
Otra animación de ejemplo de una gota cayendo.


Explicación de los Ajustes de GUI

Las opciones básicas (y necesarias frecuentemente) de simulación de fluidos.
Las opciones básicas (y necesarias frecuentemente) de simulación de fluidos.
Opciones avanzadas necesarias con menos frecuencia.
Opciones avanzadas necesarias con menos frecuencia.

Volcado de pantalla de la GUI actual para un objeto dominio. Después de habilitar la simulación de fluidos para un objeto, puede escogerse el tipo (dominio, fluido, obstáculo,...), dando más ajustes para cada tipo.

Después de habilitar la simulación de fluidos para un objeto malla, están disponibles los siguientes tipos de objeto:

  • Domain (dominio): la caja envolvente de este objeto será el receptáculo de la simulación. Note que la forma del objeto no importa (por lo que normalmente no habrá motivo para usar otra forma que una caja). Si necesita obstáculos u otros receptáculos que no sean una caja, debe insertar objetos obstáculo adicionales. Actualmente debería haber un único objeto dominio de simulación de fluidos. Las longitudes de los lados de la caja envolvente pueden ser diferentes.
    • Resolution (resolución): La resolución a la que se realiza la simulación de fluidos. Es probablemente el parámetro más importante de la simulación puesto que determina la cantidad de detalle en el fluido, el uso de disco y memoria, así como el tiempo de cálculo. Note que la cantidad de memoria necesaria se incrementa rápidamente: una resolución de 32 requiere 5 MB, 64 requiere 40 MB, mientras 128 ya necesita más de 250 MB. Actualmente la resolución está limitada a 200 (850 MB), para evitar el colapso de Blender debido al uso masivo de memoria. Si el dominio no es cúbico, la resolución se tomará para el lado más largo. Las resoluciones a lo largo de los otros lados serán reducidas de acuerdo a sus longitudes.
    • Preview-Res.: Es la resolución a la que se generarán las mallas de superficie de previsualización. Por lo tanto no influencia la simulación actual, e incluso si no se visualiza nada en la previsualización, podría haber una fina superficie de fluido que no puede ser resuelta en la previsualización.
    • Start time (tiempo de inicio): Momento en la simulación (en segundos) del primer fotograma de blender. Así, esta opción hace que la animación de Blender se inicie más tarde en la simulación.
    • End time (tiempo final): Momento en la simulación del último fotograma de blender.
    • Disp.-Qual.: Cómo mostrar una simulación horneada en la GUI Blender (primer menú desplegable) y en el render (segundo): geometría original, malla de previsualización o malla final. Cuando no se encuentran datos horneados, se mostrará la malla original por defecto.
    • Directorio Bake (hornear): Directorio y prefijo de archivo con los que almacenar las mallas de superficie horneadas. Es similar a los ajustes de salida de render, sólo que la selección de archivo es un poco especial: al seleccionar cualquiera de las superficies de malla previamente generadas (como untitled_OBcube_fluidsurface_final_0132.bobj.gz), el prefijo será establecido automáticamente (untitled_OBcube_ en este ejemplo). Así la simulación puede realizarse varias veces con ajustes distintos, y permite cambios rápidos entre los diferentes ajustes de los datos de superficie.
    • Botón Bake: Lleva a cabo la simulación de fluidos actual. La GUI de Blender se congelará y mostrará el fotograma simulado actualmente. Presionando ESCAPE se abortará la simulación. Seguidamente dos .bobj.gz aparecerán en el directorio seleccionado para cada fotograma.
    • Botón Advanced (avanzado): Haciendo clic en este botón se mostrarán más opciones avanzadas ,que normalmente no deben modificarse con mucha frecuencia.
    • Gravity vector (vector de gravedad): Fuerza y dirección de la aceleración de gravedad. Actualmente, la componente principal debería ir a lo largo del eje Z negativo [m/s^2]. Actualmente no debería ser cero (por lo menos un número pequeño).
    • Viscosity (viscosidad): Viscosidad, es decir "grosor" del fluido. Puede bien introducirse un valor directamente o usar uno de los preajustes. Para entrada manual, el valor se especifica en punto flotante, que debería ser alrededor de 1.0 con exponente negativo. Ello simplifica la entrada de números muy pequeños, puesto que la viscosidad de por ejemplo el agua, es alrededor de 10 a la menos seis.
    • Real-World size (tamaño mundo real): Tamaño del objeto dominio en el mundo real en metros. Si desea crear un vaso de agua, ello podría ser 0.2 metros, mientras que para una simple gota sería más adecuado un centímetro (así 0.01m). El tamaño establecido aquí es para el lado más largo de la caja dominio envolvente.
    • Gridlevel (nivel de rejilla): Cuántos niveles de rejilla adaptativa a ser usados durante la simulación. Estableciéndolo a -1 se realizará la selección automática.
    • Compressibillity (compresibilidad): Si tiene problemas con grandes regiones de fluido estático a alta resolución, reducir este número puede ayudar (note que ello aumentará el tiempo de cómputo).


  • Fluid (fluido): Todas las regiones de este objeto que están dentro de la caja dominio envolvente se usarán como fluido actual en la simulación. Si coloca más de un objeto Fluido dentro del Dominio, no deberían interseccionar. Asegúrese también de que las normales de superficie están apuntando hacia fuera. A diferencia de los objetos dominio, la geometría de la malla actual es usada para los objetos fluido.
    • Initial velocity (velocidad inicial): Velocidad del fluido al inicio de la simulación en metros por segundo.


  • Obstacle (obstáculo): Este objeto se usará como obstáculo en la simulación. Como con los objetos fluido, la geometría de malla actual es utilizada para los obstáculos.
    • Sin ajustes actualmente...


  • Inflow (flujo de entrada): Este objeto añadirá fluido a la simulación (piense en un grifo de agua).
    • Initial velocity (velocidad inicial): Velocidad del fluido que se crea dentro del objeto.


  • Outflow (flujo de salida): Cualquier fluido que entra en la región de este objeto será borrado (piense en un desagüe). Puede ser útil en combinación con el flujo de entrada para evitar el desbordamiento del objeto dominio.
    • Sin ajustes aquí...


Información general de fondo

La animación de fluidos puede tomar mucho tiempo. Cuanto mejor comprendamos cómo funciona, más fácil resultará estimar cómo serán los resultados. El algoritmo utilizado en este proyecto es el Lattice Boltzmann Method (LBM); hay otras aproximaciones, como los solucionadores Navier-Stokes (NS) y los métodos Smoothed Particle Hydrodynamics (SPH). Puede asumirse el LBM como a medio camino entre los otros dos. En general es muy duro para los ordenadores simular correctamente incluso un tanque de agua de 1 metro. Para simular una ola rompiendo contra una ciudad, se necesitaría probablemente uno de los superordenadores más caros que pudiéramos conseguir, y aún y así podría no funcionar adecuadamente (independientemente de cuál de los 3 algoritmos anteriores usáramos). Pero de forma similar a lo que los cineastas han estado haciendo en películas "analógicas" durante años, podemos pretender tener una ola en una ciudad construyendo un modelo menor, poner una ola pequeña en el modelo, y esperar que nadie se dé cuenta de la diferencia entre una ola de 100m y una de 1m.

Para el solucionador LBM, las siguientes cosas harán que la simulación sea más dura de calcular:

  • dominios largos
  • larga duración
  • viscosidades bajas
  • altas velocidades

La viscosidad del agua es ya realmente baja, por lo que especialmente para resoluciones bajas, la turbulencia del agua no puede ser capturada correctamente. Si nos fijamos atentamente, la mayoría de las simulaciones de fluidos en gráficos por ordenador no parecen agua real todavía hasta ahora.

En general, no confíe demasiado en los ajustes físicos (tal como tamaño físico del dominio, o duración de la animación en segundos). Más bien intente conseguir el movimiento general correcto con una resolución baja, y luego incremente la resolución tanto como sea posible o deseable.

Notas/FAQ/Problemas conocidos

  • No se sorprenda, pero se encontrará con un amplio abanico de archivos de malla (.bobj.gz) después de la simulación; básicamente 2 por fotograma. Contienen el resultado de la simulación, así que los necesitará. Actualmente estos archivos no serán borrados automáticamente, por lo que es una buena idea crear una carpeta dedicada a almacenar los resultados de la simulación. Hacer una simulación de fluidos es similar a hacer clic en el botón ANIM: debe preocuparse de organizar las mallas de superficie de fluido usted mismo. Si quiere dejar de utilizar la simulación de fluidos puede simplemente eliminar todos los archivos *fluid*.bobj.gz.
  • Si la configuración parece no funcionar asegúrese de que todas las normales son correctas (en modo edición, seleccione todo, y recalcule las normales a un tiempo).
  • Antes de ejecutar una simulación a alta resolución que puede tomar horas, repase la animación entera mediante ejecuciones a resoluciones más bajas.
  • En los objetos dominio sólo se utiliza la caja envolvente, pero los objetos fluido y obstáculo pueden ser mallas con geometrías complejas. Si son muy finos podrían no aparecer, sin embargo, si la resolución elegida es demasiado ruda para resolverlos (incrementarla podría solucionar el problema).
  • Actualmente hay un problema con la simulación con gravedad cero. Simplemente seleccione una unidad de gravedad muy pequeña hasta que se solucione.
  • Note que todos los parámetros animados u objetos no son tomados en consideración durante la simulación. Sólo se utiliza la configuración inicial en el fotograma 1, pero será posible en futuras versiones.
  • Blender se congela después de pulsar BAKE: presionando ESC vuelve a hacerlo funcionar, después de un lapso de tiempo (ello puede suceder si la resolución es muy grande y la memoria es intercambiada en disco, haciéndolo todo horriblemente lento. Reducir la resolución debería ayudar en este caso.
  • Blender se cuelga al presionar BAKE: esto puede pasar si la resolución es realmente alta y se usan más de 2GB, causando el colapso de Blender. Reducir la resolución debería ayudar también...
  • Las mallas deberían ser cerradas, así que si alguna parte de por ejemplo un fluido no son inicializadas como fluido en la simulación, asegúrese de que todas las partes de vértices conectados son mallas cerradas. Por desgracia, la malla Suzanne (mono) de Blender no es una malla cerrada (los ojos están separados).
  • Si experimenta problemas, o algo no funciona como usted piensa que debería funcionar, envíe el archivo .blend y una descripción del problema a nils arroba thuerey punto de.
Otro ejemplo de simulación de fluidos creado con Blender y Yafray
Otro ejemplo de simulación de fluidos creado con Blender y Yafray

Más Información

Reconocimientos

La integración del simulador de fluidos fue hecha como un proyecto Google Summer-of-Code.

Más información acerca del solucionador puede encontrarse en www.ntoken.com.

Estas animaciones fueron creadas con el solucionador antes de su integración en Blender:

Rejillas Adaptativas, Animaciones Interactivas.

Gracias a Chris Want por organizar los proyectos Blender-SoC, ¡y a Jonathan Merrit por mentorizarlo! Y por supuesto gracias a Google por iniciar todo esto...

Las actualizaciones del progreso del SoC se postearon aquí: SoC-Blenderfluid-Blog en PlanetSoC.

El solucionador en sí fue desarrollado con ayuda y supervisión de las siguientes personas: U. Ruede, T. Pohl, C. Koerner, M. Thies, M. Oechsner y T. Hofmann del Department of Computer Science 10 (System Simulation, LSS) en Erlangen, Alemania.

http://www10.informatik.uni-erlangen.de/~sinithue/img/lsslogo.png       http://www10.informatik.uni-erlangen.de/~sinithue/img/unierlangenlogo.png


Anterior: Manual.es/PartX/Soft Bodies Contenidos Siguiente: Manual.es/PartXI