Guía para capturar texturas PBR

Guía para capturar texturas PBR. Martin Geupel ha publicado un artículo muy interesante sobre los rangos de PBR Albedo, lo que actualmente se considera seguro y por qué cree que se basa en una suposición falsa. Puedes ver el artículo original aquí.

Prefacio

Este artículo trata sobre mis aventuras de medición de PBR, desde hacer el equipo hasta capturar y calibrar las imágenes resultantes, y lo que aprendí en el camino. Esta NO es una guía definitiva para capturar texturas PBR.

No pretendo que esta sea la forma absolutamente correcta de hacerlo. Este artículo trata de abordar un problema común muy generalizado entre los artistas e intenta resolver los mismos. Si encuentras algo que está mal, podría mejorarse y puedes hacérmelo hágamelo. Parte de la razón por la que estoy publicando esto en primer lugar es para recibir comentarios al respecto.

Confusión

Hace algunas semanas, un colega y yo estábamos discutiendo una textura de madera para un activo específico. Parecía correcto, pero resultaba demasiado oscuro para lo que entendía eran las reglas básicas de PBR. Entonces, ajustamos el color base hasta que excedió el límite mínimo absoluto de Albedo y, sin embargo, seguía sin verse bien.

No pude explicarle a mi colega por qué era así. Según tengo entendido, uno de los materiales naturales más oscuros es el carbón vegetal, con un albedo de 0,04 o 4%. Entonces, dado eso, tiene sentido decir que ningún otro material natural debería ser más oscuro. 0,04 en SRGB lineal resulta ser alrededor de SRGB 50 50 50 (8 bits no lineal, con gamma), que por cierto también es el límite del validador PBR en las herramientas de sustancia de Adobe.

Si buscas tablas de Albedo en Google, encontrarás muchas tablas para materiales PBR que indican exactamente estos valores de Albedo. De hecho, si buscas en Google y lees algunas guías de PBR, eventualmente encontrarás el de Sébastien Lagarde. Alimentando un artículo de modelo de sombreado basado en la física, en el que afirma que:

Carbón vegetal 0,04
Asfalto fresco 0,04 Asfalto
Desgastado 0,12

Una de las sustancias más oscuras de la tierra es el carbón vegetal, la más brillante es la nieve fresca.

El color difuso de las sustancias anteriores debe ser un poco menor que el valor proporcionado, que incluye algo de especular. Esto permite definir un rango de color difuso en sRGB de 50-240.

Se puede encontrar un párrafo similar en la segunda parte de la Guía PBR de la propia sustancia :

Podemos visualizar este rango en términos de que la sustancia más oscura es el carbón y la más brillante es la nieve blanca y fresca. Para valores oscuros, no debe bajar de 30-50 sRGB. El rango de valores oscuros podría ser más tolerante a 30 sRGB y más estricto a 50 sRGB. Para colores brillantes, no debe tener valores superiores a 240 sRGB).

Entonces, si eso es cierto, nuestra textura de madera debería ser al menos SRGB 50, o mucho más, ya que no es carbón, pero ¿Qué es un poco menos y por qué todavía se ve completamente mal, a pesar del color correcto? ¿Es la administración en el lado del renderizador?

Montando el equipo necesario

Entonces, dado que las pautas de PBR no tenían respuestas y no sabía en qué texturas podía confiar, la única solución razonable era medir algunos albedos yo mismo. Durante las semanas posteriores me construí un pequeño equipo de luz de anillo portátil con polarización cruzada que podía usar para tomar mis propias muestras. El anillo de la parte frontal se puede girar 90 grados para generar imágenes con polarización cruzada y sin polarización. Todo está alimentado por un banco de energía de 24V 65W.

No entraré en detalles sobre cómo funciona y por qué lo necesita, hay muchos recursos solo para eso (y planeo hacer otra publicación sobre el equipo en sí). En pocas palabras: la polarización cruzada significa efectivamente cancelar cualquier reflejo especular de la fuente de luz para que la cámara solo pueda ver la luz difusa que rebota internamente, lo que llamaría una textura BaseColor.

