GeoNormals

The GeoNormals node creates or rebuilds mesh normals. Subdivision surfaces don't generally need normals, but there are occasional cases where creating or modifying normals is beneficial, such as when shaders need detailed lighting information to render correctly.

Tip:  GeoNormals's classic 3D system equivalent is the Normals node.

Inputs and Controls

Connection Type

Connection Name

Function

Input

lookat

An optional input that points all normals at the object connected to this input and adds the Normal xyz values to that position.

Note:  Action must be set to lookat for this input to work as expected.

unnamed

The previous stage in the scene you want to affect.

Control (UI)

Knob (Scripting)

Default Value

Function

GeoNormals

Mask

mask_patterns

{lastmodified}

Specifies the mask pattern to match the prim names to affect. The default mask, {lastmodified}, adds or adjusts the normals for whatever was changed by the previous node. A simple way to think of it is that {lastmodified} affects the node above. You can use standard glob-style variables, such as /*, to create masks or use individual prim names separated by spaces. For example, /GeoCube1 /GeoCard3 applies the transform to only those prims.

Tip:  You can also use the cog menu, the Viewer picker, or drag and drop paths from the Scene Graph to create masks.

Action

action

unchanged

Determines what happens to any normals in prims selected by the Mask control:

unchanged - any normals specified in the Attribute Name are unaffected.

set - assigns normals specified in the Attribute Name to a constant value set by the Normal control's xyz values.

build - rebuild each normal specified in the Attribute Name based on the surrounding vertices. The Angle Threshold determines the break angle where two faces no longer constitute a smooth surface.

lookat - points all normals specified in the Attribute Name at the object connected to the lookat input and adds the Normal xyz values to that position.

delete - removes the normals specified in the Attribute Name from all geometry groups.

Invert

invert

off

Inverts the added or rebuilt normals.

Note:  The Invert control affects all actions, even unchanged.

Normal

normal

0, 0, 0

When Action is equal to set or lookat, assigns a constant xyz value to the normals specified in the Attribute Name.

Note:   The Normal xyz values are added to the lookat position.

Angle Threshold

threshold

45

When Action is set to build, sets the angle between two faces at which vertex normals are broken, which creates sharp edges under lighting. A threshold of 0 means all faces are flat, and 180 means all faces are smooth.

Note:  Angle Threshold only affects vertex normals.

Attribute Name

N_attrib_name

primvars:normals

Sets the name of the normal attribute affected by this node.