Houdini 13.0 Nodes

interface version 2

Distribute (relax) points in space so they will keep given distances between each other.

This node considers each point to be a sphere with a given radius, and arranges them so they wouldn’t intersect.

Inputs

Points to Distribute

Points to be distributed (relaxed).

Projection Geometry (optional)

An optional (polygonal) geometry to project the points back onto during relaxation. There are several ways to reduce the expense of this operation (see Ray Every N-th or Keep Inside below.)

Projection SDF (optional)

This is for a manually-built SDF field for Keep Inside (see below).

Although the function can build an SDF for itself for straightforward cases, this input might come in handy when dealing with a more complex projection surface.

Parameters

Point Group

Points to distribute.

Envelope

Overall effect on all points. Blends between the original and the end result.

Weight Name

Name of the weighting attribute for the effect (per-point float).

Inverse

Use the inverse of weighting attribute values.

Radius Attribute

Name of the attribute that represents the radius values of each point.

If this is disabled (or the attribute doesn’t exist), the other radius settings will be used (see below).

Note

This per-point attribute always takes precedence over the other radius settings, so if either Radius or Radius Factor is to be used, this parameter has to be switched off.

Radius Mult %

A multiplier on Radius Attribute values.

Radius

An uniform point radius, in case the Radius Attribute doesn’t exist (or disabled).

Radius Factor

If enabled, an automatic radius is calculated for a roughly-optimal point distribution. The Radius Factor is a multiplier on this calculated radius.

The radius is calculated based on the number of points and the overall surface area of the projection geometry (2nd input).

Iterations

Number of iterations. Higher values give more regular distributions but longer calculation times.

Tip

Keep increasing this gradually until you reach the desired result.

You can try to keep increasing the radius instead, which can also improve results and much faster (especially with many points).

Max Neighbours

The maximum number of nearby points that influences the new position of a point during each iteration.

Grow Radii Gradually

Gradually increase point radii at each iteration. This might help points to get to otherwise unreachable locations (and an overall smoother distribution).

Project Back on Geometry

Projects (“rays”) points back to the geometry connected to the second input.

Project Every Nth

Only project every n-th iteration and the last one.

Regardless of this value, the last iteration will always be projected back.

Ray Intersection Normal

Have points inherit the geometry normals of the ray surface.

Ray Group

Group of points to project back on the surface.

Keep Inside

Points that are on the ray surface (or within the ray geometry) will not be projected back further.

Note

This provides way faster surface projection, but it requires either a “watertight” enclosed geometry (for SDF generation), or an equivalent SDF field in the 3rd input.

It can also be slightly less accurate than projecting all points (depending on the SDF resolution and quality).

SDF Div. Size

Division (voxel) size of the generated SDF.

(An SDF field is automatically generated if Keep Inside is enabled and no SDF specified in the 3rd input. It is built using a VDB From Polygons node.)

To Do

  • Ray Every N-th and Keep Inside don’t behave well together, look into it

  • Further clean up of UI (especially radius attrib vs const radius)

Release Notes

interface version 2

2014-11-25
  • Now uses a VDB SDF internally (if needed)

  • More verbose parameter names, more elaborate help

  • Various minor UI enhancements

2014-11-23
  • Bug fix: 3rd (SDF) input wasn’t used internally. Fixed.

2014-03-14
  • Added Radius Mult % parameter

  • Added image to help card

2013-12-23
  • Replaced internal distribution code into a VEX snippet

  • Added Radius Attribute parameter (allows other attributes than pscale)

Note

All point placement behaviour should be exactly the same as with the previous version. (The version bump is just a precaution.)

interface version 1

2013-12-23
  • Added standard deformer weighting parameters

  • Minor internal cleanups (another try of getting (rid of) N right...)

2013-03-07 (gadfly16)

Basic support of distributing inside a boundary surface added.

older versions

Version 0.1.4

Bug fix: normals were zeroed out even if shouldn’t have been. Fixed.

Version 0.1.3

Point Group added. Caculate Radius added. Ray Every Nth added.

Version 0.1.2

Ray Goup parameter added. Linked back Ray Intersection Normal.

Version 0.1.1

Exposed the Point Intersection Normal parameter of the Ray SOP. It’s label is Ray Intersection Normal for clarity.

Version 0.1.0

Initial release. While it’s really not ready, it’s usable.