On this page | |
Since | 18.0 |
Overview ¶
Note
The Geometry Clip Sequence LOP should be used in preference to this node in most situations.
In USD, a value clip is a way of storing data sets in separate files.
-
This allows you to split large data across multiple files. For example, simulations or other animated data where the size of each time sample is so large that authoring all time samples to a single file is unwieldy (such as in terms of required network bandwidth).
-
Value clips are also useful in situations where you may have a library of animation clips which need to be run in a sequence or a loop. Often different primitives can share animation clips, but assemble the clips in different ways to create the appearance of variation.
-
Value clips allow flexibility in composing layer overrides. USD value resolution stipulates that the first (strongest) layer that contains any
timeSample
for an attribute is the source of alltimeSamples
for the attribute. This is often fine, but for huge numbers of timeSamples you may need more flexibility.
You should read the USD documentation for value clips to understand how they work and how you can use them:
Note
This node provides a way of authoring a value clip composition arc in USD. Future versions of Solaris may have more tools for working with and using value clips at a higher level.
Note
An alternative to using the Value Clip LOP is to use the USD Stitch Clips ROP to author a USD layer file containing a value clip definition that you can reference into a scene. This approach has the benefit that it also creates a topology layer and a manifest layer, which can improve the performance of the value clip composition.
Note
A sequence of '.bgeo' or similar non-native USD files can be loaded directly as value clips, however you must ensure that each geometry file generate its USD attribute data with the correct time sample. This can be achieved by writing the time value into the geometry file as a detail attribute created by the USD Configure SOP. Or, the time value can be specified by appending arguments to the geometry file path with the suffix '/tmp/file.$F4.bgeo.sc:SDF_FORMAT_ARGS:sampleframe=$F'.
Parameters ¶
Primitive Path
The scene graph path of the prim on which to author a reference to the value clip. If the specified primitive does not exist, the node will create it with no primitive type (the primitive type will come from the value clip file).
Primitive Kind
If the prim at Primitive path didn’t already exist so this node has to create it, the node sets this as the new prim’s kind.
Parent Primitive Type
If any parents of the path in Primitive path do not exist, this node will automatically create them. In this case, it will create parent nodes of this type.
Clip Set
The name of the “clip set” the value clip belongs to (multiple “clip sets” can exist on a single prim).
Clip Primitive Path
The path of a prim within the value clip file that should be mapped onto Primitive path when accessing values.
Manifest File
The file path to an optional manifest file that specifies exactly which primitives and values should be brought in from the value clip files. Providing this file helps the USD framework optimize value clip resolution. See the USD documentation for more information about the manifest file.
Start Frame
The frame on the current stage at which the value clip resolution should start.
First Clip Start Frame
When this is turned on, it sets a different start time within the value
clip files. When this is turned off, the nodes uses the Start frame parameter as the clip start time.
Clip Time Scale
A scale factor applied to the time samples read in from the clip files.
Loop Until Frame
To create a repeating loop of the specified clip files, turn on this parameter and set it to the end frame of the loop. (USD does not natively support looping of animation or value clips, so this node explicitly authors all provided clips repeatedly until the requested loop end time is reached.)
Loop First and Last Frames Match
When looping an animation and using deformation or transform motion blur, it is important that the first and last frames of the looping animation are identical. In this case, enable this parameter so that the Value Clip LOP will author a “discontinuity” in the clip frames when looping from the end of the animation back to the start. This discontinuity prevents doubling up the display of the shared first and last frame, while also avoiding unexpected motion blur effects.
With this option turned off, the “clip times” metadata for a looping 100 frame clip would be (1, 1), (100, 100), (101, 1), (200, 100)
. In this data, the first number in each pair is the global stage frame number, and the second number is the frame within the clip that should be displayed for that global frame. So stage frame 1 is clip frame 1. Stage frame 100 is clip frame 100. Then stage frame 101 is back to clip frame 1. There are two problems here. First, if the clip’s first and last frames are equal, frame 100 and frame 101 will be identical. But even worse, when rendering with motion blur (using a shutter open/close of +/- 0.5), rendering frame 101 will show data interpolated at frames 100.5 and 101.5. But USD does this by interpolating the clip metadata, not the data stored within the clips. So the frame 101.5 data will be as expected (showing data from clip frame 1.5). But the frame 100.5 data will be generated by grabbing the clip data at a frame half way between 100 and 1, which is frame 50.5. This is obviously very unexpected.
With this option turned on, the same setup would author clip times of (1, 1), (100, 100), (100, 1), (199, 100)
. Note that there are two different clip times authored for the single stage time of 100. This is the “discontinuity”. But it eliminates both problems mentioned above. Stage frame 100 is clip frame 100, but stage frame 101 is now clip frame 2, eliminating the duplicated data. And for motion blur rendering frame 101, frame 100.5 will use the clip data at frame 0.5 and 1.5, exactly as expected.
Note that if the first and last frames of the clip are not equal, there is no way to get perfect looping, unless you use velocity motion blur which does not require grabbing interpolated data between frames. The first problem mentioned above (the duplicated frame at the end of the loop) will be avoided, but the clip metadata interpolation approach used by USD means sampling frame 100.5 will return data from the middle of the clip, resulting in incorrect motion blurring.
Number of Clips
You can add references to multiple clip files in one node. Set this to the number of clips to reference, or click the plus and minus buttons to add or remove clips.
Clip File or Sequence
The file path to this value clip file. This path can include number-sign (#
) characters to perform numeric substitutions in a loop. For example, on disk there may be multiple files named sim_0001.usd
, sim_0002.usd
and so on, each containing one frame of animation. In this case you could use sim_####.usd
. Numeric substitution only happens if File sequence count is turned on. See File sequence count, File index start, and File index step below.
For example, if you turn on File sequence count and set Clip file or sequence to sim_####.usd
, File index start to 10
, File index step to 2
, and File sequence count to 3
, the node will try to load sim_0010.usd
, sim_0012.usd
, and sim_0014.usd
.
If you use numeric substitution, each file must have the same number of
frames of animation (File duration).
File Duration
The number of frames for which this clip file is active. If the Clip file or sequence path matched multiple files through numeric substitution, each clip file will get this same duration.
File Sequence Count
If you turn this on, the node evaluates the Clip file or sequence filename with numeric substitution this many times, starting the number at File index start and increasing the number each time by File index step.
File Index Start
When File sequence count is turned on, the node evaluates the Clip file or sequence multiple times with numeric substitution, starting at this number.
File Index Step
When File sequence count is turned on, the node evaluates the Clip file or sequence multiple times with numeric substitution, incrementing the number by this many each time.