Universal Scene Description (USD) Export, with Tricks


 

SynthEyes 2204 introduces a powerful new exporter for the Universal Scene Description (USD) file format, which may eventually supercede the Filmbox (FBX) and Alembic (ABC) file formats. We show its operation, plus a number of helpful tricks, including using the USD Toolset for viewing and format conversion.

Script for Search Engines:

Hi, this is Russ Andersson. Today I'm going to talk about SynthEyes's new USD exporter, which stands for Universal Scene Description. USD is an up and coming format developed by Pixar for their work, then open-sourced. Applications such as Houdini have extensive USD support. Maya has had not one but two different USD plugins, apparently. Apple's ARkit for Augmented Reality uses USD files. Other apps supporting USD include 3ds Max, Blender, Unity, and Unreal Engine. USD may be a long-term replacement for both Filmbox and Alembic formats. Ultimately that will depend on how well other apps support the format. I'm going to open up a scene to export. SynthEyes's USD export is full featured, so this file shows a grab bag of different features, including meshes, texturing, transparency, and even an animated rig. Let's take a look at the options in the exporter. The "Timeline setup" drop-down controls which frame of the shot is exported to the specific Starting Frame number listed below it; you can set that frame number. Match frames is a good choice for sequences; you can use it even if you don't have Match Frames turned on for the shot in SynthEyes itself. The units setting tells the downstream application what unit you'd like SynthEyes's values to be considered: is each unit a foot, a meter, etc? It doesn't change the exported numbers at all. It's up to the downstream application to do something with this setting. You can check the tooltips for the rest of the controls. Let's run the export. I've opened the USD file in usdview, USD's reference 3-D viewer. The camera frustrum and projection screen for the shot images are produced by SynthEyes. Projection screens can have static or animated distortion, both the reshaped kind and the new UV-mapped kind for image-mapped distortion. You can see the meshes and a 3D card back there; it has an animated rolling shot texture that's been reproduced in USD. Through the camera lens, you see the meshes and chisels for the trackers. There would be a gnomon for any moving object. There's even a 3-D flex curve at bottom. Our Earthling is waving away. It is represented as an animated skeleton in USD. You can see some of the skeleton reaching out to his elbow. SynthEyes rigs like this can also be exported as vertex caches; any vertex cache in SynthEyes will also be exported. All the skeleton and vertex cache data is embedded in the single USD file. It can also contain face-less lidar point clouds and per-vertex colors. However, the USD file does not contain images, such as textures or the shot itself. Now, some technical details: the exporter writes dot-USDA files, which means USD ASCII text. USD also has binary files, called "crate" files, with a dot-USDC extension. Dot-USDA files are larger and slower to read than binary dot-USDC files, but USDA files are much easier to create. Binary USDC crate files can be read very efficiently, directly from disk, much like Alembic files. To make things interesting, the plain dot-USD extension is commonly used, and it can contain either ASCII or binary data. An application reads a plain dot-USD file, looks at it, decides whether it is ASCII or binary, and reads it appropriately. That brings us to the first of a few tricks. Trick #1: If an app requires dot-USD, not dot-USDA, manually change the file extension! If you need to do that all the time, you can simply change the file extension in the first line of SynthEyes's "usda.szl" exporter. Trick #2: Use the USD Toolset's usdcat command to convert to USD binary files, for reduced size and load time. More on the USD Toolset shortly. Trick #3: Use usdview to see the exported scene, with no additional application, as we were doing earlier. Trick #4: Use usdzip to convert to a self-contained "zipped" file format. The USD file exported by SynthEyes is self-contained to start with, but usdzip will include the source images also, and ZIP-compress them into one file. This format is used by Apple's ARkit for augmented reality, though I don't know how many USD features ARKit supports. Trick #5: The usdview, -cat, -zip, etc commands can be run automatically at the completion of the USD export, using the Post-processing command in the exporter controls. Running USD Toolset commands requires that it be installed; unfortunately it is a pain to set up. See the Universal Scene Description section of the SynthEyes manual for installation hints. If you're lucky, maybe it is already installed as part of one of your 3-D apps. You should create post-processing scripts that contain the path setup commands for your toolset installation, plus the usd command and options that you want. Each script will be given the filename of the USDA file as its first argument. There are limitations in the USD format due to its film-focused origin: most importantly, it can't export any movie files, only sequences. Similarly, there are no special 360VR features. USD can't preserve exact mesh vertex numbering, or unique vertices to minimize vertex count. There's no export of per-object shadow-casting or -catching information. If someone shows me an example USD file for that, or other possible features, it can likely be added in quite easily. By now, I hope you've got the idea that USD is a powerful new export. It has pretty much everything that could be crammed in there; that's why it's a potential Filmbox and Alembic replacement. Before we go, I'd like to give a tip of the hat to Andrew Hazelden, who wrote an initial proof-of-concept exporter that showed how easily basic USDA could be written, and pointed out the USD Toolset. That got the ball rolling. Thanks Andrew, and thank you for watching.

SynthEyes easily is the best camera match mover and object tracker out there.

Matthew Merkovich

More Quotes