En este tercer tutorial de la serie sobre fuego y humo con el simulador de fluidos en Blender 4.5, hablaremos de las formas en que Blender realiza y almacena el Bake, es decir, la simulación física del fuego y el humo.


Este tutorial forma parte de una miniserie de 10 episodios sobre los fundamentos del Fuego y el Humo en Blender 4.5. Para ver la lista completa de episodios, haz clic aquí.

El audio de este tutorial no está disponible en Español. A continuación, puedes ver el video con audio en Inglés y subtítulos en Español, Inglés y otros idiomas. Debajo del video encontrarás la transcripción traducida al Español.


Transcripción del video

¡Hola a todos! En este tercer tutorial de la serie sobre fuego y humo con el simulador de fluidos en Blender 4.5, hablaremos de las formas en que Blender realiza y almacena el Bake, es decir, la simulación física del fuego y el humo. Entre otras cosas, veremos cómo calcular la simulación una sola vez para un Domain para poder duplicarlo y colocarlo en otras partes de la escena sin recalcular las simulaciones para todas las copias. Por último, veremos cómo establecer un Offset para la reproducción de la simulación, de modo que la animación pueda comenzar con un fuego ya encendido en lugar de mostrar la ignición inicial de la llama.

La escena inicial de este tutorial consiste en un brasero que contiene algunos troncos de leña.

Estos son dos meshes separados, y los troncos forman un único mesh.

El brasero descansa sobre un Plane rectangular que sirve como suelo, y más adelante colocaremos otros braseros sobre él. El mundo virtual tiene una Strength de 0 y no hay fuentes de luz, por lo que en modo Rendered la escena aparece completamente negra.

De los episodios anteriores sabemos que, para que un objeto produzca llamas, debemos asignarle un componente Fluid de tipo Fire And Smoke Flow. Así que agrego un componente Physics Fluid a la leña, estableciendo Inflow como comportamiento del componente, lo que significa que la madera generará llamas en cada frame.

Luego creo un Cube, le asigno un componente Flow de tipo Domain y hago que encierre inicialmente toda la escena. De inmediato notamos un problema: la resolución predeterminada es demasiado baja, lo que produce Voxels demasiado grandes y hace que las llamas sean excesivamente grandes en comparación con los objetos que las emiten.

Aumentar la resolución a 64 no mejora mucho la situación, y además la simulación comienza a tardar más tiempo. Ni siquiera quiero intentar aumentar más la resolución, porque está claro que este no es el enfoque correcto.

La solución más evidente es redimensionar el Domain para que solo encierre el brasero y un poco de espacio por encima para que las llamas y el humo puedan desarrollarse. Ahora la resolución funciona incluso demasiado bien. De hecho, quizá sea excesiva, así que podemos bajarla nuevamente a 32 y seguir obteniendo llamas bien definidas. El problema, más bien, es que la madera está produciendo demasiado fuego.

Para reducir la cantidad de fuego generado, podemos ajustar el parámetro Fuel del objeto Inflow. Intuitivamente, cuanto mayor sea el valor de Fuel, más combustible se quemará en cada frame. Por lo tanto, la solución es disminuir este valor hasta que las llamas alcancen un tamaño adecuado.

Como se mencionó en los episodios anteriores, los datos relacionados con el Baking, es decir, el cálculo de la simulación física, se almacenan en una carpeta dedicada cuya ruta se especifica en la sección Cache del objeto Domain. Antes de crear el Domain, guardé el archivo en el disco, por lo que la carpeta de caché se encuentra en el mismo directorio que el archivo del proyecto de Blender.

En la sección Cache del Domain podemos establecer el rango de frames sobre el cual se calculará la simulación del Domain. Este rango no necesariamente debe coincidir con el rango de animación de la escena. Esto puede ser útil para hacer el Bake de un número limitado de frames solo para tener una idea de cómo se ve el fuego antes de ejecutar el Bake completo. Otro caso de uso es cuando los objetos Fluid no están dentro del encuadre de la cámara, lo que significa que para esos frames no es necesario calcular la simulación física.

Antes de examinar los otros parámetros en la sección Cache, veamos qué sucede cuando hacemos copias del conjunto compuesto por el Domain, el brasero y los troncos, donde los troncos actúan como objetos Inflow, y colocamos esas copias en la escena. Como vimos antes, un solo Domain que cubra toda la escena necesitaría una resolución extremadamente alta para producir buenas llamas, además de dejar mucho espacio sin usar. Por lo tanto, para añadir varios braseros, la única opción es duplicar todo el conjunto.

El problema es que, al presionar Play en la Timeline, Blender utilizará la misma carpeta de caché para todos los Domains, lo que significa que todos compartirán los mismos datos de simulación. Si estás seguro de que deseas mantener los mismos parámetros para todas las simulaciones, quizá puedas intentar engañar al espectador rotando ligeramente los Domains o asignando diferentes Materials a cada Domain para variar el aspecto de las llamas durante el renderizado.

