En la publicación Postprocesados hiperrealistas en COMSOL Multiphysics®[1] publicada en la sección de noticias de Addlink Software Científico se mostró cómo visualizar los resultados que obtenidos en las simulaciones numéricas de forma hiperrealista. No obstante, COMSOL Multiphysics® permite la integración de otros programas gráficos que pueden ser de gran utilidad para conseguir incluso un mayor nivel de detalle y calidad visual en el postprocesados de nuestros resultados. Este es el caso del programa Blender [2].

Blender es un software gratuito y de código abierto, ampliamente utilizado para la creación de gráficos 3D, animaciones y efectos visuales. Con sus herramientas avanzadas de modelado, texturizado y renderizado, Blender se ha convertido en una opción popular tanto entre artistas independientes como en estudios de animación y diseño, permitiendo la creación de visualizaciones realistas en proyectos de cine, videojuegos y arquitectura. Este programa permite renderizar imágenes estáticas y animaciones.

Para crear una animación en Blender a partir de resultados obtenidos en COMSOL Multiphysics®, es necesario utilizar dos pequeños scripts en Java y Python. A continuación, se muestra un ejemplo de cómo realizar dicha animación.

Para comenzar, en el entorno de COMSOL Multiphysics®, despliega la sección de “Results” en el Constructor de modelo. Con el botón derecho, selecciona “Exportar”. A continuación, selecciona “Image” tal y como se muestra en la Figura 1. En los ajustes que aparecerán, se elige el gráfico que interese y, en “Output”, selecciona Archivo y el formato glTF. Busca el directorio donde deseas guardar el archivo, asigna un nombre y, por último, haz clic en el botón Exportar en la parte superior. Esto generará una escena 3D del gráfico, que podrás importar a Blender.

Recuerda que, para realizar una animación, necesitarás abrir un script en Java desde el Application Method de COMSOL, que permita exportar la secuencia de imágenes de forma completa y efectiva. Para hacerlo, podremos ejecutar el script desde el “Application Builder” creando un método tal y como se muestra en la Figura 2. En la figura se aclara que el nombre asignado en el script de Java al gráfico hace referencia al valor de etiqueta que se muestra en las propiedades del gráfico.
Figura 1. Configuración e la opción "Export Image".


Figura 2. Script Java escrito en un método del "Application Builder".

Tras escribir el método, haciendo clic con el botón derecho en el nombre del mismo, se selecciona la opción de “Ejecutar”. Será necesario esperar hasta que se completen todas las operaciones; finalmente, se visualizarán las imágenes en formato “glTF” generadas en el directorio que se haya indicado.

Cabe mencionar que, para optimizar el proceso, primero se debe exportar una imagen de escena 3D que contenga únicamente los elementos constantes en toda la animación, como las paredes sólidas. Después, se ejecutará el script para las escenas que solo contienen los gráficos en movimiento. De esta manera, al importar a Blender, se obtendrá un único objeto para las paredes y diferentes objetos para cada paso de tiempo de los gráficos animados. La Figura 3 muestra un único objeto “Walls” que permanece visible durante toda la animación en Blender, mientras que hay un objeto “Mesh” para cada paso de tiempo.


Figura 3. Árbol de objetos de Blender.

Una vez que se han exportado todas las imágenes en formato “glTF”, se pueden importar en Blender (Figura 4). En el cuadro de diálogo que aparecerá, busca la ubicación donde COMSOL exportó las imágenes, selecciona todas y haz clic en el botón Importar. Este proceso puede tardar varios minutos, dependiendo del tamaño y cantidad de imágenes. Tras completarse, se podrán visualizar todas las imágenes importadas en el árbol de objetos. En el caso del ejemplo Dam Break, aparecerán los prefijos Mesh_0 y Mesh_1, que indican la isosuperficie y la pared vertical del fluido, respectivamente. Esto es normal en algunos casos, ya que el grupo gráfico de COMSOL Multiphysics® está compuesto por un gráfico de superficies y otro de isosuperficies.


Figura 4. Forma de importar “import” imágenes con formato “glTF” en Blender.

A continuación, se aconseja ejecutar el script en Python que se muestra en la Figura 5, que ocultará todos los objetos que comienzan con el prefijo Mesh, de modo que solo se visualicen una única vez en un fotograma específico. Para acelerar o ralentizar la animación, se puede modificar el valor de 2.5 en la línea 29 del código que se muestra en la Figura 5. Valores más altos harán que la animación sea más lenta, mientras que valores más bajos la harán más rápida.


Figura 5. Ejemplo de script en Python para crear una animación a partir de las imágenes en formato glTF importadas de COMSOL Multiphysics®.

Para lograr el realismo necesario, es fundamental definir los materiales con las propiedades adecuadas para cada objeto. Por ejemplo, en la Figura 6 se muestra la definición de los materiales de la pared de la columna. Existen recursos en línea donde se pueden obtener materiales predefinidos. Por defecto, los objetos tendrán un material similar al importado de COMSOL Multiphysics®, ya que la imagen en formato glTF retiene los valores de color. Además, es importante añadir fuentes de luz para garantizar una iluminación adecuada de los objetos, así como ajustar el ángulo de dichas fuentes. También es posible añadir otras geometrías 3D en Blender, como paredes, suelos, techos o cualquier otro objeto o escenario que no forme parte de la simulación de COMSOL Multiphysics®.


Figura 6. Ejemplo de la definición del material de la pared de la columna.

Finalmente, en la Figura 7 se observa el resultado obtenido una vez completado el renderizado con Blender.


Figura 7. Animación del modelo Dam Break renderizado en Blender.

Otros ejemplos

Las Figuras 8 y 9 muestran otros ejemplos que permiten comparar los postprocesados hiperrealistas obtenidos en COMSOL Multiphysics® y los que se consiguen tras completar el renderizado en Blender.


Figura 8. Gráfico y líneas de corriente en el modelo “Sports car” obtenidos en Blender y COMSOL Multiphysics®.


Figura 9. Wave-Based Time-Domain Room Acoustics. Visualización en Blender y COMSOL Multiphysics®.

Nota: Versión de Blender 4.2 utilizada para la redacción de esta noticia. Los pasos de importación pueden variar en versiones diferentes.

Referencias

[1] Addlink, 2024. "Técnicas para un postprocesado realista en COMSOL Multiphysics®".
[2] Blender (Blender Foundation), 2024. https://www.blender.org/