USD#

Universal Scene Description is a framework to manage data in CG productions. It was originally developed by Pixar and is used in many big animation and visual effects studios. It allows to manage huge amount of data very efficiently. USD can store geometry, materials, cameras, lights and more in an universal format, which can be exchanged between many modern DCCs. This makes USD a great addition to Prism.

To use Universal Scene Description in Prism you need to install and load the Prism USD plugin. You can install the plugin during the Prism installation setup or at any point later on from the Prism Hub. You can open the Prism Hub from the first page in the Prism Settings dialog.

For a detailed explanation of the USD workflow have a look at this presentation:

USD in Houdini#

Prism can be used in multiple places in Houdini to manage USD data.

In SOPs the “Prism ImportFile” node can be used to import USD files.

In LOPs these nodes are available:

Prism LOP Import#

This HDA can be used to import USD files from the Prism project into Solaris.
By default it will import the latest USD product of the asset/shot of the current scenefile.

Prism LOP File Cache#

This HDA can write out USD files. These USD files can then be used as layers in other USD files.

Prism LOP Render#

This HDA can trigger a render of the USD stage and save the output in the Prism project.
This node can also submit the render as a renderjob to Deadline.
Optionally this node can export USD files and submit a render job to Deadline, which renders the USD files using the Husk executable, which doesn’t require a Houdini license.

Prism LOP Mute Departments#

This HDA provides options to mute specific department layers of a USD stage.
On some computers a problem with the underlying Configure Stage LOP has been reported, which results in toggling of the muted layer when moving the timeslider. Therefore this node should be used with caution at this time.

Prism LOP Sequencer#

This HDA will play back all input USD stages in sequence.
It will detect the framerange of each input and offset the startframe, so that multiple shots can be played back after another even if their original startframe number is identical.

From the “Prism Presets” menu in the tab menu there are multiple nodegraph presets available to set up a basic structure for the USD workflow in LOPs and SOPs.

USD in Maya#

In order to use the Prism USD plugin in Maya you need to have either the Autodesk USD plugin or the Multiverse plugin installed and loaded in Maya.

Autodesk USD plugin#

From Maya 2022 onwards the Autodesk USD plugin is getting installed automatically with Maya and don’t need to be installed manually.

In case you want to update the Maya USD plugin before the next Maya version gets released, you can find the Maya USD plugin installer here:

Autodesk Maya USD plugin

Multiverse USD plugin#

As an alternative to the Autodesk USD plugin for Maya you can also use Prism with J-Cube Multiverse.
Prism will use the Multiverse plugin automatically for importing and exporting USD files when the Autodesk USD plugin is not loaded.
When both USD plugins are loaded you can choose which plugin will be used by Prism using the “Preferred USD plugin” setting.
This setting can be found in the Prism User Settings window under “DCC apps” - “Maya”.
This setting is only visible when opening the User Settings inside Maya and when both USD plugins are loaded.

USD and Blender#

You can use the Prism State Manager to import and export USD files in Blender

USD and Substance Painter#

You can import USD files into Substance Painter using Prism. When selectiong a USD file, you can import a specific prim using a scenegraph window.

USD and ZBrush#

Prism supports exporting geometry from ZBrush and using it in the USD container of an asset/shot.
The geometry itself will be exported as alembic (.abc) and then referenced into the USD container.
The options for that can be found in the Prism Export dialog, when the outputtype is set to .abc.
In order to export geometry as .abc ZBrush 2021 or later is required.

ZBrush itself supports exporting and importing geometry in the .usd format. However this functionality is not yet available through scripting, which is why Prism cannot export the geometry directly into the .usd format.

USD and other DCCs#

More and more DCCs are supporting USD.
As this continues to evolve, Prism will add support for more DCCs and their USD integrations in the future.
In the meantime it is possible to export alembic, fbx and obj files from DCCs, which don’t support USD yet.
These alembic, fbx and obj files can then be referenced by USD files in Prism in order to take advantage of the USD workflow.

Referencing external alembic files into USD files#

To use any alembic or obj file in a USD container of an asset or a shot you have to create a department layer first.
Go to the “Products” tab in the Prism Project Browser and select and asset or a shot.
Rightclick the “Products” list and select “USD” -> “Create department layer”.
You can create a layer for any existing departments in your project or choose “Custom…” to create a new department.
When the department layer is created you can drag & drop an alembic file into the “Versions” list to copy it into the Prism folder structure.
When the version has been created you can rightclick the version an choose “USD” -> “Set as department layer in USD container”.
This will create a new version of the USD container, which references in the select alembic file.
The USD container can now be imported into any DCC, which supports USD imports.

It is also possible to create sublayers for department layers from the context menu of the “Products” list to have more control over the composition of the USD container.

Hydra Delegates#

A Hydra delegate is a type of renderer, which can render USD scenes natively and which can be integrated tightly in almost any tool, which supports USD.
In Prism Hydra delegates can be used to playblast and render USD scenes and also to view USD files in the USD viewport in the standalone Project Browser.
In the “USD” tab of the Prism User Settings the different available Hydra delegates can be enabled/disabled.
After the settings for the render delegates are changed a Prism restart is usually required.
The following is a list of available Hydra delegates in Prism and how to set them up.

GL (Storm)#

