Lorsque la lumière passe d'un milieu à un autre, par exemple de l'air à l'eau, sa direction est modifiée à l'endroit où les deux milieux se rencontrent. Ce phénomène lumineux, appelé réfraction, se produit par le fait que la vitesse d'une onde lumineuse peut changer lorsque la lumière passe dans un autre type de matériau. Dans l'Unreal Engine, vous pouvez simuler ce phénomène d'éclairage dans vos matériaux en utilisant la commande Réfraction sur le nœud de matériau principal.
Réfraction
Réfraction est le terme utilisé pour décrire le changement de direction d'une onde lumineuse suite à une modification de son milieu de transmission. En d'autres termes, lorsque la lumière entre en contact avec certaines surfaces, notamment l'eau ou le verre, elle est déviée ou redirigée, car ces surfaces ont une incidence sur la vitesse à laquelle la lumière les traverse.
Pour obtenir un exemple concret de réfraction, il vous suffit de plonger un crayon dans un bol d'eau. Le crayon semble se plier ou changer de direction à l'endroit où il pénètre dans l'eau. Consultez l'illustration ci-dessous pour savoir comment fonctionne la réfraction.

X indique la véritable position physique du crayon lorsqu'il est plongé dans l'eau. Les faisceaux lumineux provenant de la partie immergée du crayon sont réfractés à l'interface air/eau, changeant ainsi de vitesse et de direction. Du point de vue de la caméra, le crayon semble se plier à la surface de l'eau, la pointe apparaissant à la position Y au lieu de sa véritable position X.
Indice de réfraction (IOR)
L'indice de réfraction, ou IOR, est une mesure optique qui décrit le degré de déviation (ou de réfraction) d'une lumière lorsque celle-ci pénètre dans un matériau particulier. L'indice de réfraction peut être mesuré, et les valeurs réelles pour les surfaces courantes sont bien connues. Lorsque vous créez des matériaux réfringents dans l'Unreal Engine, il est préférable d'utiliser les valeurs IOR du monde réel pour donner à vos matériaux davantage de réalisme. Consultez le tableau ci-dessous pour connaître les valeurs IOR mesurées pour certains types de surfaces courants.
Matériau | Valeur IOR |
---|---|
Air | 1,00 |
Eau | 1,33 |
Glace | 1,31 |
Plexiglas | 1,49 |
Verre | 1,52 |
Diamant | 2,42 |
Utiliser la réfraction dans les matériaux
Procédez comme suit pour créer un matériau qui utilise la réfraction.
Dans ce didacticiel, nous utilisons les ressources du contenu de démarrage d'Unreal Engine. Si vous n'avez pas inclus le contenu de démarrage dans votre projet, consultez la page Migrer les ressources pour savoir comment migrer le contenu de démarrage dans votre projet actuel.
-
Cliquez avec le bouton droit de la souris dans le navigateur de contenu et choisissez Matériau dans la section Créer une ressource de base du menu contextuel. Renommez le matériau RefractionMaterial.
-
Double-cliquez sur la ressource de matériau pour l'ouvrir dans l'éditeur de matériaux.
-
Dans le panneau Détails, changez le mode de fusion de Opaque à Translucide. Développez la section Translucidité et changez le modèle d'éclairage de Volumétrique non directionnel à Volume de translucidité de surface. La modification de ces paramètres active la broche Réfraction sur le nœud de matériau principal. Après avoir modifié ces paramètres, les propriétés du panneau Détails doivent être similaires à celles-ci :
- Recherchez les nœuds de l'expression de matériau suivants et ajoutez-les à votre graphique dans les quantités indiquées ci-dessous. Votre graphique de matériaux doit être similaire à celui illustré ci-dessous.
-
Constante x 3
- Paramètre scalaire x 2
- Lerp x 1
- Fresnel x 1
-
-
Reliez les matériaux comme indiqué ci-après. Remplacez la valeur de constante de Couleur de base et Métallique par 1. Renommez l'un des paramètres scalaires Opacité, attribuez-lui une valeur par défaut de 0,3 et reliez-le à la commande Opacité.
-
Renommez le deuxième paramètre scalaire IOR et remplacez sa valeur par défaut par 1,52 (IOR du verre). Reliez les matériaux comme indiqué dans la partie en surbrillance de l'image.
Dans la mesure où le verre ne réfracte pas la lumière de la même manière sous tous les angles de vue, une expression de matériau Fresnel est utilisée pour fusionner les deux valeurs dans le nœud Lerp. Le verre ne réfracte pas autant la lumière lorsqu'il est vu de face, mais produit une réfraction notable aux angles d'incidence. Le nœud de Fresnel reproduit cet effet : la valeur Constante de la commande A est mappée sur le centre du matériau, et le paramètre IOR de la commande B est mappé sur les bords où la sphère s'éloigne de la caméra.
Consultez la page Utiliser Fresnel dans les matériaux pour mieux comprendre le fonctionnement de l'expression de matériau Fresnel.
-
Cliquez sur Appliquer et sur Enregistrer dans la barre d'outils pour compiler le matériau et enregistrer la ressource. Une fois le matériau enregistré, vous pouvez fermer l'éditeur de matériaux.
-
Recherchez la ressource RefractionMaterial dans le navigateur de contenu, puis cliquez avec le bouton droit de la souris sur la vignette et sélectionnez Créer une instance de matériau dans le menu contextuel.
-
Déposez des objets dans votre scène pour tester le matériau. Dans l'exemple ci-dessous, nous utilisons les ressources du dossier Formes dans le contenu de démarrage, mais n'importe quel objet peut convenir. Faites glisser la ressource RefractiveMaterial_Inst du navigateur de contenu sur les maillages de votre scène. Observez la façon dont la sphère semble réfracter la lumière sur les bords, mais pas au centre où la géométrie est directement face à la caméra. C'est le résultat de la logique de Fresnel décrite ci-dessus.
-
Double-cliquez sur la ressource RefractionMasterial_Inst pour l'ouvrir dans l'éditeur d'instances de matériaux. Activez le paramètre IOR en cochant la case en regard du nom du paramètre. Une fois activé, vous pouvez définir l'IOR sur différentes valeurs pour simuler différentes interactions de surface. Visionnez la vidéo pour comprendre les différences de réfraction selon que la valeur est définie sur 1,0 (air), 1,33 (eau), 1,52 (verre) et 2,42 (diamant).
Conseils relatifs à la réfraction
Dans cette section, nous vous expliquons comment utiliser la réfraction en combinaison avec d'autres aspects de l'éditeur de matériaux pour créer des surfaces réfringentes complexes et intéressantes.
Réfraction et cartes de normales
L'ajout d'une option permettant d'utiliser une carte de normales avec votre matériau réfringent donne des résultats très intéressants, notamment dans les zones où la carte de normales présente beaucoup de détails intéressants. Procédez comme suit pour modifier le matériau réfringent créé ci-dessus afin qu'il fonctionne avec les cartes de normales.
-
Recherchez tout d'abord une carte de normales à utiliser. Pour cet exemple, nous avons utilisé T_Water_N du contenu de démarrage, mais n'importe quelle texture de normale peut convenir. Ouvrez la ressource RefractionMaterial et faites glisser la texture de normale du navigateur de contenu dans le graphique des matériaux.
-
Cliquez avec le bouton droit de la souris sur l'échantillonneur de texture de la carte de normales et sélectionnez Convertir en paramètre. Renommez le paramètre Carte de normales et reliez-le à la commande Normale** du nœud de matériau principal. En paramétrant la texture, vous donnez aux artistes un moyen de la remplacer dans une instance de matériau sans modifier le matériau parent.
-
Cliquez sur Appliquer et sur Enregistrer dans la barre d'outils, puis fermez le matériau.
-
Le paramètre Carte de normales doit désormais figurer dans l'éditeur d'instances de matériaux, sous Valeurs des paramètres de la texture globale. Vous pouvez remplacer la carte de normales en activant ce paramètre et en choisissant une texture différente dans le menu déroulant.
-
En modifiant la carte de normales, vous pouvez changer la réfraction du matériau de manière intéressante. Voici quelques exemples utilisant uniquement les cartes de normales que vous trouverez dans le dossier Textures du contenu de démarrage.
Réfraction et mouvement
La combinaison de la réfraction et du mouvement est un élément clé de nombreux types de matériaux. Les ondulations sur l'eau en sont un exemple, mais cette technique est également utile dans de nombreux matériaux VFX tels que la brume de chaleur, la distorsion suite à une explosion ou les effets d'énergie.
Le graphique ci-dessous vous montre comment ajouter un mouvement organique aux normales. Dupliquez la carte de normales, puis reliez-les aux commandes A et B d'un nœud Lerp. Ajouter deux expressions de matériau Fenêtre panoramique au graphique, puis reliez-les à l'UV de la texture de la carte de normales.

