Normal map dans Blender : comprendre, utiliser et baker une carte de normales
En bref
Une normal map, ou carte de normales, est une image dont chaque pixel code une direction : rouge pour X, vert pour Y, bleu pour Z. Elle fait réagir la lumière comme si la surface portait un relief, sans ajouter de polygones. Dans Blender, chargez-la dans un nœud Image Texture réglé en Non-Color, reliez-le au nœud Normal Map, puis à l’entrée Normal du Principled BSDF. Pour en créer une, bakez un modèle détaillé vers un modèle léger avec Cycles.
Ne perdez plus de temps sur vos rendus
L'optimisation a ses limites. Quand votre scène Blender devient trop lourde, envoyez-la depuis l'add-on : les images de l'animation sont réparties sur plusieurs GPU.
Contenu d’une normal map, conventions OpenGL et DirectX, branchement, bake avec Cycles et erreurs courantes : les menus cités sont ceux de l’interface anglaise de Blender 5, vérifiés dans le manuel de Blender 5.2.
Qu’est-ce qu’une normal map ?
La normale est la direction perpendiculaire à une surface en un point. Le moteur de rendu s’en sert pour calculer comment la lumière s’y reflète. Une normal map (on écrit aussi normalmap) remplace cette direction, pixel par pixel, par celle qu’enregistre une image. Rayures, pores ou rivets accrochent alors la lumière comme s’ils étaient modélisés.
Le normal mapping est la technique ; la normal map, ou carte de normales, est l’image. La géométrie ne change pas : vu de profil, un mur plat reste plat, et le faux relief ne projette pas d’ombre sur lui-même.
Ce que codent le rouge, le vert et le bleu
La plupart des normal maps sont en espace tangent (Tangent). Chaque point de la surface porte son propre repère : Z sort de la surface, X et Y suivent les directions de la carte UV. Le rouge code X, le vert Y, le bleu Z. Une valeur de 0 à 1 dans l’image devient une direction de -1 à 1 : le code source de Cycles calcule (valeur - 0,5) × 2.
Une surface non modifiée pointe droit vers Z, ce qui s’écrit 0,5 en rouge, 0,5 en vert et 1 en bleu, la couleur par défaut de l’entrée Color du nœud Normal Map. Sur une image 8 bits, à 256 niveaux par canal, cela donne environ 128, 128 et 255 : un bleu lavande. Les zones peu inclinées restent proches de cette couleur, d’où la teinte bleu violet.
Le nœud accepte aussi les espaces Object et World, mais le manuel présente l’espace tangent comme le bon choix dans la plupart des cas : la carte reste valable sur un objet animé.
OpenGL ou DirectX : le canal vert inversé
En OpenGL, l’axe Y du canal vert pointe vers le haut ; en DirectX, vers le bas. Seul le vert change. Selon le manuel, Blender utilise OpenGL par défaut, pour le rendu comme pour le bake. Une carte DirectX lue telle quelle semble éclairée du mauvais côté : une bosse peut passer pour un creux.
Certains sites de textures 3D gratuites fournissent les deux versions, avec GL ou DX dans le nom du fichier : prenez la version GL. Avec une carte DirectX :
- Blender 5.1 et suivants : passez sur DirectX le menu OpenGL du nœud Normal Map (l’option Convention du manuel), arrivé avec la 5.1 selon les notes de version.
- Versions plus anciennes : séparez les canaux avec Separate Color, inversez le vert seul avec Invert Color, puis recomposez avec Combine Color.
- Au bake : le réglage Swizzle permet d’écrire -Y dans le vert pour livrer une carte DirectX.
Utiliser une normal map dans Blender
- Ouvrez le matériau de l’objet dans le Shader Editor, par exemple dans l’onglet Shading.
- Shift+A, Texture, Image Texture, puis Open pour charger le fichier.
- Réglez le Color Space de l’image sur Non-Color : une normal map contient des données codées en couleur, et le manuel demande ce réglage pour un résultat correct.
- Shift+A, Displacement, Normal Map dans Blender 5 (le nœud était dans Vector jusqu’à Blender 4.5). Reliez la sortie Color de l’image à l’entrée Color du nœud.
- Reliez la sortie Normal du nœud à l’entrée Normal du Principled BSDF.
- Vérifiez les menus Tangent Space et OpenGL du nœud. Si l’objet a plusieurs cartes UV, choisissez dans UV Map celle qui a servi à créer la carte.
Strength dose l’effet : à 1, la valeur par défaut, la carte s’applique telle quelle ; à 0, elle n’agit plus ; au-dessus, jusqu’à 10, le relief est accentué. L’entrée Normal du panneau Coat ne touche que le vernis : laissée vide, elle garde un vernis lisse sur une surface en relief. Le guide des textures dans Blender revient sur Image Texture et les UV, le tutoriel sur les textures PBR branche les autres cartes.
Baker une normal map dans Cycles, du high poly au low poly
Le bake transfère le détail d’un modèle lourd, souvent issu d’une sculpture 3D, vers un modèle low poly qui l’enveloppe. Le panneau Bake n’existe que sous Cycles : dans Render Properties, réglez Render Engine sur Cycles.
- Placez les deux modèles au même endroit. Le low poly doit avoir une carte UV sans îlots qui se chevauchent.
- Dans le matériau du low poly, ajoutez un nœud Image Texture, cliquez sur New, choisissez la taille et passez Color Space sur Non-Color. Ne le reliez à rien, mais laissez-le sélectionné : depuis Blender 5.0, le bake n’écrit que dans le nœud Image Texture sélectionné et actif, et chaque matériau de l’objet en a besoin.
- Panneau Bake : Bake Type sur Normal. Sous Influence, Space sur Tangent et Swizzle sur +X, +Y et +Z.
- Cochez Selected to Active. Les rayons partent du low poly vers l’intérieur. Si le high poly dépasse par endroits, augmentez Extrusion, qui gonfle le low poly pour le bake. Max Ray Distance limite la longueur des rayons ; à 0, elle est illimitée.
- Sous Output, réglez Target sur Image Textures. Margin, Size, étend les pixels au-delà du bord des îlots UV.
- En mode Objet, cliquez sur le high poly, puis sur le low poly avec Shift+clic : le dernier sélectionné devient l’objet actif, celui qui reçoit le bake. Cliquez sur Bake.
- L’image n’est pas encore un fichier : dans l’Image Editor, enregistrez-la par Image, Save As (Shift+Alt+S), en PNG ou en OpenEXR : le JPEG perd de la qualité, donc de la précision sur les directions.
Sans cage, les rayons suivent les normales du maillage, ce qui crée des défauts sur les arêtes, prévient le manuel. Cochez Cage pour plus de contrôle : Blender gonfle le low poly de la valeur Cage Extrusion, ou utilise un Cage Object, une copie du low poly retouchée qui garde la même topologie.
Si le détail vient d’un modificateur Multiresolution, Bake from Multires produit la normal map sur le même objet. Le tutoriel sur le texture baking dans Blender détaille ce cas et les autres types de bake.
Bump, normal ou displacement : les différences
- Bump map : une hauteur en niveaux de gris. Le nœud Bump en déduit la normale en lisant la hauteur au point calculé et en deux points voisins.
- Normal map : une direction complète par pixel, sur trois canaux. C’est ce que l’on bake, notamment pour exporter vers un moteur de jeu.
- Displacement : la géométrie est vraiment déplacée. La silhouette change et le relief porte ses ombres, mais le maillage doit être finement subdivisé, ce qui coûte de la mémoire.
Le mode se choisit par matériau, dans Settings, Surface, Displacement : Bump Only par défaut, Displacement Only ou Displacement and Bump. Pour ajouter une bump map à une normal map, reliez la sortie du nœud Normal Map à l’entrée Normal du nœud Bump. Avec un vrai displacement, l’option Base du nœud Normal Map (Blender 5.1 pour Cycles, 5.2 pour EEVEE) choisit Original Base quand normal map et displacement map vont ensemble, Displaced Base pour poser la normal map sur le relief. Le tutoriel sur la displacement map dans Blender détaille le vrai relief.
Erreurs courantes
- Image laissée en sRGB : Blender convertit les valeurs comme celles d’une photo, le 0,5 neutre ne vaut plus 0,5 et toute la surface paraît inclinée. Passez sur Non-Color.
- Relief éclairé du mauvais côté : la carte est en DirectX. Passez le menu OpenGL du nœud sur DirectX, ou inversez le vert.
- Coutures visibles : marge trop faible, ou carte UV modifiée après le bake. Une carte en espace tangent ne vaut que pour les UV qui ont servi à la créer.
- UV qui se chevauchent : deux faces au même endroit de l’image y écrivent toutes les deux. Séparez les îlots, ou laissez Pack Islands les ranger.
- Défauts le long des arêtes : utilisez une cage, et évitez les arêtes séparées, par exemple par un modificateur Edge Split appliqué.
- Rien n’est baké : le nœud Image Texture cible n’est pas sélectionné. Un matériau de l’objet qui n’en a pas est ignoré au bake.
Générer une normal map depuis une photo
Une photo enregistre la couleur et la lumière, pas le relief. Les générateurs simples de normal map, que l’on cherche aussi sous le nom de « normal mapper », comme les deux filtres cités plus bas, partent donc d’une carte de hauteur : la photo en niveaux de gris, où le clair compte comme haut. Une tache sombre devient un creux : le résultat reste une estimation.
Dans Blender, branchez la photo, en Non-Color, sur l’entrée Height d’un nœud Bump relié au BSDF. Pour en tirer un fichier, bakez l’objet en Normal sans Selected to Active, avec un second nœud Image Texture comme cible : d’après son code source, le bake Normal de Cycles enregistre la normale du matériau, bump compris.
Hors de Blender, GIMP propose Filters, Generic, Normal Map, avec Flip X et Flip Y pour corriger l’orientation, et Krita un filtre Height to Normal Map, deux logiciels libres. Des outils en ligne existent aussi : vérifiez la convention de sortie, OpenGL ou DirectX.
Questions fréquentes
Qu’est-ce qu’une normal map ?
Une image dont chaque pixel code une direction de surface : rouge pour X, vert pour Y, bleu pour Z. Le moteur de rendu s’en sert à la place de la normale du maillage, ce qui simule rayures, pores ou rivets sans ajouter de polygones. La silhouette ne change pas.
Pourquoi une normal map est-elle bleue ?
Une surface non modifiée pointe droit vers l’axe Z, ce qui se code 0,5 en rouge, 0,5 en vert et 1 en bleu, soit un bleu lavande. Les zones peu inclinées restent proches de cette couleur, d’où la teinte bleu violet.
Comment savoir si une normal map est en OpenGL ou en DirectX ?
Le nom du fichier l’indique parfois, avec GL ou DX. Sinon, regardez le rendu : si les bosses semblent éclairées du mauvais côté, la carte est en DirectX. Depuis Blender 5.1, passez sur DirectX le menu OpenGL du nœud Normal Map ; avant, inversez le canal vert.
Quelle différence entre une bump map et une normal map ?
La bump map est une hauteur en niveaux de gris : le nœud Bump en déduit la pente au moment du rendu. La normal map stocke directement la direction, sur trois canaux. Aucune des deux ne modifie la géométrie : pour un relief qui change la silhouette, il faut un displacement.
Comment baker une normal map dans Blender ?
Sous Cycles, sélectionnez le modèle détaillé puis le modèle léger, qui doit avoir des UV et un nœud Image Texture sélectionné dans son matériau. Dans Render Properties, panneau Bake, choisissez Bake Type Normal, cochez Selected to Active, réglez Extrusion, cliquez sur Bake, puis enregistrez l’image.
Rendre l'animation sur TURNA
Quand la scène est déjà bien réglée et que c'est le nombre d'images qui prend du temps, le levier restant est de calculer plusieurs images à la fois. TURNA le fait pour Blender : un add-on (Blender 4.0 à 5.2, Cycles et Eevee) envoie la scène en un clic, et les images sont réparties sur 1, 2, 4 ou 8 GPU en parallèle, des RTX 5090 en priorité et des RTX 4090 à défaut. L'add-on affiche le coût estimé avant tout lancement. Le calcul part de 4,90 € l'heure, facturé au temps réellement consommé, 2 minutes minimum (30 secondes jusqu'au 9 novembre), et 25 € sont offerts à l'inscription. Une image fixe reste calculée par une seule machine : le gain porte sur les animations. Les paliers et des exemples chiffrés sont sur la page render farm Blender.
Avant de lancer une animation, le calculateur de temps de rendu estime la durée de la séquence à partir du temps d’une image, mesuré avec les matériaux et les textures finales, et du nombre d’images.


