PointInstancerCore

Utility node containing the core logic for the PointInstancer node. Takes an input Primitive and converts it into a PointInstancer object, while also defining the contexts required to generate prototype variations for the instancer.

Caution

This is an internal implementation detail of the PointInstancer node, and as such is subject to change without warning. Do not rely on directly.

user

Container for user-defined plugs. Nodes should never make their own plugs here, so users are free to do as they wish.

inPoints

The input Primitive. This must already have prototypeRoots and prototypeIndex primitive variables in the format required of a PointInstancer.

timeOffset

The name of a primitive variable specifying per-point time offsets, used to generate prototype variation.

contextVariables

The names of primitive variables specifying per-point context variable values used to generate prototype variation.

Names should be separated by spaces and may contain Gaffer’s standard wildcards.

prototypeFormat

A format specification used to customise the name of each prototype based on its context variables and time offset. The following format tokens are available :

  • {name} : The original prototype name before variation.

  • {timeOffset} : The time offset.

  • {contextVariable} : The value of a context variable.

  • {hash} : A hash value that uniquely identifies the prototype.

Note

Each prototype must have a unique name. If the time offset or any context variable is omitted from the format, the hash will be appended automatically to maintain this constraint.

Note

Special rules apply when formatting floating point values such as the time offset. The ‘.’ and ‘-’ characters are not legal in USD identifiers, so to produce names that are compatible with USD they are replaced with ‘_’ and ‘n’ respectively.

outPoints

The output PointInstancer.

prototypeNames

Output defining names for all prototype variations to be collected for outPoints. These are derived from timeOffset, contextVariables, and prototypeFormat. The responsibility for collection lies with the PointInstancer node.

prototypeSelector

Receives the name of a prototype, which should be present in prototypeNames. This determines which prototype the prototypeTimeOffset and prototypeContext plugs are being evaluated for.

prototype

Outputs the source location for the prototype specified by the prototypeSelector plug.

prototypeTimeOffset

Outputs the required time offset for the prototype specified by the prototypeSelector plug.

prototypeContext

Outputs the required context variables for the prototype specified by the prototypeSelector plug.