Montando el equipo necesario en esta guía para capturar texturas PBR
Montando el equipo necesario en esta guía para capturar texturas PBR

Tomando las imágenes

Con el equipo terminado, necesitaba una referencia para ajustar mis imágenes. Elegí un Color Checker Passport 2, ya que este es probablemente el tipo de tabla de colores más utilizado que existe. Es muy caro para lo que es, pero también es cierto que no tiene competencia real.

Llegados a este punto, el siguiente paso fue crear un perfil que corrige los colores de la cámara a la referencia. Hay diferentes formas de hacer esto, pero después de bastante experimentación encontré 3 opciones diferentes, donde solo una es recomendable.

Opciones para capturar texturas PBR

El software de calibración de cámara Color Checker que se envía con la carta. No te molestes. Esto es increíblemente lento, súper exigente con la entrada y, en general, francamente impresionantemente malo. Además, no hay ajustes de ningún tipo.

La siguiente opción es el editor de perfiles DNG de Adobe. Este es rápido y, lo que es más importante, puede exportar perfiles lineales (más sobre eso en un momento), pero tiene un defecto importante: es demasiado antiguo. La fórmula de Color Checker se revisó en 2014 y los colores cambiaron ligeramente. Desafortunadamente, el software se creó antes y los perfiles nunca se actualizaron. Si no te importan los colores, solo los valores, esta sigue siendo una opción válida y gratuita.

La tercera opción y la que estoy usando ahora es el Diseñador de perfiles de Lumariver. Cuesta alrededor de 30 euros en la versión más pequeña, pero admite perfiles lineales, las muestras modernas de color checker, y tiene un montón de otras características que puede necesitar o no. De cualquier manera, es perfecto para la tarea.

Curva de tono de un perfil de procesamiento Raw estándar
Curva de tono de un perfil de procesamiento Raw estándar

Entonces, ¿Qué pasa con esta curva y por qué necesitamos eliminarla? Como con todo en CG, lo que queremos es hacer nuestros cálculos en la entrada lineal. Cada cámara o procesador de archivos RAW agrega una curva de mapeo de tonos a sus imágenes para que sean más agradables a la vista, de la misma manera que lo hace con sus representaciones para que se vean bonitas al final. Sin embargo, dado que estamos realizando mediciones, queremos imágenes lineales, por lo que debemos eliminar esa curva de mapeo de tonos.

Izquierda - Foto original - Derecha: Imagen lineal procesada con gamma para visualización
Izquierda – Foto original – Derecha: Imagen lineal procesada con gamma para visualización

Procesando imágenes para exportar

Después de procesar nuestras imágenes con ese perfil lineal plano, podemos exportarlas y ajustarlas en una aplicación de nuestro agrado. En mi caso uso Blackmagic Fusion.

Pero para hacer eso, necesitamos saber qué representan estas muestras de color. Después de investigar bastante, encontré una fuente con resultados creíbles, actualizados y probados, los tenemos aquí.

El problema es que estos valores de color de referencia no son solo referencias difusas, sino que también contienen una parte especular. Probé diferentes conjuntos de valores y ajusté los niveles de mis imágenes para que coincidieran con los valores de referencia del parche en blanco y negro del verificador de color; ninguno de ellos parecía plausible, especialmente en una representación. Lo que me hizo sospechar en ese momento fue que el parche negro ya estaba muy oscuro directamente de Lightroom. Entonces, cualquier ajuste resultaba en una textura borrosa y descolorida, que estaba en línea con las guías PBR pero aún se veía extraña.

Luego traté de eliminar la parte especular de los valores de referencia restando fotos de gráficos polarizados y no polarizados, lo que nuevamente resultó en un valor realmente oscuro para el negro.

