Cuando la luz pasa de un medio a otro, por ejemplo del aire al agua, la dirección en la que viaja esa luz se altera en el lugar donde se encuentran los dos medios. Este fenómeno luminoso se denomina refracción y se produce 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 los materiales utilizando la entrada Refracción en el nodo de material principal.
Refracción
Refracción es el término utilizado para describir el cambio de dirección de una onda de luz 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, se desvía o redirige porque esas superficies afectan a la velocidad a la que la luz viaja a través de ellas.
Puedes ver un ejemplo clásico de refracción sumergiendo un lápiz en un cuenco de agua. Parecerá que el lápiz se dobla o cambia de dirección en el punto en que el lápiz se cruza con el agua. La siguiente ilustración muestra cómo funciona la refracción.
X muestra la verdadera posición física del lápiz cuando se sumerge en agua. Los rayos de luz procedentes de la parte sumergida del lápiz se refractan en la interfase aire-agua, cambiando de velocidad y dirección. Desde la perspectiva de la cámara, el lápiz parece doblarse en la superficie del agua, apareciendo la punta en la posición Y en lugar de su verdadera posición X.
Índice de refracción o IOR
El índice de refracción o IOR es una medida óptica que describe hasta qué punto la luz se dobla, o se refracta, cuando entra en un material determinado. El índice de refracción puede medirse, y los valores reales para superficies comunes son bien conocidos. Al crear materiales refractivos en Unreal Engine, es mejor utilizar valores de IOR del mundo real para dar a tus materiales una mayor sensación de realismo. La tabla siguiente enumera los valores de IOR medidos para algunos tipos de superficie habituales.
| Material | Valor de IOR |
|---|---|
| Aire | 1,00 |
| Agua | 1,33 |
| Hielo | 1,31 |
| Plexiglás | 1,49 |
| Vidrio | 1,52 |
| Diamante | 2,42 |
Utilizar la refracción en los materiales
Sigue estas instrucciones para crear un material que utilice la refracción.
Este tutorial utiliza recursos del Contenido de inicio de Unreal Engine. Si no incluiste el Contenido de inicio en tu proyecto, consulta la página Migrar recursos para aprender a migrar el Contenido de inicio a tu proyecto actual.
-
Haz clic con el botón derecho del ratón en el Explorador de contenido y selecciona Material en la sección Crear recurso básico del menú contextual. Cambia el nombre del material por RefracciónMaterial.
-
Haz doble clic en el recurso de material para abrirlo en el editor de materiales.
-
En el panel Detalles, cambia el Modo de mezcla de Opaco a Translúcido. Amplía la sección Translucidez y cambia el Modelo de iluminación de Volumétrico no direccional a Volumen de translucidez de superficie. Al cambiar estos ajustes se activará el conector Refracción en el nodo del material principal. Una vez completado, las propiedades del panel Detalles deberían tener este aspecto.
- Busca los siguientes nodos de expresión de material y añádelos a tu grafo en las cantidades que se indican a continuación. El grafo de materiales debe parecerse a la imagen siguiente.
-
Constante x 3
- Parámetro escalar x 2
- Lerp x 1
- Fresnel x 1

