Renderizado Basado en Física (Physically Based Rendering)

Por , el 15 abril, 2014. 4

El Renderizado Basado en Física o Physically Based Rendering se trata de una forma de manejar parámetros de shaders basados en la vida real, para facilitar la creación de materiales realistas de diferentes propiedades.

Al contrario que el sistema antiguo, aquí se usan valores reales para lograr un look específico, en lugar de valores derivados de la intuición.

Diferencias con el sistema antiguo

Material básico en UDK

Material básico en UDK

Material básico en UE4

Material básico en UE4

El sistema antiguo intenta emular lo que pasa con las reflexiones en la vida real. Como hacer reflexiones en tiempo real siempre ha sido costoso computacionalmente, se fingía usando el canal de especularidad (specular), un mapa que definía qué puntos del modelo reflejaban más o menos, y qué color reflejaban. Era una forma de simular los efectos de una reflexión. Por ejemplo, era común pintar un mapa de especularidad con tonos azulados para simular la reflexión del cielo en un modelo. Obviamente, si el modelo se mostraba en un interior, la reflexión dejaba de ser coherente y la ilusión se rompía.

Ventajas

El PBR permite crear materiales que se ven más realistas, con menos parámetros, y éstos además son más fáciles de entender. Finalmente, como están basados en la vida real, responden correctamente a cualquier tipo de iluminación, ya que esta también está basada en la vida real en UE4.

Como ejemplo, ya no necesitas pintar el canal especular de un color específico para simular una reflexión. Ahora la reflexión va a ser real (limitada, pero real).

Parámetros

Los parámetros de materiales más importantes en UDK eran:

  • Diffuse (color difuso, RGB)
  • Specular (especularidad, simulaba reflexiones, RGB)
  • Specular power (para controlar lo enfocado de los reflejos de luz del specular, escala de grises)
  • A eso se suman diversas funciones específicas de cada shader, como añadir un rimlight para simular la reflexión en los ángulos del modelo.

Para hacer uso del PBR usamos principalmente tres parámetros:

  • Base color (color base, RGB, equivalente al diffuse)
  • Roughness (rugosidad, define qué tan rugosa es la superficie de un material. Todos los materiales tienen una cierta rugosidad microscópica, que define cómo se dispersa la reflexión de la luz)
  • Metallic (metalicidad, define qué tan metálica es la superfice. En otras palabras, si refleja el entorno o no)
  • En algunos casos se puede usar el canal Specular, que en este sistema se convierte en un potenciador del resultado de los parámetros Roughness y Metallic.

El uso de los parámetros Roughness y Metallic

Adjunto un par de GIFs animados que muestran la variación que producen los parámetros Roughness y Metallic en el look de un material.

Roughness:

roughness

Metallic:

metallic

 Materiales de ejemplo

Unreal Engine 4 viene con materiales de ejemplo para mostrar el uso del PBR. Además, como se trabaja con valores de la vida real, se pueden usar valores específicos para ciertos tipos de materiales conocidos. A continuación la tabla de estos valores, como referencia:

Materiales no metálicos 
Material Intensidad de BaseColor
Carbón 0.02
Asfalto fresco 0.02
Asfalto usado 0.08
Suelo bruto 0.13
Pasto verde 0.21
Arena de desierto 0.36
Concreto fresco 0.51
Hielo oceánico 0.56
Nieve fresca 0.81
 Materiales metálicos
Material BaseColor (R, G, B)
Hierro (0.560, 0.570, 0.580)
Plata (0.972, 0.960, 0.915)
Aluminio (0.913, 0.921, 0.925)
Oro (1.000, 0.766, 0.336)
Cobre (0.955, 0.637, 0.538)
Cromo (0.550, 0.556, 0.554)
Níquel (0.660, 0.609, 0.526)
Titanio (0.542, 0.497, 0.449)
Cobalto (0.662, 0.655, 0.634)
Platino (0.672, 0.637, 0.585)

Fuente: Documentación oficial de UE4





  • Alex Salcido

    y como se le hace cuando son diferente tipo de materiales en un solo objeto 3d?

    • Hay dos formas: 1: Puedes asignar diferentes ID de material en tu programa 3D y en el motor asignar diferentes materiales, o 2: usar un solo ID en el objeto, pero pintar una textura de máscara donde diferencias entre un material y otro, luego en el motor, creas un material compuesto, y usas la máscara para controlar la ubicación.

      • Alex Salcido

        Ok gracias 😀

      • Alex Salcido

        Tienes ducumentacion que me puedas pasar sobre eso?
        Te lo agradeceria mucho