Looking for Advice on Proxy Rig Workflow

I’m currently working on a project where Animation is requesting Proxy version of the rigs to swap to help scene performance in character filled shots.

In the past when working with proxy rigs we have have created the two version of the rig and then provided the team with tools to swap the rigs in their scene, replacing the reference of the full rig with the proxy rig.

However the common complaint with this approach was the time it would take to swap the references.

On invetigation it became apparent that the time it takes for Maya to unload a reference is increased depending on how many other assets are in the scene.

So although one character asset on its own might take 8 seconds to unload. That same asset would take 80 second to unload in a scene with 10 other characters.

This meant that the proxy swapping system was almost useless as swapping asset would take to much time.

What I am search for is :
A) Is there a better approach to swapping rigs.
B) If anyone has any insite into the slowness experence when swapping rigs.

This is a topic that I often see in the pipeline, most often with cinematics. “I got everything referenced in, but how can it go faster?” Rigs are built, ready to animate and now it’s a game of how to make it go faster.

Before considering other options — look closely at the bottlenecks and study them. Can you optimize geo before handing off a rig to the animator? Can you deliver a “segmented mesh” without skin clusters? Have you benchmarked load times for each rig independently? Have you tried making files with only rig controls (no meshes) and benchmarked those times?

You could try Scene Assembly. It’s not perfect, has some gotchas and acts a little different than referencing. Not to mention if you have a tools that rely on reference nodes (scene assembly nodes are different), you’d have to account for that. But you can associate “versions” of rigs with it, from your fully-complex rig with 1,000 blendshapes :sweat:, to an optimized low-poly rig with the exact same control hierarchy, to a locator that represents the asset at load time. Users don’t have to hunt down where the references are on disk, they can switch from a right-click menu in the scene they work in.

That said, Maya isn’t great at file I/O (e.g. loading scenes) when it comes to animations on complex control rigs made with native Maya nodes. It’s OK, not great, at playback.

Optimizing Rigs for Parallel Evaluation speeding up your rigs is going to be the best way vs. all the file IO

Are the files saved as Maya ascii?
Reference swapping becomes a python text file operation in such cases.
I built a tool for converting absolute reference paths to relative paths
It reads all references from the Maya ascii text without opening the file in Maya
And the users selects which references to update before “really” opening the file in Maya
Python text manipulation is much faster than having Maya do it.

1 Like