Un hallazgo afortunado

Al estar a punto de rendirme, hice otro intento de encontrar una fuente de valores de referencia polarizados y, afortunadamente, encontré un artículo antiguo de Activación titulado Mediciones del mundo real para Call of Duty: Advanced Warfare. Todo el PDF es un tesoro en sí mismo, pero lo que realmente provocó alegría aquí fue que su método para capturar texturas era muy parecido al mío, con una diferencia importante: usan spectralon, un material que tiene un albedo de más del 99% y estando muy cerca de la reflectancia lambertiana. Con eso, tienen una referencia muy fiable y todo lo que hacen es ajustar la exposición de la imagen lineal para que coincida con la superficie del espectro en blanco puro.

Esto tiene algunas implicaciones importantes:

  • No modifican la imagen de ninguna otra forma que no sea simplemente multiplicando
  • El parche negro del corrector de color es, de hecho, muy oscuro
  • Si la linealización se realiza correctamente, el proceso de ajuste de la imagen de entrada es muy fácil, dado que tiene una referencia conocida como spectralon.

Desafortunadamente para mí, spectralon es prohibitivamente caro, pero el pdf también contiene una imagen de spectralon justo al lado de un cuadro de verificación de color. Exactamente lo que estaba buscando. Puedo usar esa imagen para calibrar mi gráfico.

Referencia de Spectralon justo al lado de un cuadro de verificación de color
Referencia de Spectralon justo al lado de un cuadro de verificación de color

Los resultados de esta guía para capturar texturas PBR

Con esa referencia y una fuente fiable, hice algunas pruebas y los resultados parecen prometedores. Después de ajustar la exposición, mi tabla de colores coincide muy bien con la de ellos y, por lo tanto, estoy dispuesto a concluir que estas medidas son confiables. Además, las representaciones se ven bastante bien, y después de todo, esa era la meta.

Aquí hay algunos ejemplos de la textura y las representaciones resultantes. La vista de la izquierda es la textura BaseColor terminada, la del medio es difusa + reflejos (ajustada para la exposición de la izquierda). Ya podemos ver aquí cuánto contribuyen los reflejos al color, aunque tenga en cuenta que es mientras lo proyecta con una gran fuente de luz perpendicular a la superficie, que es básicamente el peor de los casos. La vista correcta es cómo la cámara tomó la fotografía, incluida la curva de tono y sin ajustes a la exposición. El punto aquí es que no puedes inferir una textura BaseColor de una fotografía.

Curvas de asignación de tonos

Todas las representaciones se realizan utilizando la gestión de colores de ases, incluida la curva de asignación de tonos de ases dentro de la transformación de vista Output_sRGB. Esto significa que todas las imágenes tienen un mapeo de tonos similar a una curva en S y, por lo tanto, tienen más contraste que una representación clásica con corrección de gamma.

Elegí específicamente un hdri con iluminación neutra y objetos de fondo para tener alguna referencia a los objetos del mundo real (y un poco de control de cordura).

Los resultados de esta guía para capturar texturas PBR
Los resultados de esta guía para capturar texturas PBR

Tipos de render con distintas maderas

Es posible que hayas notado que el plástico negro se ve muy oscuro, pero debemos tener en cuenta que eso es con una curva en S contrastante. Todavía hay muchos detalles en el renderizado, que básicamente provienen de los reflejos. También podemos compararlo con la taza negra en el fondo.

Aquí hay un ejemplo de cómo se vería si Basecolor fuera SRGB 50. A pesar del mapeo de tonos, el material se ve horrible y descolorido. Creo que puedes imaginar cómo sería sin la S-Curve.

Basecolor SRGB 50 sin la S-Curve
Basecolor SRGB 50 sin la S-Curve

Claves a tener en cuenta

