|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.
How to compute the transform for each selected instance.
Uses the SOP subnet inside this node to process points representing the instances.
Uses an external SOP network that must generate points representing the instances from scratch. (See point cloud editing above.)
Gets the offset/scale primvars on the instancer/instance primitives themselves.
Creates a set number of random offsets and scales distributed across instances.
Create retimed prototypes for the specified instances. When instance animation is driven by instance-level transforms, turning this off will greatly improve performance.
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.
Use Frame Offset
Enable frame offsets to drive the instance retiming. This timeshifts the instance animation.
Use Time Scale
Enable time scales to drive the instance retiming. This slows down or speeds up the instance animation.
When Retime Using is "Internal SOP" or "External SOP", the name of the SOP point attribute that should specify the frame offset or time scale for each instance.
When Retime Using is "Primitive properties", the name of a primvar on the instancer that should specify the frame offset or time scale for each instance.
When Retime Using is "Random Values", specify the total number of unique frame offset or time scale values.
When Retime Using is "Random Values", specify the minimum and maximum values for the frame offset or time scales.
When Retime Using is "Random Values", specify the seed to use when generating a random number for each instance.
When Retime Using is "Random Values", allows the user to control the distribution of the random values between the specified Min/Max.
Global Frame Offset
Apply this offset to all instances equally, in addition to any per-instance offsets.
Global Time Scale
Apply this time scaling factor to all instances equally, on top of any per-instance scales.