Pablo Carbajo
Materiales en arte 3D: Physically Based Rendering (PBR)
El concepto de Physically Based Rendering (PBR) hace referencia a una metodología de renderizado e iluminación físicamente precisa. Se ha convertido en un estándar en la creación de recursos 3D para videojuegos y animación debido a la facilidad con que se consiguen materiales realistas.
En fundamentos de los materiales se explican algunos conceptos teóricos sobre la física detrás de los materiales. A continuación vemos la aplicación de esos conceptos en la creación de materiales para arte 3D. Los ejemplos están tomados del editor de nodos de Blender y nos sirven para ver los elementos más habituales y que suelen ser comunes a cualquier programa que utilice el método PBR, aunque puede haber pequeñas diferencias.
Parámetros de un material PBR
En la creación de materiales PBR nos encontraremos una serie de parámetros que nos permiten definir prácticamente cualquier material. En esta introducción veremos los más importantes. En Blender el shader (material) que contiene todos estos parámetros se denomina Principled BSDF.

Base color
A través del Base color controlamos el color de los objetos, ya sean metálicos o no metálicos. El input que recibe este parámetro debe ser por tanto un vector de valores RGB, HSV u otro modelo de color.

Metallic
El Metallic permite definir si un material es metálico o no, lo que influye en la reflectividad de la superficie. Los valores que puede tener oscilan entre 0 y 1, aunque normalmente serán casi siempre 0 o 1. Esto es porque generalmente un material es metálico o no, rara vez es algo intermedio. Sí que pueden existir valores intermedios, por ejemplo en el caso de que tengamos un metal con una capa fina de pintura que deja ver a través parcialmente. La pintura es dieléctrica, pero como deja ver el metal de debajo el resultado es un intermedio entre ambos.

Specular
Este valor nos permite hacer un ligero ajuste en la intensidad de la reflexión especular. Por defecto tiene un valor de 0.5 en una escala de 0 a 1. Rara vez suele ser necesario modificar este valor, ya que la mayoría de materiales dieléctricos se encuentran en un rango bastante estrecho.

Roughness
La rugosidad de la superficie hace que veamos más nítida o más difuminada la reflexión especular. A través de este parámetro podemos regular la rugosidad de la superficie en un rango de 0 a 1, siendo 0 una superficie completamente pulida y 1 completamente rugosa. Realmente los valores más habituales oscilan entre 0 y 0.5. Por encima de 0.5 la diferencia ya no es tan apreciable. Además supone un mayor coste para el motor, aumentando el tiempo de render, por lo que conviene evitar valores muy altos.

Transmission
Para materiales con transparencia utilizaremos este parámetro en conjunto con el Transmission Roughness y el IOR. El Transmission nos permite definir cómo de transparente es el material en una escala de 0 a 1, siendo 0 un material opaco y 1 completamente transparente.
El valor del Transmission Roughness también oscila entre 0 y 1 y funciona de modo muy similar al Roughness visto previamente. En este caso hace referencia a la nitidez de la refracción en vez de la reflexión especular.

En estos materiales el índice de refracción (IOR) cobra importancia. Este índice representa la cantidad de deformación que sufren los rayos de luz al atravesar el material. Cuando necesitemos mucha precisión, podemos buscar el valor real del IOR de nuestro material en tablas y ponerlo en nuestro Principled BSDF. Un valor de 1 significa que no sufre deformación (veríamos lo que hay detrás del objeto igual que si no hubiera nada delante). Los materiales habituales se sitúan entre 1.3 y 1.5 y algunas piedras preciosas tienen índices de hasta 2.4.

Emission
Para simular materiales que emiten luz (como por ejemplo una sustancia fosforescente) se utiliza este material. El Principled BSDF que hemos utilizado hasta ahora es un shader muy polivalente debido a que contiene todos los parámetros que necesitamos para definir la mayoría de nuestros materiales. Para este ejemplo sin embargo utilizo un shader específico para materiales emisivos que tiene un parámetro de fuerza. Este shader no genera reflexiones difusas, ni especulares ni refracción. Además tampoco se proyectarán sombras en el objeto. Esto hace que veamos el objeto sin volumen.

Aumentando el valor de fuerza conseguimos más iluminación y el objeto se vuelve más blanco. No obstante, si lo que queremos es iluminar la escena utilizaremos otro tipo de objetos específicos para tal efecto. El Emission sólo sirve para simular objetos luminiscentes de baja intensidad.
Metal-Roughnes vs Specular-Glossiness
Los parámetros que acabamos de ver se corresponden con el flujo de trabajo Metal-Roughness. En este método el Base Color define el color tanto de los metales como de los no-metales.
En el flujo de trabajo Specular-Glossiness la reflectividad y el color de los metales se ajusta en otro parámetro denominado Specular (cuidado: éste no se corresponde con el parámetro que hemos visto anteriormente, que es bastante más limitado).
El color de los materiales no metálicos se define entonces en el Diffuse (análogo al Base Color). Cuando se trata de un material metálico el Diffuse se deja en negro.
En cuanto al Glossiness (brillo), viene a ser lo mismo que el Roughness solo que visto al revés. Un valor de Roughness 0 significa que la superficie está pulida, lo cual se correspondería con un valor de Glossiness 1. Del mismo modo, un valor de Roughness 1 se utiliza para una superficie completamente rugosa, que sería lo mismo que un valor de Glossiness 0.
La ventaja del método Specular es que se tiene un mayor control sobre la reflectividad de todos los tipos de materiales. Por contra, es más complicado de usar y ocupa mayor espacio de texturas. Ambos métodos son comunes, siendo quizá un poco más habitual el Metal-Roughness debido a su mayor facilidad de uso.