Skip to content

Laplacian Smooth Normals Modifier Parameters

This section describes the inputs of the Laplacian Smooth Normals modifier and suggested settings.

!Laplacian Smooth Normals Modifier

Using Attribute Normals instead of Custom Normals

The Addon stores the calculated Normals as an attribute called '_GN_Custom_Normals'. Instead of setting Custom Normals with the addon (or node in 4.5), this Attribute can be used directly in your material via the Attribute Node. Be sure to use a vector math Normalize Node, then plug it into the Normal Sockets of any nodes you want to use it. Inverting the Normal on backfaces is also recommended. If your Objects have transforms, they are not included in the Attribute unless 'Apply Object Transforms' is checked on the Laplacian Smooth modifier.

Blender 4.5+

Blender 4.5 added the ability to set Custom Normals directly from Geometry Nodes via the Set Mesh Normal Node. The options of this node have been surfaced on both the Laplacian Smooth and Face Proxy Modifiers. The default 'Free' Normals mode gives the same behavior as before. The 4.5 version of the addon removes the Preview feature, as it is no longer necessary for the addon to set the Custom Normals via Python.

Attribute Normals

Input Attributes

Several parameters mention the "Input Attribute Toggle" button. This button allows you to use a Vertex Group or Color Attribute to control the parameter's effect on different parts of your mesh. When enabled, you'll be able to select the attribute to use.

The modifier uses Face Corners as they allow different values on different sides of edges, which is necessary for Sharp or Split Normals without altering the geometry. Be aware of how Vertex Groups and Colors will be evaluated. If you use a Vertex Group, it will put the same value on all Corners connected to that Vertex. If you use Vertex Colors set to Face mode, then you can paint different values on different sides of edges, or different corners of the same face. Or you can use a Face Corners attribute and the Set Attribute command.

For convenience, the Laplacian Smooth modifier includes the Corner Weights from Vertex Group modifier. It will be automatically added when the Laplacian Group is. This modifier can be used to convert several Vertex Groups to Faces only, which stops their value from spilling onto adjacent faces. Place it before the Laplacian Smooth modifier if you need this more precise behavior for any of your input attributes.

Corner Weights from Group-1 Caption: Default behavior of a Vertex Group vs when restricted to only Faces with all of their vertices in the group by the Corner Weights from Vertex Group modifier.

Note on major v2.1.0 changes

Most of the modifier has been reworked. It now runs based on Face Corners instead of Edges and Vertices and uses virtual triangulation and ID groups for accumulation. These are the same methods used by Blender's Normals system when using Autosmooth and Sharp edges, and allow the same results as before but without needing to make changes to the geometry. This greatly improves performance unless your mesh is already triangulated and edge split, and allows quad meshes to achieve higher quality as usual. Many of the input parameters have been reworked as old ones were no longer necessary and some new options are now possible, but the general useage remains the same. If you need to make geometry changes still, use the regular modifiers like Weld and Triangulate.

Note on topology requierments

Quad meshes are now supported via virtual triangulation, but ngons are not. They mostly work, but it is best to avoid them. For a quick fix, add a Triangulate modifier before the Laplacian Smooth and set its Minimum Vertices to 5 so it only triangulates ngons.

Degenerate Triangles must also be avoided. Faces with 0 area cannot produce proper Normals or smoothing weights. This can happen when two or more vertices of the face are in the same position, or three are in a perfectly straight line, and some other situations. The Modifier includes Warnings if these sorts of faces exist in the mesh. Edit Mode has tools to select them.

Calculate Normals

Calculate Mesh Normals with control over Sharps, Area Weights, and Boundaries. Basic Normal calculation matches Blender's.

Apply Object Transforms

Rotates and Scales the Normals based on Object Transformations. Use this if using the Normals via the Attribute Node in your materials. If setting the Custom Normals via the addon in 4.3 or Store Normals option in 4.5, this is not necessary as it will be done automatically.

Split Masked Sharp Edges

Splits the Normals on Sharp edges, the same as Blender usually does.

Mark Sharp by Angle

Mark edges with face angles above the threshold as Sharp, the same as Blender's Smooth by Angle modifier or Autosmooth.

Use Area Weights

Weight the Normals based on face areas in addition to the default Corner Angle Weights that Blender uses. this causes larger faces to have more influence, which is good for hardsurface situations like a cube with small beveled edges that would otherwise smooth too much.

Invert Area Weights

Inverts the area weights, causing smaller faces to have higher influence. Compensates for uneven face sizes. Good for areas like curved surfaces that need to stay clean but couldn't have evenly spaced quad topology.

Boundary Extrapolation Fac

Fixes problems at mesh boundaries on smooth curved surfaces. The Normals of the interior corners of the face are transferred to the boundary corners and Reflected outwards. This extrapolates the curvature as if there was another loop of faces. Ignored if both sides of the face are boundaries as it will fail. Works poorly on mesh corner triangles that do not have an edge connecting to the interior.

