Understanding Shading/Entendiendo el Texturizado

Es muy común en el rubro que los artistas conozcas metodologías casi de memoria al momento de crear shaders. Pero en muchas ocasiones no hay un entendimiento real de lo que se produce. En cambio, si realizan constantemente un "copy/paste" de parametros por que saben que "asi se ven bien", o peor, utilizan solo shaders de libreria por que no saben fabricarlos.
En esta ocasión pondré un poco de luz al tema de los shaders aclarando ciertos conceptos básicos. En este caso hablaré desde la teoría, y haré una breve introducción a los principios imprescindibles para el correcto entendimiento y creación de shaders. Quiero añadir que para realizar esta guía me base mucho en bibliografía de Jeremy Birn, Lighting TD en Pixar.

Esto quiere decir que cada concepto a desarrollar es valido para cualquier tipo de soft 3d. Sea, Max, Maya, Blender, XSI, Modo, C4D, etc. No importe que uses para modelar en 3d, porque después de todo, al igual que en la fotografía:

"El principiante se fija en la cámara, el maestro en el lente, el experto en la luz"

Y en 3d resulta igual. No importa el programa que uses, y para alcanzar mejores resultados, en ocasiones, tampoco termina siendo útil cambiar de motor de render  . Lo que importa al final de todo, es un entendimiento real y conceptual del funcionamiento interno y teórico de un shader y la iluminación de la escena. Comprender los principios de reflexión, comprenden una pieza clave para el desarrollo de materiales realistas, y por consiguiente, piezas 3d mas impactantes.

Como bien lo define Jeremy Birn en su libro "Digital Lighting & Rendering", una de las etapas críticas en el refinado arte del 3d es el texturizado de una pieza (shading).  Se define así a la etapa donde mediante diversas técnicas y principios se generan estos shaders para materializar piezas 3d para su posterior renderizado.


Los shaders son la recreación digital de los materiales de cada pieza y como estos responden a la incidencia de la luz en la escena. Partiendo de esa base comenzamos por analizar uno de los elementos clave del shader. 

Reflexión.

Existen en lineas generales 3 tipos de reflexiones que varían sobre si mismas en ciertos espectros de intensidad.


Difusse:

Es aquella que aporta un aspecto "mate" al material. Por tanto no muestran ningún reflejo o destello.

Glossy (Lustre)

La reflexion de tipo glossy, es en cambio, suave y sus rayos divergentes tienen cadencia a la distancia, perdiendo así intensidad.

Specular

Una reflexión de tipo especular, por el contrario, es vibrante y parecida a un espejo.





La mayoría de las superficies muestran cierta combinación de transmisión lumínica difusa, glossy y especular. Incluso materiales de acabado mate, presentan en ciertos niveles, una mezcla de las 3 reflexiones. 

Recordemos que la aparición y forma de los reflejos en determinadas superficies esta condicionada por la incidencia de la luz. Por tanto algunos materiales desde determinados ángulos y bajo ciertas condiciones lumínicas pueden parecer que no poseen reflejos. Pero esto es erróneo. Basta con girar alrededor y buscar como incide en este la luz y podremos ver como aparecen y desaparecen reflejos.



ALGORITMOS DE RENDER

Cuando comenzamos a trabajar con un shader, debemos entender que el control del color principal del material esta dado por la reflexión difusa (Difusse). El ojo percibe y distingue el color de las cosas por la reflexión difusa de las mismas y no por sus reflejos u otros componentes. (Es importante no confundir ni mezclar el termino REFLEXIÓN (propiedad de la luz) con el término REFLEJO.)

Por tanto, si analizamos la estructura standard de los shaders de cada Soft 3d, todas poseen un parámetro llamado Diffuse. Este no es mas que un multiplicador de la reflexión difusa. Podemos comprobarlo reduciendo a la mitad su valor inicial, y no solo su color cambiara, sino su brillo (capacidad reflexión de luz).

Si seguimos analizando la estructura standard de un shader, también nos toparemos con nuestro parámetro Reflection/Specular. En principio, los reflejos especulares deben tomar la forma de la fuente de luz que los provoca; sin embargo, la mayoría de los "destellos especulares" no son mas que reflejos glossy, Si la luz de origen es una luz de punto procedente de un punto infinitamente pequeño en el espacio, entonces la reflexión especular perfecta de este punto seria otro punto infinitamente pequeño. Probablemente mucho mas pequeño que un pixel. Por esto suele suceder que la mayoría de los shaders nos proveen de la capacidad de ajustar el tamaño del destello especular en sus parámetros. Finalmente, cuando se ha cubierto el tamaño del reflejo mínimo, la luz especular se extiende para transformarse en una reflexión de tipo lustrosa (glossy) de la fuente lumínica.

MICROFACETAS. Principio de reflexión.

Nos basamos en este principio para comprender el "¿por que?" de aquellos materiales que son mas difusos, glossy o especulares. Las micro-facetas simulan las imperfecciones y rugosidades de las superficies a nivel microscópico. Estos detalles o facetas son causantes de que los rayos de luz se dispersen en diversas direcciones y generen cada tipo de reflexión. En los shaders, esta propiedad de la reflexión, puede ser controlada con el parámetro Roughness (Rugosidad). La rugosidad puede condicionar un material para que se vea pulido, o abultado. Suave o áspero.



ESPECULARIDAD

