Overview
The normals of a mesh are vectors perpendicular to the surface that tell the render engine how light should reflect off it. With no normals or wrong normals, an object can look:
- Flat / dull - no lighting variation across the surface
- Faceted - every triangle stands out, no smoothing
- Lit inside out - light hits the wrong side
Replace Normals 3D sits in the stream of a 3D scene and recomputes the normals of every mesh. Lights, cameras and other non-mesh elements pass through unchanged.
Where to find this node
- Effects Library:
Tools > 3D > Replace Normals 3D - Quick add: right-click in the Node Editor →
Add Tool > 3D > Replace Normals 3D
Why you need it
Four typical situations where a mesh's normals are wrong and need to be recomputed:
- After a Displace 3D / Custom Vertex 3D - the geometry was deformed but the normals still point in the old direction. The lighting follows the old shape and looks flat/inconsistent.
- After a badly exported FBX import - some applications export normals inconsistently. Symptom: individually smooth triangles but visible transitions between adjacent triangles.
- After a
Triangulate 3D- triangulating a mesh can break the original smoothing. - For an intentional faceted look - deliberately apply a low smoothing angle to get a stylized low-poly render.
Inputs
- SceneInput (orange) - required. 3D scene or geometry whose normals need to be recomputed.
Setup
Place the node right after the geometry source:
Shape 3D → Displace 3D → Replace Normals 3D → Merge 3D FBX Mesh 3D → Replace Normals 3D → Merge 3D
No need to turn anything on - by default the node recomputes the normals with a standard smoothing angle, which already fixes 80% of cases.
Controls tab
- Pre-Weld Position Vertices (default: off)
- Merges positionally duplicated vertices before computing the normals without changing the output geometry. Essential to fix some OBJ/FBX imports that sometimes store the same vertex several times - the normal recompute then silently fails, and the duplicates create cracks in the smoothing.
- Recompute (default: Always)
- When to recompute the normals:
- Always - recomputes every frame. Guarantees consistency even if the mesh is animated/deformed.
- If Not Present - only computes if the mesh doesn't already have normals. Saves CPU.
- Never - never recomputes. Useful to freeze the normals at the first frame of an animation (otherwise the normals "jitter" from frame to frame).
- Smoothing Angle (in degrees, typically 20° - 60°)
- Adjacent faces whose angle (in degrees) is lower than this value get smoothed edges.
0°- faceted normals (each face independent) → low-poly look.30°- the standard value for a "realistic" mesh with sharp edges.60°- very smooth mesh, few visible edges.360°- maximum smoothing, every edge smoothed (even right angles become rounded).
- Ignore Smooth Groups (default: off)
- Off: respects the existing smooth groups on the mesh (groups of polygons smoothed together). On: ignores the smooth groups and applies smoothing evenly based on the angle. Turn it on if you find the original smooth groups are poorly made.
- Flip Normals (default: off)
- Reverses the direction of the tangent vectors. The effect is mostly visible on meshes that use tangents (normal maps). Useful if a normal map looks visually inverted.
Smoothing Angle in practice
Smoothing Angle is the most visual parameter of the node. It sets the threshold angle below which adjacent faces are smoothed.
Concrete example: a cube
- The 6 faces of the cube form 90° angles with each other.
- With Smoothing Angle = 30° → 30° < 90°, the faces are NOT smoothed → a cube with crisp edges (the expected behavior).
- With Smoothing Angle = 100° → 100° > 90°, the faces ARE smoothed together → a cube that looks round (a strange effect).
Example: a sphere
A sphere is made of triangles with small angles (≈ 10-20° depending on the subdivision). A Smoothing Angle of 30° therefore smooths all of these angles → a perfectly round sphere. Lowering it to 5° would break the smoothing and give a faceted sphere.
Use cases
- Post-Displace fix - the most common case. After a
Displace 3D, place a Replace Normals with Smoothing Angle ≈ 30°. The lighting takes shape again. - Repairing an FBX with broken normals - Pre-Weld Position Vertices on + Smoothing Angle 30° solves most messed-up imports.
- Stylized low-poly look - Smoothing Angle = 0° → an intentional faceted render, a very trendy effect in motion design.
- Smooth procedural modeling - after a
Custom Vertex 3Dhas deformed some geometry, Replace Normals with a high angle for an organic render. - Fixing an inverted normal map - if a normal map texture gives inside-out relief, enable Flip Normals.
- Optimizing a frozen animation - on an animated mesh whose topology doesn't change (only transforms), set Recompute = Never after a stable first frame to save CPU.
Tips & pitfalls
- Pitfall #1 - forgetting to add a Replace Normals after a Displace/Bender/Custom Vertex. The lighting looks "flat" and you look for the problem everywhere except here.
- Smoothing Angle 30° by default - a general rule that works on 90% of meshes. Only adjust it if the result doesn't look right.
- Enable Pre-Weld Position Vertices if the normals look "cracked" - often an import that duplicated vertices.
- Don't stack Replace Normals nodes - one is enough, placed after the last geometry transformation. Several in a row = wasted CPU.
- Flip Normals and complete visual inversion - if the whole mesh looks "inside out" (back face visible, front invisible), an external export has often inverted the normals. Flip Normals fixes it.
- If you want to mix smooth and faceted areas on the same mesh, use smooth groups in the source software instead, and leave Ignore Smooth Groups unchecked.