Fill Incomplete Normal

Mixes the Calculated Normals with this Attribute based on its Vector Length. If you have a Normal and scaled it with a mask, it would be less than length 1. Anywhere it is 0 would get the full value of the new Normals. Anywhere it is 0.5 would be an even mix, etc. Used for the Face Proxy Normals by default. Is a visible parameter to allow changes to the Face Proxy Normals attribute name, or use with other geonodes Normals Attributes. But if you want to mix the Laplacian Smoothed Normals with some other Attribute, it is better to do it with your own modifier placed after.

Laplacian Smooth

Smoothing with compensation for irregular Topology. In each iteration the current Normal on each Corner is mixed with the average of its connected neighbors (with Cotangent Weighting).

Smooth Iterations

How many times to Smooth. Recommend 2-5 minimum. To avoid performance problems when scrubbing the value, the field only goes to 9, and has a separate Max Iterations setting of 9 that can be changed from the addon panel or in the node group. Once changed, entering a value above 9 will work. Dense meshes need more as there is no compensation for vertex density. Some meshes may want 50, or even 100 iterations. This will get slow on most machines and is not suggested to leave on in the viewport. The performance cost of each additional iteration is the same, but most of the cost is precomputing things that must be done even if there is only 1 iteration. If subdividing, double the iterations per subdivision level to get an equivalent shape.

Smooth Mix Fac

Mix between the original Normals and Laplacian Smoothed Normals. Can be used for convenient masking.

Scale Strength

Multiplies the Application Strength and Momentum Smoothing up to x3. This allows stronger smoothing at the cost of accuracy and stability, which can let you achieve a smooth result in fewer iterations. Higher strength increases the chance of Stability issues, which is why this also scales the Momentum Smoothing. But this increase isn't linear, so you can often reduce the momentum strength setting a bit if using a large scale. Note that Momentum Smoothing of 1 would mean no smoothing at all, so it is internally capped at 0.95.

Momentum Smoothing Fac

Increase to fix banding in areas that are very flat or have stretched faces with very high or low angles at corners. These can cause very small values that lead to instability and oscillations. Works by mixing the effect of the current iteration with the previous iteration at this ratio to dampen sudden changes. Multiplied by Scale Strength, which can cause the value to hit 1. As that would mean no smoothing at all, it is internally capped at 0.95.

Smoothing Strengths

Use with Corner or Face Vertex Colors or Attributes for best control. Each Corner is smoothed by mixing its current Normal with the averaged Normal of its connected neighbors. You can control how much of this movement is applied, how much Corners can contribute to their neighbors, and how much of the original Normal to preserve.

Application

How much of the Smoothing is applied to the Corner. Reducing this causes less Smoothing per iteration. 10 iterations at 1 Strength is the same as 20 at 0.5. Lower strengths are more stable, so turn down in problem areas if Momentum Smoothing is not sufficient. Previously called Iteration Strength.

Boundary Fac

Scale the Application Strength, but only on mesh boundaries. Saves you making your own boundary group selection.

Contribution

How much a Corner can contribute to its neighbors. Each Corner is pulling its neighbors towards it. This reduces how much they can. Use to stop high detail areas from influencing smooth surfaces nearby, or very bad topology from shredding its neighbors.

Original Normal

Scales down the influence of the original Normal, allowing it to be overwritten by neighbors. The Smoothing gets the difference between the original Normal and the average of connected neighbors, then adds it to the original Normal. If the original is scaled down, then the new Normal is a higher ratio of the average, or will overwrite it completely. If a whole area is set to 0, it will be flooded from connected areas that are not.

Debug

Disable Warnings, Display Normals as Lines or check the Boundary Extrapolation. Both options are slow on big meshes.

Show Warnings

Show Warnings for Ngons, which are fully supported, and Degenerate Faces, which cannot resolve Normal and Weight calculations properly. These are caused when the Face or a virtual triangle of it have 2 or more Vertices in the same place, or 2 Edges pointing in the same direction, or exactly opposite directions forming a straight line.

Visualize Normals

Creates a line per vertex that points in the directon of the Normal, or one per corner in areas with Sharp/Split Normals. Slow on large meshes, but can be masked to help performance if only needed in some areas.

Normal Scale

Scales the Visualized Normals so they aren't 1 unit long.

Visualize Boundary Extrapolation

Creates geometry at mesh boundaries and split or sharp edges that matches the extrapolated Normal. This is the Extapolated Normal rotated around the boundary edge by 90 degrees. The extrapolation can fail under some circumstances, but also somtimes the correct behavior produces unintuitive shading. If you are getting weird results, check if the visualized boundary geometry is uneven or scrambled to see which.

Boundary Scale

Scales the extrapolated geometry so it isn't 1 unit long.