Cuando se trabaja con este parámetro en los shaders, es muy frecuente cometer el error de creer que el destello especular del material se encuentra en el punto mas brillante del diffuse. Y se edita el shader mirando esa previsualización. Esto es incorrecto ya que la posición de los reflejo especulares son independientes de las características de la difusión. Recordemos que la reflexión difusa se basa en la posición de la superficie y el angulo en relación a la luz que esta percibe. Por el contrario, la reflexión especular puede calcularse teniendo en cuenta únicamente el angulo de visión (cámara) y se basa en el ángulo entre la luz, la superficie y cámara.

Por esta razón decimos que los reflejos especulares son un ejemplo claro de efectos dependientes del punto de vista. Tal como el efecto "fresnel" que veremos mas adelante.

Dado este error conceptual, es muy habitual perder tiempo corrigiendo el aspecto de nuestro shader por que la pre visualización del material no coincide con el acabado final que se percibe en nuestro render. 

Resumiento y aclarando ciertas pautas:

EFECTOS INDEPENDIENTES AL PUNTO DE VISTA:

REFLEXIÓN DIFUSA
SOMBRAS

EFECTOS DEPENDIENTES DEL ANGULO Y POSICIÓN DE LA CÁMARA:

REFLEXIÓN ESPECULAR -GLOSSY
REFRACCIÓN
FRESNEL

BUSCANDO EL REALISMO EN NUESTRO SHADER

Usualmente un error muy frecuente, o cliché, son la exageración de los reflejos y destellos especulares. Estos terminan dando como resultado un aspecto y acabado totalmente falso, por el uso indebido de estos parámetros.

Se puede mejorar sustancialmente el aspecto de nuestros materiales si se trabaja con mayor conciencia, el tamaño, cantidad e intensidad de nuestras reflexiones. Y esto se logra solamente con un estudio cuidadoso del mundo real. De no contar con la pieza a mano, tener imágenes de referencia de diversos ángulos nunca esta de mas. 

Por el contrario, se desaconseja totalmente ajustar los destellos especulares basándose en nociones preconcebidas o en parámetros predefinidos, presets, etc.

COLOR ESPECULAR

Por lo general este es un parámetro que queda en la media, en tonos grises.  El color especular solo se emplea en superficies para piezas metálicas. Donde el brillo especular adquiere y refuerza el color del metal en si.

EFECTO FRESNEL

Para ponernos en contexto, este efecto llamado así por el físico francés Augustin-Jean Fresnel. Es una teoría que se basa en la transmisión de luz en forma de ondas. De este modo, se plantea que la cantidad de luz que se ve reflejada desde una superficie depende del angulo de visión.

Esto supone que es imposible ver la reflexión de una pared pintada cuando se la mira de frente. Sin embargo, al mirarla de lado,  se pueden ver claramente los reflejos de alguna ventana y de alguna fuente de luz por que no. Según Fresnel, la mayoría, si no todas las superficies, se vuelven en cierta medida reflectivas cuando se las mira desde el punto de vista adecuado.

  De este modo, activando este parámetro podríamos generar efectos mas realistas de reflexión. Aunque es importante tener en cuenta que posición tiene dicha pieza en relación a la cámara. Recordemos que si la esta en posición frontal a la cámara, difícilmente el efecto fresnel aporte mucho al calculo de luz. Por otro lado, y no una cuestión menor, el efecto fresnel, añade mas tiempo al calculo de luz al momento de renderizar. Haciendo del shader mas real, pero mas lento de procesar. Por lo que hay que ser cuidadoso como se combina con los demás parámetros.

ANISOTROPÍA/anisotropics

Algunas superficies poseen cierta rugosidad que genera la dispersión de modo tal que dan como resultado reflejos anisotrópicos. Siendo tales aquellos que se alargan en dirección perpendicular a surcos propios del material. Es habitual ver este tipo de reflejos anisotropicos en materiales tal como dvds, y algunos tipos de metal pulido.

TRANSPARENCIA Y REFRACCIÓN

"La refracción es un efecto "raytrace" que proporciona una distorsión a la imagen cuando se contempla a través de la superficie transparente.
De la misma manera que ocurre en una lente óptica, cuando se usa refraction en un modelo 3d, los rayos se focalizan de manera diferente dependiendo de la forma y proporciones del objeto."




CALCULANDO EL INDICE DE REFRACIÓN (ior)



Cuando aplicamos un efecto de refración sobre un modelo 3d, no solo se ve condiocionado por la topología de la malla, espesor, etc. Sino tambien por un factor muy importante denominado como "Indice de refracción" o IOR.
¿Y como trabaja este indice? Cuando nuestro valor en el indice de IOR es 1, es igual a nulo. Es decir, que no se percibe ningun tipo de refracción. Solo transparencia. En cambio, al incrementar gradualmente el valor del IOR, la refracción se hace presente. Ahora bien, ¿que es lo que este efecto genera visualmente? Pues en objetos convexos tales como una esfera, la imagen refractada aumenta tal cual una lente o lupa. Y al trabajar con niveles negativos, la imagen refractada, se achica. Que la imagen refractada en un objeto transparente se achique o agrande, es lo que genera esa sensación de volumen y realismo en objetos como jarras de vidrio con formas organicas y demas.





INDICES DE REFRACCIÓN PARA MATERIALES COMUNES.

AIRE(Desde el agua) = 0.75
Aire/Neutro=1.00

Humo=1.02
Hielo=1.30
Agua=1.33
Vidrio=1.44/1.52
Cuarzo=1.55
Ruby=1.77
Cristal= 2.00

Diamante= 2.42




-------------------------------------------------------------------------------------------------

Hasta aquí llegamos. Próximamente subiré la parte 2. En la que hablare un poco sobre principios básicos de iluminación y composición. 

SLds