Hello, the on-the-fly generation workflow you described for Arnold is exactly the core concept we are aiming for, but integrated within a USD asset structure. An important note about our pipeline: our primary render engine is V-Ray in Maya2024-2026
I have prepared and attached a basic Maya test scene that replicates our standard studio groom setup.
Feature Coverage:
I have deliberately built this test scene to cover the maximum possible range of Ornatrix features to ensure the new workflow is robust. Inside the setup, I have used: A density map to control and mask hair growth in specific areas. Hair groom deformation driven by displacement map. The branchMode feature. A standard set of core modifiers (Frizz, Clump, Detail, Length, etc.)
Here is a detailed breakdown of our scene logic and how we envision the ideal workflow (the video is attached too)
1. We use the AdoptExternalGuides operator for connect simulation to the groomMain
The Outliner structure is as follows:
"groom_grp" - contains the full Ornatrix procedural groom, emitter_geo, AdoptExternalGuides sim setup, control curves
"geo_01_emitter" - the base geometry (scalp/body)
"geo_01_groom_driver_crv" - the driver curves used to guide the shape and dynamics/simulation of the groom
2. Our Current Publishing Pipeline:
Currently, this setup is published in our pipeline as a single master asset called "groomMain"
However, we separate the components so other departments can work with them in the modeling, shading, lookdev, lighting and animation stages:
The groomMain: we save/publish the entire "groom_grp" (with the full Ornatrix stack + emitter_geo + AdoptExternalGuides sim setup).
The Driver Curves (output_curves): Published separately so the CFX department can simulate/attach hair simulation caches to these specific curves directly in the render scene.
3. The Desired USD Workflow
We would love to translate this logic into a strict USD pipeline. Here is a step-by-step of how this should ideally work:
Step A: Export
We export the "groomMain" asset into a MasterCharacter USD file. Alongside it, the procedural groom stack is automatically saved as an external .oxg.yaml file.
Step B: Assembly (The Master USD) During the scene assembly stage (in Maya), we load this master USD. We then connect the character's body animation pointCache to geo_01_emitter and the CFX hair simulation cache to the geo_01_groom_driver_crv curves (via USD overrides/payloads).
Step C: On-the-fly Generation in V-Ray / Maya... This is where we need the new feature. When the assembled scene is opened/imported in Maya for the final render in V-Ray, the Ornatrix plugin should:
1 Read the metadata or a reference inside the USD pointing to the external .oxg.yaml file.
2 Reconstruct the procedural modifier stack.
3 Automatically pick up the incoming USD animation from the emitter (geo_01_emitter) and the simulation deformation from the curves (geo_01_groom_driver_crv), feeding this data into the AdoptExternalGuides node.
4 Dynamically generate the final, high-res animated hair on the fly during rendering with V-Ray.
Please let me know if this breakdown makes sense, or if I need to adjust the test scene in any way to make it easier for you to test.
Thank you again for your time and support!