Houdini 20.5 Nodes Geometry nodes

Point Relax geometry node

Moves points with overlapping radii away from each other, optionally on a surface.

On this page
Since 13.5

Overview

This node looks for any points that, if they were spheres with the specified radii, would be overlapping, and attempts to move them to nearby locations that reduce the overlap. This helps avoid having points that are too close to each other. This process is repeated until there are no overlapping points, or the Max Iterations limit is reached.

If a second input is attached, the points are confined to that surface when relaxing, i.e. they will each be relaxed in the plane perpendicular to the surface normal, and will be projected back onto the surface after each step of relaxing. If no second input is attached, by default, the “N” attribute on the points will be used as if it were the surface normal for each point, if present. To relax points in 3D space, instead of in a 2D plane, turn on Relax in 3D Space.

Points are relaxed similarly in the Scatter node. Point Relax allows for more control over the point radii, and allows for points generated by different approaches to be relaxed. The relaxation algorithm is a generalization of Lloyd’s algorithm, (Voronoi iteration), with support added for finite and non-equal point radii, as well as unbounded 2D or 3D space.

Note

This is intended for use with disconnected points, not for points in meshes. It will usually not produce desired results when relaxing points in meshes, because it will ignore the mesh.

Parameters

Points to Relax

The points that will be moved away from the Influencing Points if any have radii overlapping the radii of the Influencing Points. If these points being relaxed should be moved away from each other, they should also be in the Influencing Points group.

Influencing Points

The points that will affect any Points to Relax that have radii overlapping the radii of these points.

Surface Primitives

The primitives from the second input that form the surface that the Points to Relax should be relaxed on.

If the points are initially on a particular set of primitives, they may occasionally “hop” to nearby primitives, even ones that may not be part of the same surface, so specifying this group can help reduce that type of problem.

Max Iterations

This is the maximum number of times that the Points to Relax will be moved away from the Influencing Points.

Point Radius Scale

When Point Radius Attribute is enabled, this scales those radii; otherwise, this is used as the radii of the points. Any Points to Relax whose radii are within the radii of Influencing Points will be moved away, if possible.

Point Radius Attribute

When enabled, this point attribute, multiplied by Point Radius Scale will be used for the radii of the points. Any Points to Relax whose radii are within the radii of Influencing Points will be moved away, if possible.

Relax in 3D Space

When enabled, points will be relaxed in 3D space, instead of relaxing points in 2D planes and optionally projecting onto a surface in the second input. This can be significantly slower than relaxing in 2D, if there are a large number of Points to Relax whose radii are within the radii of Influencing Points.

Use Normal Attribute

When enabled, points will be relaxed in the 2D plane perpendicular to the vectors in the “N” attribute. If the second input is connected, the “N” attribute from the surface will be used, or computed if not present; otherwise, the “N” attribute from the Points to Relax will be used, or computed if not present. When disabled, Normal Direction will be used instead of the attribute.

Use Geometric Normals

When enabled, the point or vertex “N” attributes will not be used in the relaxation, instead the relaxation will be based on the geometric normals of the surface geometry. Geometric normals represent the actual shape of the geometry so they tend to produce better results from normals set for aesthetic or hair-grooming purposes.

Note

If the points to relax already have the N attribute, enabling this option will update that attribute with the corresponding geometric normal for each point.

Normal Direction

When Use Normal Attribute is disabled, Points to Relax will be relaxed in the 2D plane perpendicular to this vector.

Max Step Size Attribute

By default, the maximum distance that a point will be moved in a single iteration is approximately its radius, which keeps the relaxation stable when there are only small variations in radii. However, this can cause problems when there are large variations in radii, e.g. when some radii are zero and others overlap with them, because the points may never “escape”. This attribute specifies a separate maximum distance that each point can move in a single iteration.

Prim Num Attribute

When enabled, an attribute will be output indicating the number of the surface primitive on which each point stopped. Enable this and Prim UVW Attribute for use with Attribute Interpolate.

Prim UVW Attribute

When enabled, an attribute will be output indicating the coordinates of each point in the parameter space of the primitive on which it stopped. Enable this and Prim Num Attribute for use with Attribute Interpolate.

See also

Geometry nodes