# Sequences / Clips
This guide focuses on how to handle "file-per-frame" sequences of USD and Alembic files by using “USD Clips”.
Given you have a sequence of USD or ABC files, you can create USD Clips directly from the Multiverse Read shelf button.
Multiverse requires any file-per-frame usd/abc sequence to be frame padded with the frame number contained between dots, e.g:
file.001.ext file.002.ext ... file.999.ext --> good file.0001.ext file.0002.ext ... file.9999.ext --> good file.1.ext file.2.ext ... file.9.ext --> still good (but see next) file.1.ext file.2.ext ... file.10.ext --> BAD (because the padding has two digits from 10 and above) file_001.ext file_002.ext ... file_999.ext --> BAD (because the frame is not wrapped by two dots) file_001.ext file_002_seq.ext ... file_999_seq.ext --> BAD (because the frame is not wrapped by two dots)
# Basic Concepts
Complex simulations such as oceans, particles, fractures, rigid bodies, or even heavy animated deforming assets represent heavy data in a pipeline.
Writing all such data in single USD or Alembic files has the following issues:
- it cant be parallelized on multiple machines
- it can be very time consuming
- it will produce assets that may be too heavy to pass around in a production environment due to their file size.
- changing only some part of the sequence will require an entire rewrite
- when batching the rendering of a sequence across different nodes in your farm each node will need the whole asset (instead of only the needed frames).
Writing them as a "frame-by-frame" USD or Alembic file sequence solves all these issues at once.
Typically, file-per-frame sequences of USD or ABC files are generated from Houdini / Solaris, then in Maya / Multiverse we can create a USD Clip for the sequence. It is also possible to generate the USD clip from Houdini but you will see it is much more practical to do so in Maya.
Make sure your file-per-frame sequences are equally padded and have the frame number between dots. See the "Requirement" in the first section of this doc.
# Practical Example
In this example we’re showing to write an animation sequence from Houdini and read it back as a USD Clip in Maya using Multiverse.
In Houdini we use the "crag" animation that comes with the Houdini installation: we simply output it as file sequence by turning on "Separate File Per Frame".
After finished to write out the files, we read them back into Maya via the Multiverse Read shelf button. When we browse to the folder where the files were written and select any file of the sequence, the UI to Generate USD or ABC Sequence UI will be un-grayed: here we can define the Start/End of the sequence and the file name of the USD Clip that we want to generate.
We should be able to see info message below the Generate USD Clip button. Any error or warning will be displayed here. For now let’s create a clip with default options for this example.
We can also keep the dialog open and generate multiple clips with different frame range as well.
The USD clip is written in the same folder after that selecting the resulting clip and read them back in Maya should be the same as reading any USD asset. Note that you are also able to create clips from Alembic sequence as well.
The process of generating a USD clip will actually produce two files, the clip file itself and an associated "topology" file (also known as the manifest). This topology file is not meant to be read directly in the Compound in any way, it is used by the clip file when the clip is read.
# Writing clips from CMD / Terminal
You can also write clip files for your sequences from the command line.
# On Linux & macOS
/path/to/maya/bin/mayapy /path/to/multiverse/bin/usdstitchclips -t mysequence.####.usd -s 1 -e 96 -c /path/to/prim -o clipfilename.usda mysequence.*.usd
This will generate two files:
clipfilename.usdawhich is the file you can read
clipfilename.topology.usdawhich is the manifest file (used by the former)
# On Windows
On Windows things are more complicated since
usdstitchclip does not resolve
* wildcard, therefore we provide a magic script that does the magic for
@echo off setlocal enabledelayedexpansion set params= for /f "delims=" %%a in ('dir /s/b C:\path\to\mysequence.*.usd') do set params=!params! %%a call usdstitchclips -t mysequence.####.usd -s 1 -e 96 -o C:\path\to\clipfilename.usda -c /path/to/prim %params%
If you need to know more refer to the USD documentation (opens new window).