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.
Distribution of points on a plane, based on a per-point random
pscale
attribute. (The values are generated with an Attrib Builder qL SOP, and visualized as circles using an Attr Visualize qL SOP.)
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).
|
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 |
|
2014-11-23 |
|
2014-03-14 |
|
2013-12-23 |
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 |
|
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. |