Fresnel/Diélectricos (Blender Cycles)

Estaba escribiendo un tema sobre PBR, pero llegue a la teoría del fresnel y como es tan extensa, decidí mejor explicarlo por separado.

Fresnel: 

Este efecto produce que la reflexión especular en los ángulos cercanos a los 90° de un objeto se incremente hasta casi un 100%. En cycles nuestra reflexión especular la reproduce el GlossyBSDF.

002

Con el Mixshader controlamos la cantidad de reflexión especular.

001

Con el Mixshader podemos controlar el porcentaje de reflexión especular de manera uniforme.

Dieléctricos (No metales): 

La teoría del PBR nos dice que los materiales dieléctricos tienen un porcentaje de reflexión especular base de 2% como mínimo y 5% como máximo, y en el caso de gemas desde 5% hasta 17%. Con el Mixshader podemos fácilmente ajustar esos valores, pero no el efecto fresnel.

Aun así, en cycles tenemos un nodo que nos facilita el efecto fresnel, este produce una reflexión base y la incrementa según se acerca a los ángulos cercanos a 90°. Este nodo crea una operación donde el indice de refracción define la reflexión base.

Para comprender mas esto, construí un nodo fresnel basado en la fórmula de Schlick. No soy bueno con las matemáticas y siempre pensé que no me servirían de nada, por lo que sacar estas formulas me llevo tiempo XD.

Schlick's approximation

Con la primera creamos un falloff o efecto fresnel y con la segunda la reflectividad base entre 2 indices de refracción.

003
Para el falloff me guié con la ayuda de nodos de UnrealE4

Ahora puedo comparar la composición de nodos basados en la fórmula Schlick y el nodo fresnel que tiene cycles.

004

Los 2 fresnel son casi iguales, pero como no se como esta construido el que tiene por defecto cycles, no puedo marcar a que se debe la diferencia.

Ahora haré una prueba a los 2 fresnel, para comprobar si los valores de reflectividad concuerdan con el indice de refracción.

Para esto escogí un material de la pagina Refractiveindex, el poliestireno.

005
IOR: 1.5959

Para ver los valores del fresnel, abro las imágenes en photoshop a 32bits por canal.

006
IOR:1.596 (El nodo redondea el valor).
007
IOR:1.596 (El nodo redondea el valor).

Como podemos ver en los resultados, ambos fresnel se acercan increíblemente a la curva del material de  Refractiveindex.

Estos valores son los que interpretará el Mixshader para distribuir la reflexión especular en nuestro material dieléctrico. La reflexión base sería de 5% incrementándose hasta  un 40% en en el angulo cercano a 80°. Para poder ver cerca de el angulo de 90°, tuve cambiar la perspectiva de la cámara a 200mm y el resultado fue de un 70%.

Variables en el efecto fresnel:

Roughness: Este simula imperfecciones en la superficie, lo que produce que los rayos de luz se dispersen mas y sea menos visible el efecto fresnel.

Normal map: Si este cuenta con detalles de grietas o pequeñas cavidades, el fresnel puede ocasionar reflexiones especulares muy altas en dichas zonas que no son físicamente correctas, dado que cierta cantidad de luz se perdería en esas cavidades.

Con toda esta información construí mi nodo fresnel, a continuación les explicaré las opciones que le agregue y como utilizarlo.

008.png

IOR:Controlamos el indice de refracción, generando una reflexión base según la formula.

009
IOR

Enable%: Con esta opción podemos intercambiar entre usar IOR  o usar Percent%. En 0.000 solo se ve reflejado el uso de IOR y en 1 solo el uso de  Percent%. Aunque se pueden usar valores intermedios entre 0.000 y 1.000, de hacerse, produciría una mezcla de IOR y Percent%, lo que generaría resultados incorrectos. (Solo usar 0.000 y 1.000)

Percent%: Para hacer mas sencillo el uso del fresnel, ajuste esta opción para usar porcentajes, en vez del IOR. Por ejemplo, 2.000=2%, 5.000=5%, 10.000=10%. El valor mínimo es 2% y el máximo 17%.

Fresnel: Aquí controlamos el efecto fresnel. Si disminuimos el valor hasta 0.000 el fresnel desaparece, dejando solo la reflectividad base. (Valor correcto 1.000)

010
Fresnel

MaskNormal: Esta opción crea una mascará para el normal map. Disminuye la fuerza del fresnel, sin modificar la reflectividad base.

011
MaskNormal

XFresnel: Esta opción es solo para jugar con el fresnel. (El valor correcto es 1.000)

012
XFresnel

 

Este es el nodo que mas me ha costado y a su vez gustado hacer. Quede bastante satisfecho con el resultado y espero que les sea útil.

Link de Descarga CrisartFresnel

 

 

Toda la información en la que me guié proviene de Ue4, Unity, Renderman, SubstanceDesigner, Marmoset, Sébastien Lagarde, SketchFab, FrostBite, Scratchapixel, Polycount, FilmicGames, FilmicWorlds, dougvfx, hiagodesen, blenderWiki, Wikipedia, entre otros.

 

 

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

Subir ↑