miércoles, 19 de abril de 2017

Materiales PBR, Qué son, y cómo hacerlos en minutos

Hola, soy Edgar.

En esta entra voy a enseñar qué son los materiales PBR, su utilización en los videojuegos/renders y cómo puede mejorar la visualización de los mismos sin utilizar muchos recursos.



Empecemos por ¿Qué es un material PBR?
PBR son las siglas que indican Physical Based Rendering, y su uso se ha dado en renderizado y videojuegos a la par, dando una calidad increíble sin usar muchos recursos, dando a notar detalles como relieve, brillo, altura y entre otros.
 

Existen programas como Substance Designer y Substance Painter que nos permiten hacer estas texturas de manera procedural, pero estos suelen utilizar muchos recursos a la hora de generarlos, haciendo difícil que personas que quieran mejorar sus texturas sin necesidad de hacerlas desde 0 o simplemente sin descargar algún programa.

Una escena se ve muy diferente con materiales PBR y sin ellos, la calidad es muy pequeña.



Como podemos ver, en la imagen a la izquierda no se ve muy detallado, dado que es una superficie plana con una imagen, pero en la derecha, podemos ver el relieve, altura, brillo y demás, lo cual hace que se vea bastante realista y, a pesar de que se está usando Unity 4 en la captura, da un detalle increíble.

Para poder obtener un material PBR, necesitamos generar todos o la mayoría de los outputs, como normal map, Specular, Occlusion Map y otros.


Comenzamos con el normal map, el cual le da relieve a las texturas sin utilizar muchos recursos y mejora totalmente como se ve una textura, dado que ya no se ve plano como antes, esto se logra en base a una textura que los motores gráficos interpretan como diferentes parámetros del mismo, y se ha utilizado desde muchísimos años.





El Specular map (O metallic map en Unity) es una textura que indica que áreas de la texturas son mas brillantes que otra, es una textura en escala de grises, siendo negro mate, y blanco metal,



Ya hemos hablado de la oclusión como efecto de imagen, pero este también existe como textura.



La textura de oclusión ambiental permita difuminar los bordes de un modelo en 3D o en nuestro caso, de una textura, esto agrega un buen efecto al mismo ya que da un efecto similar al Ambient Occlusion en las texturas, como el Specular map, el mismo, viene dado en escala de grises.


Un height map funciona de manera similar al normal map, dando relieve y detalle, y se presenta en escala de grises como la mayoría de las texturas anteriores, siendo negro nivel de altura 0 y blanco nivel de altura 10, pero también el valor máximo del blanco es dependiente de que programa se esté manejando




Estas son todas las texturas que necesitaremos para poder tener nuestro material PBR, y ahora es donde lo realizamos.
A pesar de que existen muchos programas que nos permiten realizar estas texturas con una textura base, siempre podemos recurrir a una herramienta en línea, normal map online, la cual nos permite generar las texturas, como el resto de programas, con nuestra textura base, yo utilizaré esta:



ATENCIÓN:
Si estás trabajando con una textura mayor a 512x512 (Ejemplo 2048x2048), te recomiendo que disminuyas este tamaño a 512 o parecido, dado que si lo subes así, puede que pongas lento tu computador y no hay ninguna diferencia notable entre estos tamaños de textura, dado que son interpretaciones, lo cual quiere decir que utilizarías mas recursos y terminarías generando los mismos resultados.


Al entrar a dicha página, nos encontraremos con esto.



Como podemos ver, se compone de 3 ventanas, en la primera, nos muestra la textura principal, en la segunda nos muestra el normal map y otras texturas depende de cual escojamos y en la última tenemos un preview en 3D que podemos rotar para poder ver como está quedando.

Podemos clickear o arrastrar la textura base en la primera imagen, lo cual nos dará este resultado:



Yo recomiendo que en la parte donde dice Diffuse, le demos a "Load..." y carguemos nuestra textura base, de esta forma, podemos ver de una mejor forma, como se ve



Ahora podemos ir ajustando los diferentes parametros de nuestra textura para generarla, por ejemplo, en la pestaña inicial, normal map, existen 3 sliders, y una caja seleccionable y 3 botones.
El slider de Strentgh (Fuerza) es la fuerza del normal map que estamos creando.
El siguiente, Level, es el nivel base del mismo, y si lo movemos, podemos disminuir el nivel y hacer la textura mas fuerte, o hacerla mas débil en general
El slider Blur/Sharp nos permite realzar o difuminar la textura, yo aconsejaría tener cuidado con esta dado que podemos hacer que el normal map se vea muy extraño.
Luego tenemos la caja de filtro, el cual varía entre sobel y scharr, y los 3 botones que nos permiten invertir los canales rojo, verde e invertir el normal map.

Después de probar un rato, mi normal map ha quedado así:



Seguimos con el displacement, este se compone de contraste, blur/sharp e invertir, así va quedando mi textura después de haber movido un poco los sliders:

 

Como podemos ver, poco a poco el material va agarrando su forma final, y hasta ahora se ve muy bien.

El siguiente es el ambient occlusion, este contiene muchos más sliders que permiten cambiar muchas variables en cuánto a la imagen, pero en vez de explicarselos todos, les invito a probar por ustedes mismos, ya que estos no tienen mucha ciencia.



Por último, tenemos la pestaña specular, que contiene 3 sliders, uno de fuerza, uno indicativo y el rango respectivamente.
Y una caja seleccionable con el falloff, yo recomendaría Square, pero depende de la textura que estén trabajando puede que quieran seleccionar otro para obtener diferentes resultados...



Después de haber realizar todos los cambios, podemos seleccionar la lupa en la esquina superior derecha de la última ventana para poder agrandar el preview y ver mejor como ha quedado, mi resultado final del material en el preview es este:



Una vez terminados podemos escribir el nombre y descargar todas las texturas haciendo click en "All"

O podemos descargarlas una por una entrando a la pestaña de la cual deseamos descargar, escribiendo el nombre y clickeando "Download"

Ahora entraré en Unity (5.6.0) para mostrarles como se ve esta textura y enseñarles como colocarla en un material.
Importamos todas las texturas que generamos a Unity y creamos un material



Asignamos todas las texturas al material, de esta forma:



Y en la zona donde dice "This texture is not marked as normal map" seleccionamos Fix now y quedará así:



Ya nuestra textura está lista para ser aplicada en los diferentes modelos o escenas que tengamos, aquí unos comparativos (Derecha es sin ningún tipo de textura e izquierda es con todo lo que hemos realizado)







Y esto se hizo en poco tiempo, con una calidad alta de tiempo y dedicación se pueden obtener mejores resultados, aquí un ejemplo de texturas PBR aplicadas:

Sin PBR:


Con PBR:





Eso ha sido todo por este artículo, espero que te haya gustado y hayas entendido, si te ha ayudado, puede seguirme en G+ para poder saber cuando publique una nueva entrada, un saludo!

POR CIERTO!


Tengo una nueva página, codedgar.com.ve, allí subiré contenido cada una semana, habrá contenido más variado y muchas más cosas, pásate y échale un vistazo

No hay comentarios:

Publicar un comentario