RenderMan for Maya improves Alembic rendering workflows by consolidating existing functionalities.
There are now different ways to render Alembic archives in RFM. We will review them one by one.
This documentation uses an Alembic archive of the Rolling Teapot model from Brice Laville Saint Martin.
You can download it here.
Exporting geometry to alembic from Maya
First, you need to export your geometry so that RenderMan may render it correctly.
To make it easier, we have added a few export functions in RFM to guarantee correct results, but you can roll out your own based on our work if you need to customize it.
You can find it in the Archive section of the RenderMan menu...
...or by right-clicking the archive icon in the RenderMan shelf.
We export many geometric options using our menu selection to provide enough data for other bridge products, such as:
Constant real32 rman_micropolygonlength Constant int16 rman_watertight Constant uint8 rman_traceDisplacements Constant int16 rman_autoBias Constant real32 rman_traceBias Constant real32 rman_displacementBound Constant string rman_displacementCoordSys Constant uint8 rman_emitPref Constant uint8 rman_emitWPref Constant int16 rman_subdivScheme Constant int16 rman_subdivInterp Constant int16 rman_subdivFacevaryingInterp Constant uint8 rman_outputColorSets Constant uint8 rman_emitFaceIDs Constant uint8 rman_emitNref Constant uint8 rman_emitWNref Constant uint8 rman_preventPolyCracks Constant int32 rman_motionSamples
As you can see, there are different options depending on how the archive will be rendered:
Export for the gpuCache node
When exporting for the gpuCache node, the alembic archive will be sent directly to the renderer, without being processed by RfM. If your scene contains polygon meshes that are either smoothed (using the Smooth Mesh controls) or carry RenderMan's subdivision surface attributes, we need to make sure they will be exported as subdivision surfaces instead of poly meshes. This menu includes a pre-processing step before calling the usual Alembic export dialog.
We use the gpuCache node to reference, display and render regular, high quality Alembic archives.
It is different from Maya's GPU cache workflow where you save a simplified version of your scene, simply to keep large scenes more interactive.
Always use our Alembic Export menus for best results. If you try to render alembic files saved via the Cache > GPU Cache > Export... menu, we can not guarantee the results.
Export for imported/referenced archives
When an alembic node is imported or referenced in a Maya scene, the archive's nodes will be rebuilt as Maya shapes and must carry their original RenderMan attributes to render as expected. Our export menus include a setup step to make sure all relevant attributes will be saved in the alembic cache, as well as uv sets and subdivision surface creases and corners.
Rendering Imported or Referenced Caches
Alembic archives can either be imported or referenced in Maya. You can attach materials to them and they will render exactly like any other piece of Maya geometry.
They are great to light and shade animated characters without the burden of evaluating complex rigs. They are not so great when the archive contains a large number of nodes with heavy geometry, in which case you might consider rendering a GPU cache instead.
Rendering gpuCache nodes
Creating a new gpuCache node
The easy way
Right-click the archive icon in the RenderMan shelf and select "Import GPU Cache...". A file picker will open, the node will be created and made visible to indirect rays.
The hard way
Start by importing your alembic file via the GPU Cache menu. If the menu doesn't appear in your Maya, go to the Plug-in Manager window to enable it.
For animated GPU caches please select: Use Global Time
In this example, I imported the Rolling Teapot model. Note that the whole model is now a single node in Maya, which by default will be rendered by RenderMan.
The default attributes will appear in the RenderMan section:
- Render Alembic Cache
- MUST be enabled to render.
- RLF File Name
- The full path to a RenderMan Look File that will be applied to the Alembic file. You can use the editor described further down the page to create and save RLF files.
- Edit RLF File
- Open a standalone RLF editor to modify the file referenced in RLF File Name. See Assign materials for details.
- Edit objects
- Open the shape editor to modify the contents of the alembic file. See Geometric edits for details.
- Inspect Alembic section
Read archive contents
Click this button to parse the contents of the archive and display its contents in the node lists.
Large alembic archives may take many seconds to parse. Be patient...
The node list may incorrectly display large number of deeply nested nodes. To work around this Maya bug, we only expand the first 3 levels by default and suggest using the filter field to explore the archive.
The parsed data is saved on the node so it may be displayed quickly without having to re-parse the file, but you will have to re-parse the archive if anything has changed in it.
You can "solo" any point in the hierarchy (display only the selection) by double-clicking in the list. To display everything again, double-click the top node (ABC). This has no impact on the final render.
- Render Alembic Cache
The contents of the node list can be filtered using a glob expression.
matches any single character
matches any character in seq
matches any character not in seq
- Node list
- A hierarchical view of the archive's contents.
- Each node will display its properties as an annotation. This is useful to check if your archive contains the properties you need.
This can be toggled with the View node annotations check box under the node list.
- Node list
For efficiency, RenderMan for Maya does not export all shaders, it only exports materials which are attached to geometry. This will lead to issues when batch rendering GPU Caches.
To workaround this issue, Please Enable "Output All Shaders" in the advanced menu of the RenderMan Render Settings.
As of RFM 24.4, it is possible to define the
RFM_RLF_DEBUG environment variable (its value doesn't matter) before launching RFM to get debugging output at render-time.