Hay otra cosa que quizás hayas notado. Parte de la madera todavía se ve algo brillante, a pesar de la polarización. No estoy exactamente seguro de cuándo sucede esto (se requieren algunas pruebas), pero dado que esta madera está pintada, es probable que actúe como un revestimiento. Lo que significa que hay dos capas de reflexión donde solo una se cancela correctamente.

Una cosa más que podría ser un problema es la dispersión o dispersión anisotrópica debido a las fibras en la madera. No estoy seguro de cómo esto afecta los resultados. Otra causa probable en este caso son los reflejos secundarios de la luz rebotada en las paredes izquierda y derecha de la puerta. Así que esto es algo a tener en cuenta y probablemente deba arreglarse manualmente.

RestReflections y Diffuse Albedo
RestReflections y Diffuse Albedo

Aquí hay un ejemplo de madera con una capa transparente. Solo se cancela la primera capa de reflejos, lamentablemente los reflejos de la madera siguen ahí.

Madera con una capa transparente
Madera con una capa transparente

Conclusiones ¿Qué significa todo eso con respecto al problema inicial?

Es hora de echar otro vistazo a las mesas de Albedo. En el caso del carbón, las tablas dicen que tiene un albedo del 4%. Pero eso incluye tanto Difuso como especular. El flujo de trabajo de la metalicidad solo existe porque se asume que la gran mayoría de los materiales dialétricos tienen aproximadamente la misma reflectancia especular (F0, la cantidad de reflexión cuando se mira perpendicularmente a una superficie) y eso es 4%. Hay diferencias pero no es tanta.

Volviendo al Artículo de Sébastien Lagarde donde escribió:

Las buenas reglas para la gama de colores especulares de los materiales dieléctricos son:

Ningún valor por debajo de 0,02
Piedras preciosas comunes 0,05-0,17
Líquidos comunes 0,02-0,04

Cuando no se encuentra una referencia para un material dieléctrico, se establece un valor de 0,04 (alrededor del plástico). Excepto las piedras preciosas, cualquier material dieléctrico que utilizará debe estar en el rango 0.02-0.05.

Albedo es igualmente especular y difuso

Entonces, incluso en el peor de los casos, donde el carbón solo tendría un 2% de reflectancia especular, esto significaría que el 4% de albedo es a partes iguales especular y difuso, lo que luego se traduce en un valor BaseColor de solo SRGB 25, muy por debajo del límite establecido. de las guías PBR. Pero si asumimos que es más alta, como un 4 % de reflectancia especular, la parte difusa es básicamente cero, mientras que la mayor parte de lo que vemos son reflejos aproximados, una tendencia mucho más cercana a lo que intuitivamente sentimos cuando miramos el carbón.

Entonces, ¿Qué significa eso para cualquier otro material? Suponiendo una parte de reflectancia especular del 4% en el albedo para la mayoría de los materiales, eso es SRGB 50 allí mismo. Entonces, algo como el plástico negro debería tener un BaseColor mucho más oscuro que eso, ya que el albedo mínimo del 4% ya se ha agotado para la parte especular, y eso parece coincidir con las medidas.

Hice algunas comparaciones de los materiales que fotografié y los materiales que encontré en la fuente de sustancia y los megaescaneos, y los valores de BaseColor fueron sorprendentemente cercanos. Agregando el artículo de Activision a esto, y parece que el proceso de pensamiento no puede estar completamente equivocado.

Vista comparativa de esta guía para capturar texturas PBR

Vista comparativa de esta guía para capturar texturas PBR
Vista comparativa de esta guía para capturar texturas PBR

Todas estas imágenes no tienen mapeo de tonos para que sea un poco más fácil de ver.
La imagen de la izquierda es el material con los reflejos desactivados,
la imagen del medio muestra reflejos de color base y F0 4 % con una rugosidad del 100 % (flujo de trabajo de metalicidad), y la imagen de la derecha es el color base aumentado en un 4 % pero sin reflejos nuevamente.

