Cuando la luz pasa de un medio a otro, por ejemplo del aire al agua, la dirección en la que viaja la luz se altera en el lugar donde se encuentran los dos medios. Este fenómeno de iluminación se conoce como refracción y ocurre porque la velocidad de una onda de luz puede cambiar cuando la luz pasa a un tipo diferente de material. En Unreal Engine puedes simular este fenómeno de iluminación en tus materiales con la entrada Refracción en el Nodo principal de material.
Refracción
Refracción es el término utilizado para describir el cambio de dirección de una onda luminosa debido a un cambio en su medio de transmisión. En otras palabras, cuando la luz entra en contacto con determinadas superficies, como el agua o el cristal, la luz se desvía o redirige porque esas superficies afectan a la velocidad a la que la luz viaja a través de ellas.
Un ejemplo clásico de refracción es sumergir un lápiz en un recipiente con agua. El lápiz parecerá doblarse o cambiar de dirección en el punto donde el lápiz se cruza con el agua. La siguiente ilustración muestra cómo funciona la refracción.
X muestra la posición física real del lápiz cuando se sumerge en el agua. Los rayos de luz procedentes de la parte sumergida del lápiz se refractan en la interfaz entre aire y agua, lo que cambia su velocidad y dirección. Desde la perspectiva de la cámara, el lápiz parece doblarse en la superficie del agua, y la punta aparece en la posición Y en lugar de en su verdadera posición X.
Índice de refracción (IOR)
El índice de refracción (Index of Refraction, IOR) es una medida óptica que describe el grado en que la luz se dobla, o se refracta, cuando entra en un material determinado. El índice de refracción puede medirse y los valores reales de las superficies más comunes son bien conocidos. Al crear materiales refractivos en Unreal Engine, es mejor utilizar valores de IOR reales para dar a los materiales una mayor sensación de realismo. La siguiente tabla muestra los valores de IOR medidos para algunos tipos de superficie comunes.
| Material | Valor de IOR |
|---|---|
| Aire | 1,00 |
| Agua | 1,33 |
| Ice | 1,31 |
| Plexiglass | 1,49 |
| Cristal | 1,52 |
| Diamante | 2,42 |
Cómo usar la refracción en los materiales
Sigue estas instrucciones para crear un material que use la refracción.
Este tutorial utiliza recursos del Contenido de inicio de Unreal Engine. Si no incluiste el Contenido de inicio en tu proyecto, lee la página Migración de recursos para aprender a migrar el contenido de inicio a tu proyecto actual.
-
Haz clic derecho en el Explorador de contenido y selecciona Material en la sección Crear recurso básico del menú contextual. Nombra el material RefractionMaterial.
-
Haz doble clic en el recurso de material para abrirlo en el Editor de materiales.
-
En el panel Detalles, cambia el Modo de fusión de Opaco a Translúcido. Expande la sección *Translucidez y cambia el Modelo de iluminación de Volumétrico no direccional a Volumen de translucidez de superficie. El cambio de esta configuración habilitará el pin de Refracción en el Nodo principal de material. Una vez completado, las propiedades de tu panel Detalles** deberían tener el siguiente aspecto.
- Busca los siguientes nodos de Expresión de material y agrégalos a tu gráfico en las cantidades indicadas a continuación. Tu gráfico de material debe parecerse a la siguiente imagen.
-
Constante x 3
- Parámetro escalar x 2
- Lerp x 1
- Fresnel x 1

