RenderMan for Maya includes a new RenderManArchive node, fully integrated with Maya. The RenderManArchive node can be used for generating and referencing portable RIB, enabling accelerated iteration over a scene. Taking advantage of the new RIB-in-.zip support in PRMan 17, the RenderManArchive generates a single .zip file for an object hierarchy in Maya, be it a simple or complex model. A .zip file collects RIB files for each piece of geometry, which are in turn referenced as DelayedReadArchives for each frame in a sequence.
A RenderManArchive node draws a bounding box in the Maya viewport for its associated archive file. The node can sit independently in a scene, and reference an existing baked asset, like a .zip, RIB, or .abc (Alembic) file. Or it can be nested below a transform node and be responsible for archiving its sibling nodes as a .zip when the user chooses to update, and then reference the archive at render time. After archiving, original geometry can either remain in the scene and then be re-baked as directed by the user, or stand-in geometry can be created and given a reference to an existing archive file. The use of stand-ins allows for constructing Maya scenes of greater complexity than could be managed within Maya using the original geometry, which is referenced at render time.
Re-baking archives is only necessary when geometry has changed. Shader binding information is stored externally in RenderMan Look Files (RLF files), which can be updated without re-baking geometry.
The RenderMan Archive feature only works with RIB that is generated with this new mechanism.
RenderManArchive Node Attributes
RenderManArchive nodes are tagged with the following attributes:
Siblings indicates this archive will be generated (when the user chooses to update), and it will also be referenced at render time. Existing RIB Archive means that the archive will only be read, never written. The actual attribute name is "crew".
The file name of an archive. When contents is set to Siblings, this file name is used for both writing and reading; otherwise, it's just for reading. The actual attribute name is "filename".
The initial frame number to use when reading from the archive. See the Create/Update option dialog (image above) for the frame range to use when writing archives. The actual attribute name is "startframe".
The frame number for the final frame to use when reading from the archive. The actual attribute name is "endframe".
Lightweight References to Archives
Using RIB archives while unloading original geometry is critical for allowing construction of Maya scenes that would not fit into memory otherwise. RfM draws a bounding box for the contents of a RenderManArchive node's referenced archive file. Maya 2013 includes a new GPUCache node that bakes geometry to a lightweight pre-tessellated Alembic cache and shows a preview in the viewport; this node can be used in conjunction with a RenderManArchive node for a more detailed representation than just the bounding box.
In Maya 2013 the new GPUCache node can be used in conjunction with a RenderManArchive node so that original geometry can be unloaded from the scene while still "previewing" geometry in the Viewport. The original geometry will then render at render time. By default, a GPU Cache is exported whenever you create a RenderMan RIB Archive.
If you select the RibArchiveShape node you will find a Display Style dropdown list, giving you the option of viewing the GPU Cache, a Bounding Box representation, a Locator, or nothing at all in the Maya Viewport, depending on your needs.
In the unlikely event that you have chosen not to create the GPU Cache by default, it can still be created and exported manually:
- Select a RenderMan RIB Archive.
- Export the GPU cache: Pipeline Cache->Export Selection
- Import the GPU cache: Pipeline Cache->Import (browse to the .abc file that you just exported).
- Select the new gpuCache shape node that appeared.
- In the Outliner, drag the RenderManArchive node from under the original DAG node to be under the new gpuCache node.
- In the Attribute Editor, switch the contents setting from Siblings to Existing RIB Archive.
- Delete or template the original geometry.
- Render, and you'll see the original geometry.
RenderManArchive nodes generate .zip files by default. The nodes are also capable of referring directly to RIB or Alembic files. The .zip file collects many RIB files, so it is portable and faster to write than many independent files would be. Within the .zip, each piece of geometry is written as a separate RIB file, which is referenced in a per-frame "driver" RIB as a DelayedReadArchive. This allows for efficient memory usage during rendering. It is possible to simply unpack the .zip file and inspect the contents or refer to a driver RIB file directly.
The name of the archive file is generated automatically when the node is created and appears in the RIB Archive field in the Attribute Editor. This name can be edited, and then the next time the archive is updated, the new file will be written. If the node name changes, reference to the file is not lost - there's a button in the Attribute Editor to Update filename that can be used if you wish to automatically regenerate a file name that matches the node name.
RIB for RenderManArchive nodes is written to $PROJ/renderman/ribarchives by default. This location is one directory level up from the usual RIB location for a scene. We've assumed RIB archives will typically be shared among scene files; renaming a scene file should not break a reference to an archive.
For more information about $PROJ, please consult the Asset Management documentation.
- If an archive requires motion blur, it needs to be baked with motion blur on. Note: users can initially bake with motion blur on and then turn blur on and off in the Globals without requiring re-baking.
- Filtering tightly bound shaders based on pass type does not work with RenderManArchives. In other words, the per-pass settings like outputShaders and outputDisplacements have no effect on tightly-bound shader assignments in RenderManArchives. When writing an archive's RIB, these settings are queried from the Final pass, so even if other passes, like Shadow, have different settings, the archives will be rendered with all the shading that is output for the Final pass.
- Meshes with component shading require re-baking of RIB if the component shading attachment changes.
- Referencing Alembic files on RenderManArchive nodes is only supported on Linux at this time.