RIB Archives

RIB Archives

Introduction

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.

  • Note

    The RenderMan Archive feature only works with RIB that is generated with this new mechanism.


User Interface

The RIB Archives Menu

To create a RenderManArchive node, choose Create from the RIB Archives menu. When nothing is selected, this will simply create a RenderManArchive node; you can then browse to an existing archive file in the Attribute Editor. If DAG nodes are selected upon creation, a new RenderManArchive node will be created and parented under each top-level selection. The new node is responsible for archiving the DAG that contains it.

RenderMan->RIB Archives menu:

Create

Creates a new RenderManArchive node, or one for each DAG selection. Note, this menu item does not cause archive files to be written to disk.

Create and Write Archives

Creates a new RenderManArchive node for each DAG selection and generates the archive .zip file for each node. Note that, by default, a GPU cache is exported, which can be displayed in the Maya Viewport (see GPUCache Workflow, below).
images/createRIBArchive.png

Select Archive Nodes

Selects all RenderManArchive nodes in the scene.

Update Selected Archives

Re-generates the archive files for any selected RenderManArchive nodes that are responsible for archiving their siblings (this is indicated by the Contents setting on the node).

RenderManArchive Node Attributes

RenderManArchive nodes are tagged with the following attributes:

Contents

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".

RIB Archive

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".

Start Frame

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".

End Frame

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.

GPUCache Workflow

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.

images/displayStyle.png

In the unlikely event that you have chosen not to create the GPU Cache by default, it can still be created and exported manually:

  1. Select a RenderMan RIB Archive.
  2. Export the GPU cache: Pipeline Cache->Export Selection
  3. Import the GPU cache: Pipeline Cache->Import (browse to the .abc file that you just exported).
  4. Select the new gpuCache shape node that appeared.
  5. In the Outliner, drag the RenderManArchive node from under the original DAG node to be under the new gpuCache node.
  6. In the Attribute Editor, switch the contents setting from Siblings to Existing RIB Archive.
  7. Delete or template the original geometry.
  8. Render, and you'll see the original geometry.

RenderManArchive .zip

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.

File Naming

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.

Archive Location

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.

  • Note

    For more information about $PROJ, please consult the Asset Management documentation.


Known Limitations

  • 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.