Les cartes normales sont l'une des techniques les plus puissantes du rendu en temps réel. Elles permettent aux surfaces polygonales plates d'afficher des détails de surface complexes — bosses, rainures, rayures, pores — sans ajouter un seul triangle supplémentaire au maillage. Une carte normale est une image RGB où chaque pixel encode la direction vers laquelle une surface fait face en ce point, et le moteur de rendu utilise ces informations pour calculer l'éclairage comme si la géométrie était bien plus détaillée qu'elle ne l'est réellement.
Comment les cartes normales encodent la direction
Chaque pixel d'une carte normale stocke un vecteur directionnel 3D empaqueté dans trois canaux de couleur. Le canal rouge encode l'axe X (inclinaison gauche-droite), le canal vert encode l'axe Y (inclinaison haut-bas), et le canal bleu encode l'axe Z (dans quelle mesure la surface pointe directement vers l'extérieur). Une surface plate faisant directement face à la caméra a une normale de (0, 0, 1), qui dans l'espace colorimétrique RGB correspond à (128, 128, 255) — cette couleur bleu-violet caractéristique que vous voyez dans chaque carte normale.
La formule de mappage est simple : chaque canal stocke des valeurs de 0 à 255, représentant la plage −1,0 à +1,0. Une valeur de 128 signifie 0 (pas d'inclinaison), 0 signifie complètement incliné dans la direction négative, et 255 signifie complètement incliné positif. Le moteur de rendu décompresse ces valeurs en vecteurs à virgule flottante et les utilise dans les calculs d'éclairage à la place de la normale géométrique.
Espace tangent vs. espace objet
Cartes normales en espace tangent
Les cartes normales en espace tangent sont de loin le type le plus courant. Elles définissent la perturbation de surface par rapport à l'orientation propre du polygone, en utilisant un système de coordonnées construit à partir de la tangente de surface, de la bitangente et de la normale géométrique. Parce que les directions sont relatives, la même carte normale en espace tangent fonctionne correctement sur n'importe quelle orientation de surface — elle peut être appliquée à un sol, un mur ou un objet courbe et l'éclairage répondra correctement.
Les cartes en espace tangent apparaissent toujours principalement bleues car la plupart des pixels pointent approximativement vers l'extérieur (axe Z dominant). De petites variations en rouge et vert encodent les détails fins de surface.
Cartes normales en espace objet
Les cartes normales en espace objet stockent des directions absolues par rapport au système de coordonnées local de l'objet. Elles apparaissent arc-en-ciel car les normales pointent dans toutes les directions. Les cartes en espace objet sont plus simples à rendre (pas de calcul de repère tangent) et évitent les artefacts d'espace tangent aux joints UV, mais elles sont verrouillées à un maillage spécifique. Déformer ou réutiliser le maillage brise l'éclairage. Elles sont parfois utilisées pour l'architecture statique ou le terrain.
Cartes normales vs. cartes de déplacement
Les cartes normales n'affectent que l'éclairage — elles ne déplacent pas la géométrie. Cela signifie que les bords de silhouette restent parfaitement lisses, et les effets de parallaxe sont absents. Un mur en briques avec une carte normale paraît bosselé de face mais a un profil plat aux angles rasants. Les cartes de déplacement déplacent réellement les sommets, créant une vraie profondeur géométrique avec des silhouettes correctes et l'auto-occlusion. Le compromis est le coût : le déplacement nécessite une tessellation dense et est coûteux dans le rendu en temps réel.
Pour la plupart des applications en temps réel, les cartes normales offrent le meilleur ratio qualité/performance. Utilisez le déplacement uniquement pour les surfaces héroïques en gros plan où la précision des silhouettes compte, ou dans des moteurs de rendu hors ligne comme Cycles ou Arnold où le coût de tessellation est acceptable.
Générer des cartes normales à partir de cartes de hauteur
Une carte de hauteur (niveaux de gris, blanc = haut, noir = bas) peut être convertie en carte normale en calculant le gradient de surface à chaque pixel. L'algorithme échantillonne les pixels voisins pour déterminer la pente en X et Y, puis construit un vecteur normal à partir de ces pentes. L'outil Carte normale sur Texturize fait exactement cela — téléchargez n'importe quelle carte de hauteur en niveaux de gris ou texture, et il génère une carte normale en espace tangent avec une intensité ajustable.
Le paramètre d'intensité contrôle à quel point les bosses perçues sont prononcées. Des valeurs d'intensité faibles produisent une variation de surface subtile (idéale pour les matériaux lisses comme le marbre poli), tandis que des valeurs plus élevées créent des rainures profondes et des bosses prononcées (idéal pour la pierre rugueuse ou l'écorce).
Erreurs courantes
- Mauvais espace colorimétrique — Les cartes normales doivent être importées en données linéaires (Non-Color), jamais en sRGB. Un espace colorimétrique incorrect produit un éclairage délavé ou exagéré.
- Canal vert inversé — OpenGL et DirectX utilisent des conventions d'axe Y opposées. Si votre carte normale paraît inversée (les bosses semblent être des creux), inversez le canal vert. Blender et la plupart des outils DCC utilisent la convention OpenGL ; Unreal Engine utilise DirectX.
- Baking à mauvaise résolution — Les cartes normales bakées de maillages haute définition vers basse définition nécessitent une résolution suffisante pour capturer les détails fins. Des bakes sous-résolus produisent des normales d'aspect bloc.
- Abus de l'intensité — Pousser trop fort l'intensité des cartes normales rend les surfaces artificiellement rugueuses et crée une facettisation visible sous l'éclairage spéculaire.
Conseils pratiques
Combinez une texture de base du Générateur de brique ou du Générateur de pavé avec une carte normale dérivée pour une configuration de matériau complète. Dans Blender, connectez la carte normale via un nœud Normal Map réglé sur Tangent Space. Dans Unreal Engine, connectez-la à l'entrée Normal du matériau après avoir échantillonné avec une expression Normal Map. Testez vos cartes normales sous plusieurs angles d'éclairage — faire pivoter une lumière directionnelle autour de la surface révèle toute erreur de baking ou problème de canal.