Houdini 13.0 Nodes

interface version 1

Scatters points on geometry surfaces (performance-optimized).

This operator is an alternative implementation of the original Scatter SOP.

It can be considered as a performance-oriented Scatter variant – it being faster, at the expense of some additional limitations.

Pros:

  • Performance: it’s about 2x-7x faster than the regular Scatter SOP (the preferred scenario is to generate insane amounts of points from a relatively low resolution geometry, preferably pre-triangulated).

    If the input geometry doesn’t change, it becomes even faster as it only has to re-run the scatter process (e.g. interactive parameter tweaking is faster, too.)

  • Finer control over attribute inheritance: there are two levels of attribute inheritance (regular “nearest-neighbour” inheritance, and accurate interpolation), and the more expensive computation is run only for the specified attributes.

    (Such tradeoffs can make quite a difference when working with large point clouds – e.g. tens of millions of points.)

Cons:

  • Geometry limitations: it can handle triangulated polygon meshes only (although mixed tri/quad meshes often work almost as well in practice). Cannot scatter on curves and into volumes (yet).

  • Attribute limitations: it can only interpolate float and vector types.

Parameters

Triangulate Geometry

If enabled, the input geometry will be triangulated before scatter. This might be needed as the scattering algorithm supports triangles only.

This is a relatively slow operation, better be avoided if possible.

(For the additional control parameters see the Divide SOP documentation.)

Tip

Although in theory the scatter algorithm requires triangles, in practice tri/quad mixtures usually work almost as well.

So, since triangulation takes as much time as the scattering itself, it’s better to keep this switch off, if it doesn’t cause much visual difference.

Mode

The mode of determining the number of points to generate.

Number of Points

An exact number of points is specified.

Points per Point

The given number of points are generated for each input geometry point.

Points per Area

Point count is determined by measuring the entire surface area.

(menu) Compute from...

This menu item calculates the exact points-per-area value to have the same number of points as specified at the Number of Points field.

Tip

There is a convenience menu item for the Points per Area parameter that calculates the points-per-area value from an explicit Number of Points.

  1. Switch to "Number of Points" mode and set Number of Points to the desired value. (Also, set Num Points Scale % to 1.0)

  2. Switch to "Points per Area" mode, and choose the "Compute..." menu item (beside the Points per Area field).

  3. Done – the Points Generated field value should match the Number of Points field. (Or, if the function couldn’t succeed, an explanation dialog is displayed.)

Num Points Scale %

Performs a percentage-based reduction to the results by deleting points randomly.

Tip

The difference between adjusting this and Number of Points is that this doesn't change existing point positions (which can be useful if a static pattern is desired but with a changing number of points).

Note that this still generates all points first (so it’s ineffective to constantly use a large point count/low percentage ratio).

Exponent

An exponential correction to the scale percentage to allow for “visually correct” results (e.g. the default of 2 provides this for points scattered on surfaces).

Random Seed

Different values will result in different scattering patterns. (To have a different pattern for each whole frame, use floor($FF).)

Scatter Based on Primitive Area

Individual primitive surface area will be considered when scattering, resulting in an uniform distribution of points.

Add Particle System

Creates a particle system primitive, containing all points. (This is a relatively slow operation, so don’t use it unless necessary.)

Add Point Group

Creates a point group, containing all points.

Tip

This can be convenient if used with a Source Volume DOP, as it requires a source group by default (from Houdini 13).

Area Attribute

This is an optional (per-point, float) attribute that acts as a multiplier over the actual measured primitive area.

Inherit Attribs

A list of attributes that should be inherited by the generated points. (A nearest neighbour-like method is used, which is fast but not accurate.)

Interpolate Attribs

A list of point attributes to do interpolation for. This is slower but much more accurate than inheritance.

Update Interpolation

Updates the operator’s internals related to attribute interpolation. (This is no longer necessary – this button will be removed in a next version.)

Points Generated

A read-only numeric display, showing the number of points generated.

To Do

  • Should work on volumes (VDB and regular, in this order)

  • Should work on curves (poly lines; NURBS, etc)

Release Notes

interface version 1

2014-02-06
  • UI Improvements:

    • Attribute selector menus now work properly (and have the “unified” format)

    • Added Add Point Group option (convenience for particle fluid DOP emitters)

    • Interpolation debug options are hidden unless they're needed

    • Added numeric display for generated point count

    • Added function to compute points-per-area from explicit number of points

2013-12-13

Friday the 13th: Updated to H13 (replaced getneighbour() calls to neighbour()).

2013-09-22

Added presets for Random Seed parameter.

2013-08-18

Added Num Points Scale % parameter.

2013-08-10

The Area Attrib parameter now works (experimental – needs testing and debugging). Only point attributes are supported for now.

2013-08-01

Fixed a bug that occured when interpolating attributes.

2013-06-11

Issued a workaround for interpolation update issue.

2013-06-10

Attribute interpolation works, but with certain limitations (mostly interface problems, related to lack of a proper internal update mechanism).

2013-06-08

Initial prototype.