The GL renderer is the default Hydra delegate in the Prism USD viewport.
It is available out of the box after installing the Prism USD plugin.
It supports geometry, basic light and materials and has the fastest refresh times.
It looks similar to other viewports in most DCCs.

Arnold#

To use the Autodesk Arnold Hydra delegate in Prism you need to download the “Arnold SDK”, which you can download for free here. In the “USD” tab of the Prism User Settings the path to the Arnold SDK must be specified. You can use Arnold and it’s Hydra delegate for free, but if no Arnold license was found a watermark will be displayed over your images.

Karma#

Karma is the Hydra delegate included in SideFX Houdini.
You can use Karma in Prism standalone by specifying the path of your Houdini installation in the “USD” tab of the Prism User Settings.
The path usually looks like this:
C:/Program Files/Side Effects Software/Houdini 19.5.640
In order for this to work, the Python version of Houdini and Prism Standalone must match.
For example if both tools are using Python 3.9 it will work, but if your Prism Python version is 3.11 (since v2.0.5) and the Houdini Python version is Python 3.10, it is not possible to to load Karma in Prism standalone.
If the Karma Hydra delegate is enabled Prism standalone can read .usdnc files (created by Houdini Apprentice), but the option to read .obj files will be disabled.
When Karma is enabled, no other Hydra delegates can be enabled in the Prism User Settings.
However since Prism will use the Houdini USD modules, any Hydra Delegates, which are configured in your Houdini settings, will become available in Prism standalone.
That way it is possible to use renderers like Redshift in Prism standalone.
../../_images/Prism_Karma.gif

Creating Custom Solaris Presets#

Create new shelf tool

import PrismInit
PrismInit.pcore.getPlugin("USD").api.houdini_createNewPresetDlg()
../../_images/usd_createPresetShelf.jpg
You cannot run the snippet in the Houdini Python Shell, because it needs to be run in the GUI thread.
../../_images/usd_createPresetDlg.jpg
The presetname will be visible in the nodegraph tab menu.

The node defines the Houdini nodepath, which will be saved in the preset. All childnodes of the selected node will be saved.

The location defines where the presetfile will be saved on disk.
The “User” location is by default at this path: %userprofile%\Documents\Prism2\Presets\Houdini_Nodegraphs
The “Project” location is by default at this path inside of your current Prism project folder: 00_Pipeline\Presets\Houdini_Nodegraphs
The “USD Plugin” location is at this path inside of the Prism USD plugin folder: Presets\Houdini_Nodegraphs
This is the location where the default nodegraph presets are stored.
Saving custom presets in this location is not recommended because they will be deleted if the Prism USD plugin gets updated in the future.

Prism will load presets from these 3 locations automatically. If you move a preset file to a different location you need to manage the registration of the preset yourself.

Running Custom Python Code when a preset is loaded#

class Prism_MyPlugin_Functions(object):
    def __init__(self, core, plugin):
        self.core = core
        self.plugin = plugin
        self.core.registerCallback("pluginLoaded", self.onPluginLoaded, plugin=self.plugin)

    def onPluginLoaded(self, plugin):
        if plugin.pluginName == "USD":
            plugin.api.postPresetLoadHandlers["My Custom Preset"] = self.onPresetLoaded

    def onPresetLoaded(self, presetName=None, kwargs=None):
        self.core.popup("Preset %s" presetName)

QuiltiX#

QuiltiX is an open source MaterialX editor, which can be used to create and edit materials for USD assets. A free download is available here: here.

../../_images/quiltix.jpg

Prism and QuiltiX can be used together for powerful material authoring workflows.

To integrate Prism and QuiltiX the QuiltiX root folder must be set in the Prism User Settings -> USD tab.

The Prism-QuiltiX integration can be found in a few places:

In Prism:

  • If you have the “Texture Library” plugin installed you can rightclick any .mtlx files in the libraries and select “Open in QuiltiX…” from the context menu. This is especially useful when you have the “GPU Open” material library enabled in your project settings, which allows you to download free MaterialX files.

  • In the Prism Usd Editor you can rightclick any MaterialX layers in your Usd layerstack and select “Edit in QuiltiX…” to open the MaterialX file in QuiltiX and also load the Usd stage including geometry into the QuiltiX viewport.

In QuiltiX:

If you opened QuiltiX from within Prism using the options mentioned above, there are a few additional features available in QuiltiX:

  • The scenegraph and the viewport widget are replaced with the Prism scenegraph/viewport widgets. This allows you to modify the scenegraph hirarchy and use additional controls in the viewport. The viewport toolbar can be opened using the shortcut “x”.

  • A new Prism menu in the QuiltiX menu bar allows you to save you material as a new version. This requires that the .mtlx file is saved as a product in your Prism project. You can rightclick a .mtlx file layer in the Prism Usd Editor and select “Copy material to entity context” to save a material from a custom location as a product in Prism.

  • In the “View” menu you can find a new “Libraries” option, which integrates the Prism libraries into QuiltiX. From here you can drag&drop HDRIs, textures and materials from your library into QuiltiX. You can also save your material into a library by rightclicking in an empty area of any of your libraries and select “Save current nodegraph…”.

USD workflow examples#

Guides#

Example Projects#

Houdini USD example project

This example shows a basic setup of a USD asset with materials and a simple animation and lighting in a shot. Download