Modifiez les valeurs des nœuds Fenêtre panoramique pour ajouter du mouvement aux textures. Sélectionnez des valeurs négatives pour voir la texture se déplacer dans la direction opposée, ce qui permet de créer efficacement un mouvement organique et aléatoire. Voici les valeurs utilisées pour les deux fenêtres panoramiques dans cet exemple.

Visionnez la vidéo ci-dessous pour voir le résultat. Dans son état actuel, la texture ressemble à un fluide huileux d'aspect métallique mais avec quelques modifications, elle peut servir de base à un matériau aqueux.
Polarisation de la profondeur de réfraction
La polarisation de la profondeur de réfraction est un moyen d'empêcher le rendu des objets les plus proches dans la surface déformée aux angles de vue aigus. Cependant, ce paramètre peut augmenter le décalage entre la surface et l'endroit où la réfraction commence. Vous pouvez régler la polarisation de la profondeur de réfraction aux deux emplacements suivants.
-
Éditeur de matériaux - Le paramètre Polarisation de la profondeur de réfraction se trouve dans le panneau Détails sous la section Matériau. Vous devez appuyer sur le triangle blanc (surligné en vert) pour exposer cette propriété.
-
Éditeur d'instances de matériaux - Le paramètre Polarisation de la profondeur de réfraction se trouve dans la section Général du panneau Détails.
Conclusion
Ajouter de la réfraction à vos matériaux est un excellent moyen d'obtenir des résultats réalistes pour les matériaux translucides comme le verre et l'eau. N'oubliez pas de consulter le graphique en haut du document et d'utiliser les valeurs IOR correctes pour le type de surface que vous tentez de simuler. Étant donné que les valeurs d'IOR sont basées sur des mesures réelles, nous vous déconseillons de définir l'indice de réfraction sur des valeurs supérieures ou inférieures aux valeurs recommandées pour gagner en réalisme. Dans VFX et dans d'autres applications de réfraction moins strictes, vous pouvez bien sûr expérimenter et utiliser les valeurs qui conviennent à l'aspect que vous souhaitez obtenir.