Bastante cerca diría yo. Por supuesto, hay algunas diferencias, como cabría esperar de una simulación con modelos de sombreado y sesgos aquí y allá, pero creo que muestra la idea.

Trampas encontradas en esta guía para capturar texturas PBR

Dicho esto, todo esto plantea la pregunta: ¿por qué el validador PBR está tan lejos entonces? Si el albedo de los objetos oscuros son principalmente reflejos, ¿por qué las guías de PBR indican lo contrario? ¿Y por qué Substance Source distribuye Materiales que no están dentro de sus propias especificaciones? No tengo una respuesta para eso, y el hecho de que la solución al problema parezca tan obvia hace que sea aún más difícil de creer.

Aunque las medidas parecen ser precisas, debo enfatizar que esto no está en un nivel científico. Hay muchas variables en mis medidas y equipo que no puedo compensar. Comenzando por los LED y su clasificación CRI relativamente baja, hasta las láminas polarizadoras, la distribución de la luz en los objetos durante el render y, por último, pero no menos importante, las varias capas de conversión de valor de referencia que sucedieron en el camino.

Resultados sesgados por la luz

Además, la ubicación del gráfico en relación con el viñeteado o la disminución de la luz es una consideración aquí y sesgará un poco los resultados. Nada de esto es una medición de albedo de grado de laboratorio y, por lo tanto, estos ejemplos están destinados principalmente a ser utilizados como una fuente para ajustar su intuición sobre cómo deberían verse probablemente las texturas de BaseColor. Dicho esto, no creo que ninguno de estos temas cambie radicalmente el resultado y las conclusiones.

Otro posible argumento es que las tablas de Albedo, como se mencionó anteriormente, indican la cantidad de energía reflejada en un rango más amplio de longitudes de onda, mientras que nosotros, al renderizar, solo usamos el rango visible. Sin embargo, esto todavía haría que esas tablas de albedo y los límites inferiores fueran efectivamente inútiles para nosotros y los medidos fueran los únicos confiables (ya que están en el mismo rango de longitudes de onda visibles).

Cosas a tener en cuenta

  • Cuanto más oscuro sea el BaseColor del material, más reflejos contribuirán al aspecto general. Eso significa que si no está obteniendo el valor F0 o la Rugosidad exactamente correctos, se verá mal. Es por eso que tomo tanto la imagen con polarización cruzada como una normal como referencia de reflexión.
  • Las texturas de BaseColor pueden ser mucho más oscuras o contrastantes de lo que puede suponer y, por lo general, están más saturadas de lo que parecerá el material renderizado al final. Los Reflections agregarán un poco de lechosidad en la parte superior.
  • Las texturas de BaseColor de la web pueden o no ser correctas; en realidad, nunca se puede decir con solo mirarlas.
  • Pueden tener partes especulares, o la curva de mapeo de tonos nunca se eliminó, o generalmente es demasiado brillante u oscura. En mi humilde opinión, eso también significa que usar una referencia de disparo adecuada puede ser una buena idea si edita materiales usted mismo en Substance Designer, por ejemplo.
  • Disparar texturas sin polarización cruzada no es una buena idea en mi opinión, pero puede salirse con la suya si el material es lo suficientemente brillante y, por lo tanto, los reflejos contribuyen comparativamente menos. Los materiales oscuros necesitan absolutamente polarización cruzada.
  • Si no usamos reflejos en sus materiales por razones como el ahorro de tiempo de procesamiento (como para telas muy ásperas y oscuras), es absolutamente necesario que compense la parte especular del 4%, de alguna manera.

Enlaces de interés en esta guía para capturar texturas PBR

  • Este artículo ha sido escrito originalmente por Martin Geupel, tal y como comentábamos al inicio, puedes ver el original en este enlace.
  • Tienes otros artículos sobre texturas PBR aquí.
  • En el foro puedes encontrar toda la información agrupada y los comentarios, sigue leyendo…