Pixar’s USD format allows representation of dynamic 3D scenes. It lets designers create large numbers of objects that fit together into a scene. People on a team can work independently of each other, each designing certain parts. The project is on GitHub.
USD’s design solves the problem of not having to work with one monolithic file (as Pixar did for Toy Story), but sometimes a monolithic file is useful. At WWDC 2018, Apple and Pixar announced a new wrapper for USD, called USDZ. It’s a Zip archive with some special rules. iOS 12 will support it.
Currently the tech media are excited about the format’s uses for augmented reality, but that’s far from its only use. Applications for movie animation (we’re talking about Pixar, after all!) and games are obvious possibilities.
A USD scene is made out of “prims” or primitives, which are grouped into layers. Prims can contain other prims. A prim’s properties define its behavior. The entire scene is called a “stage,” which manages prims in a model hierarchy. Changing the properties of prims allows animation in just about any conceivable way.
USD data can be stored in files with the .USD suffix; they can use either an ASCII or a binary format. With USDZ, any number of USD files can be put together in one archive, along with some graphic formats. The file is always uncompressed and unencrypted. It’s intended for random access, not unpacking into separate files.
USDZ is a read-only format. Modifying a file will generally change its length, which would force moving everything.
The USD APIs make components of a USDZ file addressable. Each file has to be aligned at a multiple of 64 bytes. The first file has to be a native USD file (not an image, texture, etc.). USDZ archives can be nested. The alignment requirement means that standard ZIP software can’t create a valid USDZ. The APIs can operate on a file in place, which is why compression isn’t allowed.
The uses of USDZ
So isn’t USDZ just a new way of packaging USD? Tech Republic provides a nice explanation of why the package is significant. When Pixar used USD internally, having assets in lots of separate files wasn’t a big issue. If vendors are going to deliver content to users, that’s not very convenient. An entire stage can be put into one USD file, but it can’t include non-USD content. The documentation explains that “even though USD does provide several means of ‘flattening’ multiple USD files into a single file, there is, by design, no mechanism for representing images/textures as the “scene description” encodable in USD files.”
The advance publicity strongly suggests that ARKit 2, the revised augmented-reality toolkit in iOS 12, will support USDZ. It will support “multiplayer” AR, where users can interact through a common model. Perhaps having them all load the same UDSZ file will be a part of how it works.
USD is complicated, and developers and designers who can figure it out will have skills that will earn them lots of USDs.