Houdini 13.0 Nodes

interface version 1

Scatters points along the motion trail of a geometry (for particle/fluid emission).

This node is a general-purpose particle emission helper, to support artifact-less emission from geometry. It works with all particle types (regular POP, particle fluids, etc.) It’s also a intended as a direct replacement for flip fluid emitter SOPs.

Continuous particle emission

This operator scatters points along the motion trail of an animated or deforming geometry. The motion trail segment length is one frame long by default (when no substepping involved).

The generated trail-scattered points can be used as emission source to get a continuous particle stream (as opposed to emitting directly from the surface, which will results in the usual “segmented emission” artifact).

The trail is calculated using cardinal interpolation, so it always produces nicely curved trails that follow the curvature of the geometry’s movement.

A very important aspect is that there’s no need to use substepping at all to get a continuous emission. (Also, keep in mind that substepping only reduces the problem but doesn’t eliminate it.)

This node also provides support for implementing subframe-accurate particle emission and death (e.g. for particle simulations that has to be timewarped or retimed into slow-motion). It can generate subframe-accuracy attributes to be inherited by particles (birthtime and phase, the latter being the fractional sub-frame birth time).

Tip

This node is faster, more controllable, and gives more accurate results than the built-in (volume-based) FLIP fluid emitters (in Houdini 12.0.xxx).

To use it with particle fluids, create the fluid emitter as usual (from the shelf), then replace the fluid source SOP with this node.

Drawbacks

  1. Speed —

    To get those nicely-curved, cardinal-interpolated trails, the input geometry is sampled at 3 different time samples, which can be expensive. If the geometry input is built from lots of SOPs, it’ll be faster if cached before wiring it into the Trail Scatter SOP (e.g. with a Cache or a Waypoint qL SOP node).

  2. Topology —

    This operator doesn’t support geometry with changing topology. As an alternative, the PointJitter qL SOP can be used to jitter the source geometry along its velocity vectors, before using it as an emitter.

    For the same reason the Scatter based on primitive area toggle is also not recommended – the scattered point locations change so much from frame to frame that the Trail Scatter can’t construct a valid trail. (It might work for non-deforming geometry, though.)

Parameters

Scatter
Num Points Scale %

This value acts as a multiplier on the number of scattered points. It can be used to apply gradual changes to particle emission amounts.

Note

Use this value for animating emission (this is explicitly designed for that purpose). Do not animate the Number of Points parameter.

Exponent

An additional exponent value applied to the multiplier. (The default value of 2 results of linear changes to the above parameter to appear linear “visually”.)

See the Scatter SOP help for other parameter descriptions.

(Note that for deforming geometry it’s usually better to turn off Scatter Based on Primitive Area.)

Interpolator
DOP Sub Steps

Substep (or oversampling) setting of the related DOP (or POP) simulation. Make sure the values match (the easiest way of it is to link the DOP or POP network’s Substep or Oversampling value to this parameter).

Note

It’s good practice to always link your DOP network’s Sub Steps (for POPs, Oversampling) parameter to this field.

Add Particle System

Creates the resulting points as a particle system. This is required for particle fluids (for the DOP network emitter).

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).

Segment

Parameters for controlling the generated trail.

Trail Direction

The direction to extend the trail along (backwards or forwards).

Subframe Min, Max

Start and end of the trail, within the current trail time domain. (Usually there’s no need to adjust them.)

Placement Exponent

This parameter acts as a bias on the uniform distribution of trail points. (Usually there’s no need to adjust.)

Attributes

Additional generated attributes on the trail points.

Birth Phase

A [0..1] normalized value for each trail point, specifying its relative position within the trail.

Birth Time

This is subframe-accurate birth time.

Since the trail represents a time range (e.g. one frame for substep 1), each trail point has an individual birth time within this range. This can be stored in this attribute.

This attribute can be used to calculate subframe-accurate particle deaths (see TimeBlend qL SOP).

Rel. Birth Time

Same as Birth Time above, but relative to the nearest whole frame. This can be used for subframe-accurate particle evaluation (see TimeBlend qL SOP).

The value ranges for a substep of 1:

  • Backwards: [-1/$FPS ... 0]

  • Forwards: [0 ... 1/$FPS]

Tip

This can be calculated using the expression $T % (1.0/$FPS).

FPS, Time

The current frames-per-second settings and the current time to pass along to the interpolation function. Used for generating values for the above attributes. Usually there’s no need to touch these.

Velocity Components

Controls for the velocity values generated on the points of the trail scatter. (It is a weighted sum of multiple velocity sources – make sure the sum of the weights (“%”) doesn’t exceed 1.)

Emit Velocity %

This is the velocity calculated from the trajectory of the moving geometry (individual vector directions are adjusted according to their relative position in the trail).

Input Velocity %

This is the velocity attribute inherited from the source geometry (if exists).

Jitter Along Input Velocity

This applies a jitter to the scattered points, along the input velocity vectors (see above). This is similar to the method described in Point Jitter qL SOP.

Note

If not set properly, these settings can re-introduce some of the “segmented emission look” or similar artifacts. In non-trivial cases some trial-and-error experimenting might be needed to get the desired look.

(As a guideline, stick to either Emit or Input velocity and don’t mix them if possible.)

----

pros:

  • emission from the generated point cloud gives gap-free emitted particles;

  • calulates velocity vectors both for obj and sop level transformations;

  • it is faster and more accurate fluid emitter than the built-in one;

practical

cons/bugs:

  • (FIXED) animated 'seed' value is not yet supported

  • (FIXED) forwards/backwards get screwed up at substep 5, 10, (...)

    • 'fix': hackety-hack at world_space/emitter_source_worldspace/slice param

      • should be okay up to about 20 substeps ( blame floating point! :( )

To Do

  • jitter points along resulting velocity vectors

  • make sure emitter velocity has the same magnitude, independent of any substep settings (i think its ok)

  • velocity scale parameters should work in the negative range as well

Release Notes

interface version 1

2014-02-07
  • Added 2nd random seed missing from the UI

2014-01-15
  • Can now create a point group for the resulting points (in accord with the H13 fluid emitter).

2013-05-03
  • LOD multiplier value

  • Descriptive parm (info displayed in network view)

2013-05-01
  • If enabled, phase and birthtime attributes now define their local variable counterparts.

  • Added relbirthtime attribute support.

  • Better Help card (still wip, though).

older versions

Version 0.0.2

Added support for creating birth time and birth phase attributes on the generated points (allows for subframe-exact particle interpolation).

Version 0.0.1

The first version included in qLib.