Houdini 20.0 Nodes Geometry nodes

Normal geometry node

Computes surface normal attribute.

On this page
Since 13.5

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.

Override Normal

The name of the normal attribute to create or modify.

Compute Normals

When enabled, a normal attribute will be created or modified based on Add Normals to, Cusp Angle, and Weighting Method for the specified 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 behavior 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.

Keep Original Normal Where Computed Normal Is Zero

Some points, especially disconnected points, can only generate a zero normal as a normal does not technically make sense for them. However, often the normal attribute is used for other purposes on these points. With this option, if the normal computes to zero it will be left unchanged from the input rather than wiping it out.

Make Normals Unit Length

When enabled, existing normals in the specified Group will be normalized, i.e. each scaled to have length 1. This is disabled when Compute Normals is on, because computed normals are already normalized.

Reverse Normals

When enabled, normals in the specified Group will have their directions reversed, i.e. the normals will be multiplied by -1.

Examples

BoxNormals Example for Normal geometry node

This example uses the Normal SOP to show what point normals and vertex normals look like on 5 types of boxes and on extruded text.

See also

Geometry nodes