|On this page|
This node offsets and/or scales the timing of animation on certain instances. Since USD doesn’t allow destructive editing, it does this by creating new versions of the instances' prototypes, and overriding the instances to refer to the new prototypes.
This node has two ways of specifying per-instance offsets and scales:
You can get per-instance offsets and/or scales from primvars.
You can create a SOP network inside this node (or elsewhere in the Houdini node hierarchy) that generates a point cloud where each point corresponds to an instance and SOP attributes on the points specify offsets and scales. See point cloud editing below.
You can offset/scale the animation on regular prims with the Time Shift LOP. If you use Time Shift on an instancer, it will affect all instances equally, whereas this node lets you retime instances individually.
Point cloud editing
This node lets you build a SOP network to specify offsets and scales by processing points geometry that represents the instances.
If you choose "Internal SOP", the node uses the nodes you build in the SOP subnet inside this node.
In this mode, the points are created for you and fed through the network (connect the output of
Sub-Network Input #1to the first node in your processing network).
If you choose "External SOP", you can specify a SOP network anywhere in the Houdini node hierarchy. However, the network must generate the points with the proper attributes somehow.
The points must have a
pathSOP attribute set to the scene graph path of the instancer.
By default, the node will try to match points up with instances by matching point numbers to instance indices. This will probably only work you are processing every instance in a single instancer. Otherwise, you should turn on Match by ID and set the
idSOP attribute on each point to the index of the corresponding instance.
The points should have
timescaleSOP attributes on the points to specify the offset and scale to apply to the corresponding instance.
Tips and notes
This node works best for offsetting/scaling the animation on large groups of instances, or all instances that share a certain prototype. Since each separate timing requires a separate prototype, if you try to give each instance a different offset/scale, you will essentially "de-instance" the point instances (by having the same number of instances and prototypes).
If you are retiming prototypes created dynamically on an in-memory layer, you need to have a Cache LOP upstream from this node, so all frames are cooked and available.
If the instances come from an external USD file, you don’t need a Cache, since the file should contain all the needed time samples.
By default, retiming prototypes will not affect the instance transforms or primvars (unless they are defined on the prototype prims themselves).
You can choose to retime transforms and primvars defined at the instance level with the Retime transforms and Retime primvars parameters.
This node is optimized to only create new retimed prototypes for each unique combination of frame offset and time scale. However, this node still usually has to do a lot of work, and can be slow.
Whether you want to retime point instances, or instanceable primitives.
A space-separated list of instances, using
/path[instance_index] syntax (for example,
/geometry/instancer /geometry/instancer). The index within the square brackets can be an inclusive range, for example
/geometry/instancer[4-7]. You can refer to instances of nested instancers using multiple indexes, for example
When Type is "Native Instances", a list of paths to instanceable prims.
How to compute the transform for each selected instance. "Internal SOP" uses the SOP subnet inside this node to process points representing the instances. "External SOP" uses an external SOP network that must generate points representing the instances from scratch. (See point cloud editing above.) "Primitive Properties" gets the offset/scale array primvars on the instancer.
Match By ID
When Source is "External SOP" and this is on, the node looks for
id SOP attributes on the generated points. The
id should be the index of the corresponding instance. (When this is off, the node matches point numbers to instance indices, which only works if you process every instance in a single instancer.)
When Source is "External SOP", the node path to the geometry node to cook to get the generated points. Each point in the output should correspond to one of the selected instances.
When Source is "External SOP", if this is not blank, only consider points in this point group from the geometry node’s output.
Frame Offset Attribute
When Source is "Internal SOP" or "External SOP", the name of the SOP point attribute that should contain the frame offset for each instance. If you turn this off, the node will apply per-instance frame offsets.
Frame Offset Primvar
When Source is "Primitive properties", the name of an array primvar on the instancer that should contain the frame offset for each instance. If you turn this off, the node will apply any frame offsets.
Global Frame Offset
Apply this offset to all instances equally, in addition to any per-instance offsets.
Time Scale Attribute
When Source is "Internal SOP" or "External SOP", the name of the SOP point attribute that should contain the time scaling factor for each instance. If you turn this off, the node will apply any time scaling.
Global Time Scale
Apply this time scaling factor to all instances equally, on top of any per-instance scales.
Even if instance transforms are animated, by default this node does not affect them. Turn this on to re-time transform animation as well.
Even if instance-level primvars are animated, by default this node does not affect them. Turn this on to re-time primvar animation as well.