On this page |

## Overview

This node computes point, vertex, primitive, or detail normals using a more accurate approach than the Facet node or the Vertex node.

Unlike the Vertex node, it supports computing vertex normals for polygon soup primitives
that were created with a PolySoup node having the **Merge Identical Vertices** option disabled. Existing polygon soup
primitives can be passed through a PolySoup node with **Merge Identical Vertices** disabled to ensure that vertices are unmerged.

## Parameters

Group

The subset of geometry whose normal attribute, `N`

, should be modified.

This can be a point, vertex, primitive, or edge group. If necessary, it will be expanded to a point, vertex, or primitive group, depending on the value of **Add Normals to**.
If the input geometry doesn’t have a normal attribute and **Add Normals to** is set to **Vertices**, completely smooth vertex normals, as if Cusp Angle were 180,
will be computed over all vertices first, and then normals will be computed for the group as specified. If the input geometry doesn’t have a normal attribute and
**Add Normals to** is set to anything else, this group will be ignored and normals will be computed for all relevant geometry elements.

Group Type

The type of group that **Group** specifies.

If **Guess from Group** is specified and the group type is ambiguous, the guess is made that **Group** specifies a primitive group.

Add Normals to

The type of elements to which to add or modify the normal attribute, `N`

.

Points

Normals will be computed for each point. This will be the average of the vertex normals around the point, weighted by the vertex angle for each polygon incident to the points, so that, for example, triangulating the surface won’t change the result.

Vertices

Normals will be computed for each vertex. If normals of vertices around a single point are less than **Cusp Angle** apart from each other, they will
be averaged together, weighted by the vertex angle in each polygon.

Primitives

Normals will be computed for each primitive.

Detail

A single normal will be computed for the detail, being the average of the primitive normals, weighted by the primitive area.

Cusp Angle

When computing vertex normals, if normals of vertices around a single point are less than or equal to this angle (in degrees) apart from each other, they will be averaged together, weighted by the vertex angle in each polygon.

Weighting Method

When set to **By Vertex Angle**, care is taken when computing normals to try to avoid issues introduced by sliver polygons and to weight contributions to normals by angle, so that triangulation won’t change normals significantly.
When set to **Each Vertex Equally**, a faster, but less accurate, approach similar to the approach used by the Facet SOP, is used to compute normals, where each vertex is given equal weight around a point, and less checks are done for ensuring stability.
When set to **By Face Area**, the behaviour is similar to __Each Vertex Equally_, except that vertices on faces with more area will be given more weight when computing point normals. This is often used to fake the appearance of a smooth bevel for geometry with only a simple chamfer.

See also |