En mi blog personal, llevo un tiempo escribiendo posts sobre como utilizar Houdini como scene assembler. Posts cortos con contenido muy sencillo, y empezando prácticamente desde cero. Iré recogiendo toda esa información en elephant vfx, y por supuesto, con el tiempo seguiré escribiendo al respecto. En esta ocasión, aumentando dicha información, voy a hablar rápidamente sobre como exportar volumes desde Houdini hacia otras apps 3D, o para ser utilizados en el propio Houdini con renders de terceros, como Arnold render. 

Para ilustrar el ejemplo, he creado esta simple nube que vemos más abajo, utilizaado algunas herramientas de volumes en Houdini. Lo que pretendo es exportar un vdb para ser utilizado como digo dentro de Houdini con Arnold render, o en cualquier otro software 3D y cualquier otro renderer.

En esta ocasión no voy a hablar de como crear nubes en Houdini, hay varios métodos que yo conozco, aunque no soy ningún experto en el tema, pero es algo que podemos discutir otro dia. Simplemente mostrar que parto de estas tres esferas moldeadas a mi gusto para conseguir un volume más o menos atractivo y que pueda repesentar una nube.

Una vez creada la nube, hay que exportarla como vdb. La opción más simple, en el caso de tener un volume no animado, como en este caso, bastaría con crear un file node, en modo write. Y escribir el archivo vdb. Tan simple como eso.

En el caso de tener un volume más complejo, como podría ser una simulación de unos cuantos frames, necesitaríamos un nodo convert vdb, en modo VDB.

Después un nodo rop geometry para escribir el archivo vdb en su totalidad de frames.

Hasta el momento sólamente estamos exportando volumes con un field density, que es información float. En el caso de tener información vector, es decir, tres canales, como por ejemplo un field de velocity, necesitaríamos antes realizar un merge de esos 3 canales. No es obligatorio, pero sin duda es más eficiente.

Tras el vdb vector merge, conectaríamos un rop geometry para escribir el vdb.

Una vez exportado, podemos importar el vdb mediante un nodo arnold volume. Es imortante indicar el grid que queremos utilizar, en este caso density, y también el modo de visualización.

En el caso de tener una secuencia e vdbs, podemos utilizar el padding $F4.vdb

En esta ocasión estoy utilizando el mismo volume dentro e Maya.

Una vez renderizado de forma correcta, obtenemos el render qu eilustra este ejemplo.

Los suscriptores de elephant vfx pro, tenéis un video de 25 minutos donde explico estos conceptos con mayor detenimiento. Podéis acceder al contenido desde vuestra web.

Isotropix Clarisse es capaz de renderizar volumes manteniendo la flexibilidad que caracteriza a este software. OpenVDB es perfectamente compatible con Clarisse, y resulta muy sencillo renderizar todo tipo de volume effects. En este particular ejemplo vamos a renderizar una simple simulación de humo.

Lo primero que voy a hacer es crear un setup IBL y elegir uno de los HDRI que almaceno en mi libreria.

Con dos esferas, una gris y una cromada puedo posicionar fácilmente el HDRI hasta obtener la iluminación deseada.

Para importar el archivo .vdb basta con seleccionar import -> volume.

Una representación básica del volume se verá en el viewport, siempre en tiempo real.

Para mejorar la apariencia visual del volume y que este se vea afectado por la iluminación (en viewport) basta con cambiar el tipo visualizacion a progressive rendering.

Si asignamos un standard material al volume, podemos renderizarlo como si se tratase de una geometría más.

Por supuesto, la solución ideal es crear un material volume y aplicarlo a la simulación.

En el material editor podemos utilizar un nodo utility -> extract property y leer cualquier propiedad embebida en la simulación. En este caso, la temperatura.

Podemos derivar la apariencia del shader como queramos. En este ejemplo estoy utilizando un simple gradient.

Si aparece demasiado ruido en el render, no olvides que las luces tienen su propio parámetro de sampling para los volumes.

Render final.

Posted
AuthorXuan Prada