-
-
Empieza a conectar 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 a Opacidad, dale un valor predeterminado de 0,3 y conéctalo a la entrada Opacidad.
-
Cambia el nombre del segundo parámetro escalar IOR y cambia su valor predeterminado a 1,52 (IOR del vidrio). Termina de conectar el material como se muestra en la parte perfilada de la imagen.
Como el vidrio no refracta la luz de la misma manera desde todos los ángulos de visión, se utiliza una expresión de material Fresnel para mezclar los dos valores en el nodo Lerp. El vidrio no refracta tanta luz cuando se mira de frente, pero produce una refracción notable en los ángulos de refracción. El nodo Fresnel reproduce este efecto: el valor de Constante de la entrada A se asigna al centro del material, y el parámetro IOR de la entrada B se asigna a los bordes donde la esfera se curva alejándose de la cámara.
Consulta la página Utilizar Fresnel en materiales para comprender mejor cómo funciona la expresión de material Fresnel.
-
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 activo MaterialRefracción en el Explorador de contenido, haz clic con el botón derecho en la miniatura y selecciona Crear instancia de material en el menú contextual.
-
Coloca algunos objetos en la escena para probar el material. El ejemplo siguiente utiliza activos de la carpeta Formas del Contenido de inicio, pero sirve cualquier objeto. Arrastra el recurso RefractiveMaterial_Inst del Explorador de contenido a las mallas de la 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 RefractionMaterial_Inst para abrirlo en el editor de instancias de materiales. Activa el parámetro IOR marcando la casilla situada junto al nombre del parámetro. Una vez activado, puedes ajustar el IOR en diferentes valores para simular diferentes interacciones con la superficie. El vídeo siguiente muestra cómo cambia la refracción cuando se ajusta el valor a 1,0 (aire), 1,33 (agua), 1,52 (vidrio) y 2,42 (diamante).
Sugerencias y trucos de refracción
Esta sección presenta algunas formas de utilizar la refracción en combinación con otros aspectos del editor de materiales para crear superficies refractivas complejas e interesantes.
Mapas de refracción y normales
Si añades la opción de utilizar un mapa de normales con el material refractivo, obtendrás resultados muy interesantes, sobre todo en las zonas en las que el mapa de normales tenga muchos detalles interesantes. Sigue los pasos que se indican a continuación para modificar el MaterialRefractivo creado anteriormente para que funcione con mapas normales.
-
Primero busca un mapa de normales para utilizarlo. Para este ejemplo se ha utilizado T_Water_N del Contenido de inicio, aunque cualquier textura normal sirve. Abre el recurso MaterialRefracción y arrastra la textura normal desde el Explorador de contenido al grafo de materiales.
-
Haz clic con el botón derecho en el mapa de normales Muestreador de texturas y selecciona Convertir en parámetro. Cambia el nombre del parámetro a Mapa normal y conéctalo a la entrada Normal del nodo de material principal. Al parametrizar la textura, das a los artistas una forma de anularla en una instancia de material sin necesidad de 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 materiales deberías ver ahora el parámetro Mapa de normales en los valores de los parámetros de textura global. Puedes anular el mapa de normales activando el parámetro y eligiendo una textura diferente en el menú desplegable.
-
Cambiando el mapa de normales, puedes modificar la refracción del material de formas interesantes. Aquí tienes algunos ejemplos utilizando solo los mapas normales 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 muchos materiales de efectos visuales, como la neblina térmica, la distorsión de una gran explosión o los efectos de energía.
El grafo siguiente muestra una forma de añadir movimiento de aspecto orgánico a las normales. Duplica el mapa de normales y conéctalo a las entradas A y B de un nodo Lerp. Añade dos expresiones de material Panoramizador al grafo y conéctalas a los UV de las texturas del mapa de normales.
Cambia los valores de los nodos Panoramizador para añadir movimiento a las texturas. Hacer que algunos de los valores sean negativos mueve la textura en la dirección opuesta y es una buena forma de crear un movimiento de aspecto orgánico y aleatorio. Estos son los valores utilizados para los dos panoramizadores de este ejemplo.
El resultado se muestra en el siguiente vídeo. 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.
Compensación de profundidad de refracción
La compensación 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 el lugar donde comienza la refracción. Puedes ajustar la compensación de profundidad de refracción en estos dos lugares.
-
Editor de materiales: puedes encontrar la opción Compensación de profundidad de refracción en el panel Detalles, en la sección Materiales. Tendrás que pulsar el triángulo blanco (resaltado en verde) para exponer esta propiedad.
-
Editor de instancias de materiales: puedes encontrar la opción Compensación de profundidad de refracción en la sección General del panel Detalles.
Conclusión
Añadir refracción a los materiales es una gran manera de obtener resultados de aspecto realista en materiales translúcidos como el cristal y el agua. Recuerda consultar la tabla que aparece al principio del documento y utilizar los valores de IOR correctos para el tipo de superficie que intentas simular. Los valores de IOR proceden de mediciones del mundo real, por lo que subir o bajar el IOR más de lo que se supone que debe ser no es recomendable si buscas realismo. En los efectos visuales y otras aplicaciones con un enfoque más laxo de refracción, siempre puedes experimentar y utilizar valores que se adapten a la estética que desees.