Game character rig with 30+ costumes

Greetings,

I am working on a game rigging pipeline and need some advice on how to handle characters with many costumes.
We have a base character rig and the idea is to have 30+ costumes for him that the user can buy inside the game. How are you handling this inside the character pipeline?
I have tried referencing the costume into the base rig scene and rig and skin it there. It just did not work that well especially if you need to unload and reload costumes because you need the option to not load all costumes when you open the file. Maya starts creating foster parent nodes, which is messy and the rig scene also becomes too heavy if you have all the references loading each time you open the scene.
Another option would be to use the base rig and make a separate rig for all the costumes and then load the animation to that rig and export the animations for each costume. But to have 30+ copies of the same rig just for costumes also feels like it could be done in a cleaner way.
If anyone has experience doing this, I would appreciate some ideas on how you are handling this.

Cheers,

Will

Simplest answer, depending where you scripting is, is likely save out the skin weight, like in a json file, for each mesh. And then make it so you can import/reference the mesh and then skin it and import the skin weighting for it. You’d probably want to build some scripts to help automate that, but that would be manageable. You could probably make your own open/import/reference script that would recognize if there was a skin weight file paired with it and just imports it, skins it and applies the skin weighting. Especially if that window was just showing you the contents of the folder so users can just select whatever outfit they want.
There’s some other ideas I can think of but they all involve making more robust character managers and building out things like sidecar systems which is probably more work than you are looking for.

Did the whole ‘load everything in one big scene file’ - yep, don’t do this imo. If the file gets corrupted your screwed and even if you have a version control system if more than one person needs to work on it you get a lot of pain to deal with. As @Technically_Artistic said I’d compose the assets out of data type files and a manifest. I.e.

Manifest:

  • Joints
  • Models
  • Weights
  • etc…

Make these types as raw as possible - i think its better to let them have more information than less. It also makes it far easier to rebuild data if things break. Essentially you want a process to explode a scene into data files and then re-compose the scene out of those data types. You can then do smart builds like have parts of the skeleton in different files, use the same skeleton for different models, etc. These data types should hopefully be gracefully lossly i.e. a weight data type that supports vertex count/order changes and doesn’t produce broken looking models etc.

You might:

  1. Make a base skeleton
  2. Reference the base skeleton into all of the model files (for skinning). You’ll need to re-skin if the base skeleton changes (so do some tests up front) but that would be true for any other system too.
  3. Reference one of those skinned files into a fresh file and add the animation rig.
  4. Reference the rigged file into animation scenes for work (again, if the rig change you’ll have to reanimate in whole or in part… and again, that’s true for any other option).
  5. If you want to preview a particular combination of animation and costume, reference the costume file (one of the modes from step 2) into the animation and use direct connections to make it mirror the animations on the rig. Since the rig will ultimately driving the same exact skeleton as the one used by the referenced costume, you can just drive the latter’s positions rotations and scales directly. You can even swap costumes by changing the references.

It’s still not ideal – Maya references are pretty lame on a lot of levels – but something like this is not technically challenging and won’t be much less performant than a plain old rigged character.

Thanks guys :slight_smile:
I think I will try what @Technically_Artistic suggested first.
I will start with skinning the costume to the game skeleton and save out the skin data for all the objects.
I will then create a reference manager tool that will list all the costumes available and when the artist loads the costume it will create a reference, bind it to the game skeleton and import the skin data to the objects. When the artist unloads the character it will unload the reference and delete the skin data from the scene.
I think I will also create a script that will open Maya in batch mode and export all the costumes skin and skeleton data to the engine. If not then someone has to export all the animation files for each costume manually. We have 8 costumes now, but the plan is to have at least 30+ when the game goes live and there will probably be more later.
I’ll let you know if this works smoothly :slight_smile:

1 Like