-
-
Comienza a cablear el material como se muestra a continuación. Cambia el valor Constante que fluye en Color base y Metálico a 1. Cambia el nombre de uno de los Parámetros escalares Opacidad, dale el valor predeterminado de 0,3 y conéctalo a la entrada de Opacidad.
-
Cambia el nombre del segundo Parámetro escalar IOR y cambia su valor predeterminado a 1,52 (el IOR del cristal). Termina de cablear el material como se muestra en la parte contorneada de la imagen.
Debido a que el cristal no refracta la luz de la misma manera desde todos los ángulos de visión, se utiliza una expresión de material de Fresnel para mezclar los dos valores en el nodo Lerp. El cristal no refracta tanta luz cuando se mira de frente, pero produce una refracción notable en ángulos de visión oblicuos. El nodo de Fresnel reproduce este efecto; el valor Constante en la entrada A se mapea al centro del material, y el parámetro IOR en la entrada B se mapea a los bordes donde la esfera se curva alejándose de la cámara.
Lee la página sobre Cómo usar Fresnel en los materiales para comprender mejor cómo funciona la expresión de Fresnel en los materiales.
-
Haz clic en Aplicar y Guardar en la barra de herramientas para compilar el material y guardar el recurso. Una vez guardado el material, puedes cerrar el Editor de materiales.
-
Busca el recurso RefractionMaterial en el Explorador de contenido, haz clic derecho en la miniatura y selecciona Crear instancia de material en el menú contextual.
-
Coloca algunos objetos en tu escena para probar el material. En el ejemplo siguiente, se utilizan recursos de la carpeta Formas del Contenido de inicio, pero cualquier objeto es adecuado. Arrastra el recurso RefractiveMaterial_Inst desde el Explorador de contenido a las mallas de tu escena. Observa cómo la esfera parece refractar la luz en los bordes, pero no en el centro, donde la geometría está directamente delante de la cámara. Este es el resultado de la lógica de Fresnel descrita anteriormente.
-
Haz doble clic en RefractionMasterial_Inst en el Editor de instancias de material. Habilita el parámetro IOR al marcar la casilla junto al nombre del parámetro. Una vez habilitado, puedes establecer el IOR en diferentes valores para simular diferentes interacciones con la superficie. El siguiente video muestra como cambia la refracción cuando el valor se establece en 1,0 (aire); 1,33 (agua); 1,52 (cristal) y 2,42 (diamante).
Consejos y trucos de refracción
En esta sección, se presentan algunas formas de utilizar la refracción en combinación con otros aspectos del Editor de materiales para crear superficies refractivas complejas e interesantes.
Refracción y Normal Maps
Añadir una opción para utilizar un Normal Map con su material refractivo producirá algunos resultados muy interesantes, especialmente en áreas donde el Normal Map tiene una gran cantidad de detalles interesantes. Sigue los pasos mencionados a continuación para modificar el RefractiveMaterial creado anteriormente a fin de que funcione con Normal Maps.
-
Primero encuentra un Normal Map para usar. Para este ejemplo, se utilizó T_Water_N del Contenido de inicio, sin embargo cualquier textura normal funcionará. Abre el recurso RefractionMaterial y arrastra la textura normal del Explorador de contenido al Gráfico de materiales.
-
Haz clic derecho en el Muestrario de texturas del Normal Map y selecciona Convertir en Parámetro. Cambia el nombre del parámetro a Normal Map y conéctalo a la entrada Normal del Nodo principal de material. Al parametrizar la textura, le das a los artistas una manera de anularla en una Instancia de material sin editar el material principal.
-
Haz clic en Aplicar y Guardar en la barra de herramientas y, luego, cierra el Material.
-
En el Editor de instancias de material ahora debería ver el parámetro Normal Map en la lista de Valores globales de parámetros de textura. Puedes anular el Normal Map si activas el parámetro y eliges una textura diferente en el menú desplegable.
-
Si cambias el Normal Map, podrás cambiar la refracción del Material de formas interesantes. Aquí hay algunos ejemplos en los que se utilizan solo los Normal Maps que puedes encontrar en la carpeta Texturas del Contenido de inicio.
Refracción y movimiento
Combinar la refracción con el movimiento es un componente clave en muchos tipos de materiales. Las ondulaciones en el agua son un ejemplo, pero la técnica es igualmente útil en una gran cantidad de Materiales de efectos visuales como la neblina de calor, la distorsión de una gran explosión, o efectos de energía.
El siguiente gráfico muestra una forma de añadir movimiento orgánico a las normales. Duplica el Normal Map, y conéctalos a las entradas A y B en un nodo Lerp. Añade dos Expresiones de material de Panner al gráfico y conéctalas a los UV de las texturas del Normal Map.
Gráfico de animación del Normal Map
Cambia los valores de los nodos de Panner para añadir movimiento a las texturas. Si algunos valores son negativos, la textura se mueve en la dirección opuesta y es una buena forma de crear un movimiento orgánico y aleatorio. Estos son los valores utilizados para los dos Panners en este ejemplo.
El resultado se muestra en el siguiente video. En su estado actual parece un fluido aceitoso de aspecto metálico, pero con algunas modificaciones podría ser la base de un Material acuoso.
Sesgo de profundidad de refracción
El sesgo de profundidad de refracción es una forma de evitar que los objetos más cercanos se representen en la superficie distorsionada en ángulos de visión agudos. Sin embargo, esto puede aumentar la desconexión entre la superficie y donde comienza la refracción. Puedes ajustar el Sesgo de profundidad de refracción en los dos siguientes lugares.
-
Editor de materiales: puedes encontrar el Sesgo de profundidad de refracción en el panel Detalles en la sección Material. Deberás presionar el triángulo blanco (resaltado en verde) para exponer esta propiedad.
-
Editor de instancias de material: puedes encontrar el Sesgo de profundidad de refracción en la sección General del panel Detalles.
Conclusión
Añadir refracción a tus materiales es una gran manera de obtener resultados realistas para materiales translúcidos como el cristal y el agua. Recuerda consultar la tabla al principio del documento y utilizar los valores correctos de IOR para el tipo de superficie que estás intentando simular. Los valores de IOR provienen de mediciones del mundo real, por lo que no es recomendable subir o bajar el IOR por encima o por debajo de lo que se supone que debe ser si buscas realismo. En VFX y otras aplicaciones de la refracción más laxas, puedes experimentar y utilizar valores que se adapten a tu estética deseada.