Opciones para limpiar de ruido nuestras animaciones

Render y calidad

Al enfrentarnos a la tarea de generar un render para una animación, nos encontramos ante un desafío considerable. Esto es especialmente cierto si nuestro objetivo es exhibir la máxima calidad. Conseguir un nivel de realismo que resulte satisfactorio implica emplear una cantidad significativa de samples para contrarrestar el potencial ruido visual. A pesar de los avances continuos tanto en hardware como en software, diseñados para producir renders visualmente precisos desde una perspectiva física, nos enfrentamos a una constante: la creciente complejidad de nuestras animaciones. Como resultado, la problemática persiste de manera invariable. Experimentamos tiempos de procesamiento más lentos y la necesidad de incorporar múltiples samples para atenuar el ruido no deseado. Por lo tanto, el proceso de obtener un render limpio y pulido guarda una similitud sorprendente con la situación que afrontábamos hace dos décadas. En otras palabras, obtener una calidad excepcional requiere una inversión de tiempo considerable, y como es bien sabido, el tiempo equivale a dinero. Esta realidad se mantiene inmutable, sin perspectiva de cambio.

El objetivo del tutorial

Por lo tanto, el propósito esencial de este tutorial radica en explorar las diversas opciones que se hallan a nuestra disposición para asegurar que nuestras animaciones se presenten sin defectos originados por el ruido visual.

Denoise y animaciones

En los últimos años, he tenido el placer de disfrutar de una herramienta fabulosa al renderizar, especialmente con motores unbiased como Cycles. Esta herramienta es el denoise. Han habido avances significativos en estas herramientas, como por ejemplo OptiX o OpenImage. Es realmente fabuloso, al menos para imágenes estáticas. Sin embargo, cuando intentamos aplicar el denoise en una secuencia animada, aquí es donde el problema «salta a la vista», nunca mejor dicho.

kitchen denoise OpenImage render 1 kitchen denoise Optix render 1
detalle openimage 1 detalle optix 1

Tanto con Optix como OpenImage las diferencias son prácticamente inapreciables. Para ver alguna diferencia deberíamos irnos a detalles referentes a los reflejos, tal y como ves en la anterior comparativa.

Si queremos conseguir menos ruido en el render, es una combinación de tantos samples mínimos necesarios y el uso de uno de estos algoritmos. Pero recuerda que esto te funcionará solo para imágenes fijas.

Desafío con las animaciones

Estos algoritmos son capaces de detectar el patrón de ruido muy fácilmente en un solo fotograma. El dilema surge cuando nos encontramos con varios fotogramas, ya que el patrón de ruido también varía. Por lo tanto, el proceso de limpieza, aunque luzca bien en cada fotograma individual, se convierte en un verdadero problema al reproducir la animación. Puedes notar una especie de parpadeo en ciertas zonas, comúnmente conocido como «flickering».

Denoise en Blender

Dentro de Blender, contamos con dos alternativas oficialmente integradas en las configuraciones de render de Cycles: OptiX y OpenImage. Cada una presenta sus propias ventajas y desventajas. Ambas demuestran su eficacia al tratar con imágenes estáticas. No obstante, cuando nos adentramos en la tarea de renderizar una animación, es aquí donde el algoritmo evidencia su falta de preparación para interpretar los diversos patrones de ruido que surgen entre un fotograma y el siguiente.

Desafíos del render

Al reproducir la secuencia animada, nos enfrentamos a un efecto sumamente desfavorable que torna imposible presentar el resultado como producto final ante nuestro cliente. Como mencioné previamente, aparece un parpadeo, desluciendo considerablemente nuestra animación. Indudablemente, esto complica nuestras aspiraciones de comercializar dicha animación. A menos que optemos por incrementar de manera exorbitante el número de samples, superando los 10.000 samples, con el objetivo de reducir el ruido. No obstante, esta solución solo nos brinda la posibilidad de ejecutar el render de la animación en una granja de render si nuestra intención es entregar el trabajo cumpliendo unas fechas. Esta opción, obviamente tendrá un coste económico en función de la cantidad de fotogramas renderizados. O, en el caso de que el tiempo no sea un factor crucial, emprender un proceso de renderización que abarque varios días o incluso semanas. Aquí el costo económico se traduce en el tiempo que tendrás tu o tus máquinas ocupando tiempo de proceso. Con todos los costes añadidos de electricidad, por ejemplo.

Temporal Denoising

Esta técnica despierta un gran interés y lleva años siendo empleada en la industria audiovisual, especialmente por estudios como Pixar o Dreamworks. El algoritmo ha sido diseñado para recopilar diversas muestras de múltiples fotogramas, con el fin de deducir y eliminar los patrones de ruido presentes. Indudablemente, en dicho sector esta técnica ha sido ampliamente desarrollada, ya que su principal objetivo es la representación de animaciones. Incluso en compañías con potentes infraestructuras de granjas de render, se persigue la optimización del tiempo de procesamiento.

Denoise Animation en Blender y almacenamiento

De manera sorprendente, Blender también incorpora este algoritmo, aunque no es visible en ninguna sección de la interfaz. Para activarlo, es necesario habilitar la opción «Experimental» en las configuraciones de render, además de activar «Developer Extras» en las preferencias de Blender. A pesar de esto, la función no se presenta como una opción dentro del menú de renderización, sino como un comando que debe ejecutarse.

Requisitos de fotogramas

Para aprovechar esta herramienta, los fotogramas deben cumplir con ciertas características. Deben ser renderizados en formato OpenEXR Multilayer, lo cual requiere de un considerable espacio en el disco duro. Esto se debe a que un fotograma puede llegar a pesar hasta 200 megabytes. Tomando en cuenta que en tu prueba has utilizado 120 fotogramas, el cálculo del espacio requerido sería (200 MB x 120 fotogramas). Es fundamental tener en cuenta esta demanda de almacenamiento.

Espacio de Almacenamiento Necesario
El espacio total necesario para almacenar los 120 fotogramas en formato OpenEXR Multilayer sería de 24.000 megabytes, es decir, 24 gigabytes.

Ejecución del Denoise

Una vez que la renderización esté completa, deberás ejecutar el comando mediante la función de búsqueda de Blender, generalmente activada con F3. Busca «Denoise Animation». Aunque Blender pueda parecer bloqueado después de presionar «Enter», permite que el algoritmo trabaje en segundo plano. Al finalizar, se mostrará un mensaje que anuncia «Denoise Completed».

mensaje despues de denoise

Carácter experimental y futuro

Como ya mencioné, esta técnica es experimental y continuará mejorando. Es por eso que no está incorporada oficialmente, debido a su falta de perfección. Los resultados pueden ser satisfactorios para algunas animaciones y menos para otras. Permite que el equipo de Blender continúe perfeccionándola; no obstante, la mera existencia de esta función es una noticia alentadora.

Alternativa externa: Neat

Otra alternativa que he tenido la oportunidad de probar y que me ha sorprendido gratamente (debido a su eficacia real) es Neat. Se trata de un complemento que puede instalarse en prácticamente cualquier editor de vídeo, y que funciona de manera excepcional. De hecho, su rendimiento es óptimo incluso sin necesidad de ajustar casi ningún parámetro, gracias a su función de búsqueda automática de ruido, que básicamente implica realizar dos clics para resolver el problema. Esto abarca no solo el ruido, sino también el parpadeo.

Ejemplos y tutorial en vídeo

Te proporciono algunos ejemplos para que puedas apreciarlo por ti mismo. Además, en el vídeo siguiente, te explicaré cómo utilizarlo.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.