Multiple Shader Groups

In Maya, it is possible to assign a shading group to a group of faces resulting in several Shader Groups per mesh. When adding a mesh to the Assets panel, those Shader Groups are listed automatically:


Example of a Mesh having several Shader Groups attached.

As the Character File (.gcha) only lists Shader Group names, actual Shader Groups need to be loaded in the render scene before rendering (see Rendering Workflow). When the scene is translated in RIB, Shader Groups are added to the RIB as well and Crowd Characters can assign those to their geometries. The problem is that, when a multiple Shader Group mesh is translated in RIB at render time, its Shader Groups are converted in a meta-Shader Group.

<Payload Id="plasticSG-metalSG" Label="" Source="1" Content="1">

Resulting RIB generated from the example above.

Thus, when rendering Crowd Characters with meshes with multiple Shader Groups, when we look for plasticSG for a face and for metalSG for another face, those do not exist in the RIB and the meshes are not shaded properly.

Workaround

To force Renderman to export the Shader Groups which are part of the meta-Shader Group, on their own as well, it is required to create dummy meshes (like a Cube polygon) and assign the Shader Groups as a single Material. The dummy polygon does not have to be part of the Crowd Character, it just have to exist in the scene. So when the scene (and the dummy polygon) will be translated in RIB, the dummy polygon Shader Group will be translated as it as well.


Example of dummy meshes of force plasticSG and metalSG translation

And the resulting translated RIB:

<Payload Id="plasticSG-metalSG" Label="" Source="1" Content="1">[...]</Payload>
<Payload Id="metalSG" Label="" Source="1" Content="1">[...]</Payload>
<Payload Id="plasticSG" Label="" Source="1" Content="1">[...]</Payload>