Aperçu
Les normalesd'un mesh sont des vecteurs perpendiculaires à la surface qui indiquent au moteur de rendu comment la lumière doit s'y refléter. Sans normales ou avec des normales incorrectes, un objet peut paraître :
- Plat / mat - aucune variation de lighting sur la surface
- Facetté - chaque triangle distinct, pas de smoothing
- Éclairé à l'envers - lumière reçue sur la mauvaise face
Le Replace Normals 3D intervient en transit sur une scène 3D et recalcule les normales pour tous les meshes. Les lumières, caméras et autres éléments non-mesh transitent sans modification.
Où trouver ce node
- Effects Library :
Tools > 3D > Replace Normals 3D - Ajout rapide : clic droit dans le Node Editor →
Add Tool > 3D > Replace Normals 3D
Pourquoi on en a besoin
Quatre situations typiques où les normales d'un mesh sont incorrectes et nécessitent un recalcul :
- Après un Displace 3D / Custom Vertex 3D - la géométrie a été déformée mais les normales pointent encore dans l'ancienne direction. Le lighting suit l'ancienne forme et donne un aspect plat/incohérent.
- Après un import FBX mal exporté - certains logiciels exportent les normales de façon non-cohérente. Symptôme : triangles individuellement lisses mais transitions visibles entre triangles adjacents.
- Après un
Triangulate 3D- la triangulation d'un mesh peut casser le smoothing d'origine. - Pour un look facetté voulu - appliquer volontairement un smoothing angle faible pour obtenir un rendu low-poly stylisé.
Inputs
- SceneInput (orange) - requis. Scène 3D ou géométrie dont les normales doivent être recalculées.
Configuration
Placez le node juste après la source de géométrie :
Shape 3D → Displace 3D → Replace Normals 3D → Merge 3D FBX Mesh 3D → Replace Normals 3D → Merge 3D
Pas besoin d'activer quoi que ce soit - par défaut le node recalcule les normales avec un smoothing angle standard, ce qui corrige déjà 80% des cas.
Onglet Controls
- Pre-Weld Position Vertices (défaut : désactivé)
- Fusionne les vertices positionnellement dupliqués avant le calcul des normales sans modifier la géométrie en sortie. Indispensable pour corriger certains imports OBJ/FBX qui stockent parfois le même vertex plusieurs fois - le recalcul de normales échoue alors silencieusement, et les doublons créent des craquelures dans le smoothing.
- Recompute (défaut : Always)
- Quand recalculer les normales :
- Always - recalcule à chaque frame. Garantit la cohérence même si le mesh est animé/déformé.
- If Not Present- ne calcule que si le mesh n'a pas déjà des normales. Économise du CPU.
- Never - ne recalcule jamais. Utile pour figer les normales à la première frame sur une animation (sinon les normales « tremblent » de frame en frame).
- Smoothing Angle (en degrés, typiquement 20° – 60°)
- Les faces adjacentes dont l'angle (en degrés) est inférieur à cette valeur voient leurs arêtes lissées.
0°- normales facettées (chaque face indépendante) → look low-poly.30°- valeur standard pour un mesh « réaliste » avec arêtes vives.60°- mesh très lissé, peu d'arêtes visibles.360°- smoothing maximal, toutes les arêtes lissées (même les angles droits deviennent arrondis).
- Ignore Smooth Groups (défaut : désactivé)
- Désactivé : respecte les smooth groups existants sur le mesh (groupes de polygones lissés ensemble). Activé : ignore les smooth groups et applique le smoothing uniformément selon l'angle. Activez si vous trouvez que les smooth groups d'origine sont mal faits.
- Flip Normals (défaut : désactivé)
- Inverse la direction des vecteurs tangentes. Effet principalement visible sur les meshes qui utilisent des tangentes (normal maps). Utile si un normal map apparaît inversé visuellement.
Smoothing Angle en pratique
Le Smoothing Angle est le paramètre le plus visuel du node. Il gère l'angle-seuil au-dessous duquel les faces adjacentes sont lissées.
Exemple concret : un cube
- Les 6 faces du cube forment des angles de 90° entre elles.
- Avec Smoothing Angle = 30° → 30° < 90°, les faces ne sont PAS lissées → cube aux arêtes nettes (comportement attendu).
- Avec Smoothing Angle = 100° → 100° > 90°, les faces SONT lissées entre elles → cube qui paraît rond (effet étrange).
Exemple : une sphère
Une sphère est faite de triangles aux angles faibles (≈ 10–20° selon la subdivision). Un Smoothing Angle de 30° lisse donc tous ces angles → sphère parfaitement ronde. Baisser à 5° casserait le smoothing et donnerait une sphère facettée.
Cas d'usage
- Correction post-Displace - le cas le plus fréquent. Après un
Displace 3D, placez un Replace Normals avec Smoothing Angle ≈ 30°. Le lighting reprend forme. - Réparation d'un FBX à normales cassées - Pre-Weld Position Vertices activé + Smoothing Angle 30° résout la plupart des imports foireux.
- Look low-poly stylisé - Smoothing Angle = 0° → rendu facetté volontaire, effet très à la mode en motion design.
- Modeling procédural lissé - après un
Custom Vertex 3Dqui a déformé une géométrie, Replace Normals avec angle élevé pour un rendu organique. - Fix de normal map inversé- si une texture normal map donne un relief à l'envers, activer Flip Normals.
- Optimisation pour animation figée - sur un mesh animé dont la topologie ne change pas (juste des transforms), Recompute = Never après une première frame stable pour économiser du CPU.
Astuces & pièges
- Le piège n°1 - oublier de mettre un Replace Normals après un Displace/Bender/Custom Vertex. Le lighting semble « plat » et on cherche le problème partout sauf ici.
- Smoothing Angle 30° par défaut - règle générale qui fonctionne sur 90% des meshes. Ajustez seulement si le résultat ne convient pas.
- Activez Pre-Weld Position Vertices si les normales paraissent « craquelées » - souvent un import qui a dupliqué des vertices.
- Ne multipliez pas les Replace Normals - un seul suffit, placé après la dernière transformation de géométrie. Plusieurs en cascade = gaspillage de CPU.
- Flip Normalset inversion visuelle totale - si tout le mesh apparaît « à l'envers » (face arrière visible, front invisible), c'est souvent qu'un export externe a inversé les normales. Flip Normals corrige.
- Si vous voulez mélanger des zones lissées et des zones facettées sur un même mesh, utilisez plutôt des smooth groups côté logiciel source, et laissez Ignore Smooth Groups décoché.
