Página 1 de 1

Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Vie Dic 21, 2012 8:38 pm
por Edgard
Saludos,
Hace unos días un amigo me pidió una animación de un mecanismo que sirviera leche de forma automatizada y usando, mayormente, pistones hidráulicos. El modelado y la animación del mecanismo fueron bastante simples, el problema llegó a la hora de los fluidos...
Intenté dos cosas:
Cambiar la velocidad de salida del fluido a cero mientras no quería que salga. No funcionó, el fluido seguía saliendo sólo que sin velocidad (un poco obvio...pero bueno).
Reducir el tamaño del emisor de fluido a cero. Aún así, caían gotas de leche cada cierto tiempo.
Tampoco pude simular que la taza se llenara con líquido \"real\", pues cuando hacía avanzar ésta, el líquido se salía sin importar el grosor que le pusiera a la taza.
¿Alguna idea de cómo resolver estos problemas?
Mecanismo para servir leche from Edgard on Vimeo.

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Dom Dic 23, 2012 5:37 pm
por frecio231
el dispensador puede tener el liquido, pones un objeto en medio de la tubería cuya distancia a esta sea muy cercana a 0 de la salida y se mueva (con las opciones creo que se puede mover sin ningún problema, te pondría una imagen o algo parecido pero no puedo, ya que mi teclado no funciona, uso el de windows.

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Lun Dic 24, 2012 12:43 am
por frecio231

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Lun Dic 24, 2012 7:45 pm
por Leandrosz
Yo te recomendaría que NO USES SIMULACIONES para lo que querés resolver. Hace trampa! Por ejemplo: hacé un chorro modelado, o usando partículas con metaballs. Podés agregar animación a la superficie de leche mientras llena la taza a mano o usando el dynamic paint que anda muy bien.

Si querés simular sí o sí, creo que podría ser buena idea simular por separado cada llenado de taza... eso al menos te da la ventaja de que no necesitás bakear todo para ver cómo te salió. Pero es probable que simular te vaya a volver loco...

Saludos!

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Mar Dic 25, 2012 9:32 pm
por Edgard
Lo del obstáculo no lo probé porque me pareció que el fluido iba a fallar si cruzaba objetos (para cerrarlo perfectamente), de todas maneras le daré una prueba luego.
Falsear la simulación era lo último que tenía en mente si al final era necesario el chorro (resultó ser no muy importante, los pistones eran lo principal) pero de todas formas quería usar el simulador, era más rápido y práctico en este caso.
Ahora que mencionas lo de simular cada taza por separado, hice el chorro de una, la primera salía bien, pero nunca encontré la forma de reproducir nuevamente la animación del objeto fluido. ¿Hay alguna forma de hacerlo? Probé con el editor de secuencias, NLA y todo eso, no encontré nada.
Gracias por las respuestas.

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Mié Dic 26, 2012 8:12 am
por Leandrosz
Hola! Estuve experimentando un poco y me encontré con que no puede haber más de un dominio por archivo .blend y esto es así, según la documentación, porque se pueden linkear distintas simulaciones a un mismo archivo.

Lo otro interesante es que se puede re-usar la simulación si se le asigna la misma cache a otro dominio (o sea, se puede simular un solo dominio, pero se peude tener más de una simulación en un .blend). Y lo otro que está bueno es que cada dominio puede tener u valor de offset distinto! (o sea, en qué cuadro arranca la simulación).

Las cosas que no pude resolver y terminé haciendo trampa:
-El inflow no permite decir cuándo empieza y cuándo termina, así que terminé usando una esfera con un volumen similar al del vaso a llenar (el líquido) y armé un embudo como obstáculo para que armara el \"chorro\".
-No logré hacer que el líquido se moviera al mover el vaso, así que emparenté la simulación a lo que movía los vasos (un empty)... esto le quita realismo a la simulación.
-Al reutilizar la animación y ponerle un offset negativo me encontré con que el dominio fuera de los tiempos de simulación (o sea para mi caso, antes del cuadro 0 y después del cuadro 250) es un cubo! Esto me obligó a hacer dos cosas:
1) Animar la \"entrada\" de la simulación: el dominio para el segundo vaso está fuera del encuadre y entra en el momento que se convierte en líquido.
2) Animar la \"salida\" de la simulaicón: o sea, sacar el dominio fuera de encuadre cuando paso del cuadro 250... esto me obliga a reemplazar la superficie llena del primer vaso! Esto se podría solucionar alargando el tiempo de la simulación hasta el final completo de la toma.

Yo elegí duplicar la animación en el mismo .blend, si bien la recomendación pareciera ser: simular aparte y después usar el baking... si hicieras esto podrías incluso simular cada llenado en un archivo distinto (en vez de re-usar el mismo llenado) y después montar todo en un .blend que represente la toma final.

No te subo el archivo porque con el baking pesa 30 Mb... si lo querés ver igual avisame y lo subo a mi dropbox o algo así.

Como sea, yo creo que simular nunca es la salida más facil y por lo general nos obliga a hacer trampa de una u otra forma. La única razón por la que simular vale la pena es por el grado de ralismo, porque te va a obligar a perder mucho tiempo haciendo pruebas y corrigiendo.