El verdadero problema surge si cambiamos la resolución o cualquier otro parámetro de un Domain y luego ejecutamos nuevamente el Bake. Por ejemplo, estoy bajando la resolución de los Domains más lejanos, ya que no necesitamos alta resolución para los objetos de fondo. Ahora Blender realmente está mezclando los datos, porque es el mismo conjunto de datos volumétricos el que se comparte entre objetos que tienen características diferentes.

Si quieres que cada Domain tenga sus datos claramente separados de los demás, necesitas especificar carpetas de caché independientes para cada Domain antes de ejecutar la simulación. No hace falta decir que esto aumentará significativamente el espacio en disco utilizado por los datos de los distintos Domains. Depende de ti, según tus necesidades, decidir qué estrategia adoptar: uno o más Domains muy grandes duplicando la misma simulación, o crear cachés separadas para los distintos Domains.

Hasta ahora, Blender ha estado calculando el Bake de la simulación cada vez que presionábamos Play en la Timeline. Este no es el único modo posible. De hecho, existe otro que también nos permite utilizar una herramienta muy útil. Para mantener las cosas simples, dejo solo un brasero con su Domain en la escena y elimino los demás. Ten cuidado, porque eliminar Domains no elimina sus datos del disco. En realidad, esto es algo positivo, porque significa que podemos guardar y reutilizar los datos de la simulación más adelante. Pero en este caso no necesito esos datos, así que los eliminaré manualmente.

En la sección Cache del Domain encontramos el menú Type, que por defecto está configurado en Replay. Este es el modo que hemos estado utilizando hasta ahora: Blender recalcula un nuevo Bake cada vez que volvemos al frame 1 y presionamos Play, sobrescribiendo los datos anteriores.

El modo Modular permite realizar Bakes separados para distintos aspectos de la simulación. Esto puede ser útil en algunos casos para examinar o reemplazar ciertas partes individualmente sin tener que rehacer toda la simulación.

El modo All, finalmente, permite hacer el Bake de toda la simulación, pero calculándolo en segundo plano y no en la Timeline. Para iniciar el Bake, debes hacer clic en el botón Bake All en el panel. Blender mostrará una barra de progreso durante el proceso. Una vez que el cálculo haya finalizado, puedes presionar Play en la Timeline para ver el resultado de forma mucho más fluida, ya que ha sido precalculado por Blender.

Para modificar los ajustes de la simulación, primero debes eliminar los datos existentes haciendo clic en el botón Free All. En ese momento, los parámetros volverán a estar editables y podrás modificarlos. Por supuesto, después deberás hacer clic en Bake All para que Blender recalcule la simulación.

Al observar la carpeta que se está utilizando, podrás hacerte una idea de los distintos módulos o pasos de Baking que se calculan y almacenan por separado cuando se utilizan los modos Modular y All.

El modo All pone a disposición el parámetro Offset, que ayuda a resolver un problema que quizá ya hayas notado. Hasta ahora, todas las simulaciones de fuego comenzaban con la llama encendiéndose en el primer frame de la animación.

Sin embargo, esto no siempre es deseable, porque a veces podemos querer que la animación comience con un fuego que ya esté ardiendo.

Para resolver este problema, podemos introducir un número negativo en el campo Offset.

El tooltip explica que esto no significa que el Baking comenzará antes, sino simplemente que la simulación se reproducirá como si ya hubiera avanzado ese número de frames en el primer frame de la animación.

La duración de la animación en frames seguirá siendo la especificada entre Frame Start y Frame End.

En este caso, los últimos 25 frames de la Timeline quedan sin simulación, porque con el Offset le indicamos a Blender que reproduzca el frame 25 de la simulación en el primer frame de la Timeline.

Para solucionar esto, solo necesitamos hacer que el Bake calcule más frames, de modo que la simulación cubra toda la Timeline. Así que establezco Frame End en 275 en la sección Cache del Domain, hago clic en Free All y luego ejecuto nuevamente el Bake haciendo clic en Bake All.

Buscar en los Tutoriales

Ingresa una frase o varias palabras clave separadas por comas para buscar.

Modelos 3D, tutoriales y recursos de gráficos por computadora de Francesco Milanese. Las licencias de uso de los modelos 3D se pueden adquirir en las tiendas externas enlazadas en sus respectivas páginas, de acuerdo con las condiciones de licencia aplicables. Francesco Milanese — Número de IVA: 06321250877. Contacto: info@francescomilanese.com


POLÍTICA EXTENDIDA DE PRIVACIDAD Y UTILIZACIÓN DE COOKIES