Swapping Low Rez to High Rez

In Maya,
After animation is complete with the low rez model, how does one usually go about swapping that out for the high rez model ?

“it entirely depends” of course, based on your pipeline.

At a high level, the ‘rig scene’ could be a combination of other referenced files: You ref in the ‘core rig’ file, ref in the ‘skeletal mesh’ file, attach (often constraints) them together. The animators reference that scene and get to work. Later, replace the reference to your hew high-res mesh in the ‘rig scene’ : that propagates to all the animators files they next time they open the files / reload their refs…

Or, maybe you ref the skeletal mesh into a new scene, and procedurally generate the rig on top of it, and the animators reference that. Again, it’s easy to just steer the reference in that ‘rig scene’ somewhere else to propagate that into the anims.

Often, you don’t need to at all depending on the dev environment: For example, in games, we rig a very small number of our ‘characters’ vs the whole, since they use a shared skeleton: The animators work on a light-weight template version, while what you see in-game is the high-res mesh for all the variants. Film of course has different dependencies in this pace clearly.

Ok. Understood, mostly. Im not using references because I’m doing this small project by myself and
there’s only one character in the scene. How would I proceed with this type of pipeline ? This project is a short film.

Not using references will make this a bit of a hassle I think…
If you already have two versions of the asset (lowdef and high def) skinned on the exact same rig, the quickest way might be to simply export the rig animation with the Atom plugin and apply it on another scene on your high def asset.

Ok, Thanks !
Whats the difference between the Atom and the regular animiImportExport pugins ?

I’d highly encourage you to start :slight_smile: Small or large project, making references to any asset in your scene is the way to go. Makes any sort of changing so much easier.

Atom is a newer format Maya introduced that lets you abstract all sort of things to xml, like deformer weights, and animation data. It does the same thing as maya’s anim import/export plugin, but supports more options. But equally as clunky, we have to wright wrapper code to make any sort of use of it in production.

A wrapper is clearly needed in a pipeline context, but the basic maya UI will be enough for your needs as long as the rig is exactly the same (names and arborescence) between hd and ld versions (match by string works well)

Just don’t forget to select every objects when exporting and importing.

Great Info ! Thanks Much. I will attempt references.
Is this wrapper done in C++ ?

I do understand what you mean about referencing, very powerful.
Does referencing make sense to use in animation for film or just games ?
Say I want to use referencing to bring in a high def mesh for film over an already animated
rig that has a low def version bound to it. Would this workflow be correct ?

  1. Create parent scene file.
  2. Create reference: rig bound to low def model.
  3. Create reference: rig bound to high def model.
  4. Load in reference: low def model / rig into the parent scene file.
  5. Create animation on referenced low def model / rig in the parent scene file.
  6. In reference editor, replace reference to: rig bound to high def model.

Do I need to export my referenced asset as a proxy asset as well ?

“Say I want to use referencing to bring in a high def mesh for film over an already animated
rig that has a low def version bound to it.”
Based on that sentence, not impossible, but not easy: You need to build your pipelines with referencing in mind from the beginning, it’s far more difficult to retrofit them later.
But technically, Maya lets you select nodes and ‘export selected as a reference’ : this effectively does an ‘export selection’ on them to a new scene of your choosing, then replaces the nodes in your current scene with a reference to that new file. So it’s a starting point to help in this process: You can then go update that new scene with the new mesh, and it will reflect in your animation scene based on the new reference that was setup.

If you were going to build a referencing-style pipeline from scratch, there’s a lot of different ways to do it based on production types. To me, the industry (games\film\commercials\etc.) doesn’t really matter. I can’t think of a reason you’d ever not want to setup a pipeline based on referencing: No negatives, lots of positives. All that being said, I’m a game dev for context.

The 6 steps you listed above are a valid pathway.

What we do is:

  1. Make a ‘SkeletalMesh’ scene for your asset: Just mesh skinned to joints, that’s it (no rigging). This can be highres, lowres, whatevers. But let’s pretend it’s lowres for this example.
  2. Make aa new empty scene: Reference the SkeletalMesh scene into it: Procedurally build our rig on top of this (via Python). This is the ‘Rig’ scene for that asset. If we ever update our python rigging code, we just re-generate this scene again with the updates via our tools.
  3. The animators reference the RigScenes (however many they need based on the asset requirements of that scene) into their AnimationScene, and get to to work.
  4. Later, you make a new highres SkeletalMesh scene for the asset: Just point the RigScene’s SkeletalMesh reference (via the Reference Editor) to the new SkeletalMesh file : Now, every AnimationScene that had a reference to that RigScene gets the updates based on the new highres SkeletlaMesh.

There’s all sorts of variations on this idea, based on the existing production/pipeline you’re working in, but above has got me through many productions successfully.