|On this page|
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.
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.
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.
The name of the normal attribute to create or modify.
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,
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.
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.
Normals will be computed for each primitive.
A single normal will be computed for the detail, being the average of the primitive normals, weighted by the primitive area.
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.
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.
When enabled, normals in the specified Group will have their directions reversed, i.e. the normals will be multiplied by