The renderman/arnold/vray procedurals transfers all the agent metadata to the meshes (all the metadatas names has a atoms_ prefix during rendering). It is possible to use these metadata inside shaders. This can give you more control on agents variation during rendering.
For example you can create an agent group and with an addMetadata module you can create a metadata called myColor. Use the agent override dialog to set different value on some agents.
Create a simple renderman pxrsurface shader and as diffuse color connect a pxrattribute node. Set the name attribute of the pxrattribute node to atoms_myColor and set the type to vector3.
Now you can export this material using the Renderman material exporter from the Atoms menu. And you can prepare an agent variation that use this shader. The you can render and you will see something like in the picture on the right, where the shader color is taken from the myColor metadata
This can be done also in arnold using the aiUserDataVector各レンダリングエンジンの手続きは、エージェントメタデータをレンダリングメッシュに転送するように処理します。このプロセスは、すべてのメタデータ名に接頭辞 "atoms_"を追加します。シェーダ内から、これらのメタデータを使用して、レンダリング時にエージェントのバリエーションをより適切に制御することができます。
例えば、AddMetadataモジュールを使用してエージェントグループを作成できます。AddMetadataオプションで、メタデータの名前として「myColor」を設定し、タイプを「Vector」に設定した後、エージェントのOverride Dialogを開いてエージェントにランダムな値を設定します。
バリエーションシーンに戻ります。簡易的なRenderMan Pxrsurfaceシェーダを作成し、PxrattributeノードをDiffuseカラーに接続します。 「Variable name」アトリビュートを「atoms_myColor」に設定し、Vector型に設定します。
こちらのマテリアルをすべてのメッシュに割り当て、Variation Builderを使用してバリエーションを再エクスポートします(必ずターゲットのレンダリングエンジンとしてRenderManを選択してください)。
シミュレーションシーン内で、バリエーションをもう一度インポートして、バリエーションをエージェントに設定します。レンダリングすると、右側の図のように、myColorメタデータからシェーダカラーが取得されるレンダリングが表示されます(AddMetadataモジュールは、引き続きエージェントグループに適用され、上記のように設定されます)。
これは、ArnoldでaiUserDataVector / Int / Float / ... node or in vray using a VrayUserColor node as well.ノードを使用して、またはV-RayでVrayUserColorノードを使用しても実行できます。