Saludos!

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Mié Dic 26, 2012 12:11 pm
por Edgard
¿Entonces dices que un mismo .blend puede tener varias simulaciones de fluidos?
También probé lo de mover la taza con el fluido dentro, y vi que tenía demasiados problemas (ni se acercaba a la realidad, y el fluido se iba consumiendo quién sabe por qué).
Lo que intentaba hacer era crear sólo el chorro; un INFLOW en la salida de la tubería y un OUTFLOW en la base de la taza y falsear el llenado como está en la animación. Logré hacer el primero chorro, y luego lo cortaba reduciendo el tamaño del inflow a 0, pero durante el tiempo que permanecía así parece que cargaba fluido, y en cuanto lo devolvía a su tamaño original...BUM, soltaba un hadouken que no podía absorber con el objeto del outflow.
Parece que esta vez no fue tan práctico el simulador, y me refería a eso por lo que no tenía que animar nada, sólo definía los parámetros y lo dejaba simulando mientras almorzaba.
Será un objeto animado el que usaré para simular el chorro entonces, subiré la animación cuando lo termine.

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Vie Dic 28, 2012 7:51 am
por Leandrosz
Hola!

Me explico mejor: cada líquido en blender es un dominio (que utiliza como parámetros objetos inflow, liquid, obstacles, etc), y si llegás a tener más de uno en el mismo archivo e intentas simular, blender te dice que solo puede haber 1 único dominio. Esto significa que no podés SIMULAR dos dominios en un mismo .blend, PERO lo que sí podés hacer es crear varias simulaciones por separado e ir guardándolas en distintas cache (cambiando el nombre de la carpeta donde van a guardarse las simulaciones). Fijate que si a un dominio, en la parte de caché ponés la carpeta de una simulación anterior, ese dominio inmediatamente se transforma a esa simulación! Y la cosa es que si bien no podés SIMULAR más de un DOMINIO por .blend, SÍ podés TENER más de un DOMINIO en el mismo archivo! Entonces creando cubos y definiendo sus caché a las capetas que quieras, podés tener varias simulaciones en el mismo archivo (y/o varias veces la misma simulación). Fijate que estas simulaciones no necesitan inflow, obstacles, outflows ni nada, porque la simulación ya está hecha! Además podés cambiarles el tiempo en el que empieza la simulación modificando el valor de offset en el dominio. La única precausión que tenés que tener es que todos los tiempos antes y después de las simulaciones el dominio va a volver a ser un cubo (esto está malísimo, a ver si alguien sabe si puede evitarse!).

De cualquier forma, estuve probando tu idea de escalar el inflow a cero para parar la entrada de líquido y funciona MUY BIEN!!! Re-armé mi archivo de prueba y el resultado quedó mucho mejor... los cambios que hice para evitar la genki-dama fueron:
1) Escalar el inflow lentamente (en 1 segundo o segundo y medio, o sea 24 a 36 cuadros), así no sale un chorraso y empieza de a poquito!
2) Como aunque esté en escala 0 se le escapan algunas gotas, primero hice que un outflow se pusiera en frente del inflow mientras los vasos se movían, pero no funcionó bien; así que se me ocurrió que podía sacar el inflow FUERA del dominio de simulación, y eso anduvo mucho mejor!
3) Al plano animado que sube \"simulando\" el llenado del vaso le hice muchas subdivisiones y le puse Dynamic Paint (Canvas, de tipo waves) y al chorro le puse que sea la brocha (Brush)... toqueteando un poco los valores logré que quede bastante decente.

De esa forma con una sola simulación logré llenar dos vasos... pero sigo pensando que es mejor simular solo un llenado y de ahí multiplicar la simulación con eso de crear varios dominios que comparten la misma cache.

Si te parece puedo armar una versión liviana del archivo (simulando en baja resolución) y te lo paso... no creo que pueda hacerlo antes del 1 de enero porque me estoy yendo de vacaciones y puede que cueste encontrar buena señal de internet... decime si te sirve!

Ah! Una cosa importante para la simulación que no tuve en cuenta en su momento y después hizo mucha diferencia es el uso correcto de la escala... normalmente me parece que el Blender (y la simulación) asume que 1 unidad de blender es equivalente a 1 metro... así que sin darme cuenta estaba trabajando con vasos de 2 metros de alto. Te aviso por las dudas. De cualquier manera encontré que en el dominio de simulación se puede poner el valor de escala (así te evitás tener que re-escalar toda la escena). Igual eso de la escala cambia mucho el efecto que obtenés al final (el chorro es más contínuo o más fragmentado en gotas, principalmente), por lo que lo podés usar para cambiar la forma en la que se ve el chorro de líquido.

Esto me está divirtiendo mucho... nunca me había puesto a jugar tanto con las simulaciones...

Saludos!

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Vie Dic 28, 2012 10:01 pm
por Leandrosz
Update: una cosa que me está molestando mucho es que cada vez que NO hay líquido simulado, el dominio se convierte en cubo, así que eso hace que llenar más de un vaso sea bastante molesto, ya que aparece el dominio como cubo en el tiempo en que no hay nuevo líquido... uff...

Igual se puede recurrir a mover el dominio fuera del cuadro en ese tiempo, pero estarí abueno que no hiciera falta que fuera así...

Saludos!

Re: Detener un fluido - Animación de mecanismo sirviendo leche

Publicado: Vie Dic 28, 2012 11:42 pm
por Leandrosz
Bueno, finalmente encontré un acceso a internet, así que te paso la prueba que hice:

[youtube=425,350]http://www.youtube.com/watch?v=bPr1XR6kw5E[/youtube]

El archivo con la simulación te lo dejo en mi googledrive (descomprimilo por ahí y hechale un ojo):

SimulacionVasos.zip

Saludos!