Pipeline : Reference to a master or to a version file


I would like to hear some opinions about how to use referencing in productions.
I am mainly working in animation industry but I assume these questions are also in game industry ?

I have an animation scene that contains tons of rigs.
Each rig is referenced to a published rig file.

The rigger publish is a followed :

  • a new VERSION gets created
  • and / or the MASTER gets overwritten

Now my question is do you reference it to a VERSION rig file or to a MASTER rig file ?

I see advantages in both systems and also blockers.
And I would like to ask what kind of systems you had experience with ?
Listening to our riggers, they like it that artists are instantly hooked with there rigs so they have full control.

Reference to MASTER :
+/- you will always have the latest rig in your scene automatically

  • you will have the latest rig possible no mistakes of forgetting to update
  • if the rig breaks the scene breaks instantly
  • difficult to lock versions on your scenes

Reference to VERSION :
+/- no direct update

  • artists needs tools to update to a new version
  • speed : when opening the scene loads all assets in, after that you need to update (can be time consuming for artist and processing)
  • scene files are locked

The main problem I see with referencing version is the time artists lose in updating and managing there assets (which maybe is part of the job)
The problem i see with referencing a master is losing control over your scene content, confusing artists that things change in the scene without them knowing.

I think it is also dependent on what kind of production you are working (the scale, amount of people, the communication)

So any suggestions on this ?
Are there good techniques to get rig of the main blockers in referencing to VERSION file ?

Thanks !

What you’re describing is often referred to as a push (“master”) vs pull (“versioned”) pipeline. You describe the pros/cons quite well but another approach is to use a hybrid of both systems. For example the animation scene starts life as a push pipeline - so the animator always gets the latest rig updates as they work. Then after a certain milestone such as animation approval / pre render they can opt to switch to the pull pipeline (ie they point to the versioned equivalents of these rigs) So they don’t inherit unrequested updates after their work has been finalled. This could be important before sending jobs to the render farm - you may not want the assets versioning up between one frame and the next

We switched to the publish to master system a couple of years ago, and our versioning is also split in two steps, revisions and versions (revisions are based on client feedback, versions are for internal usage)
The main reason for the switch was the endless human error (even with a small to medium team) that came with referencing versioned assets rather than a single master (especially on deadlines/crunch)

It depends on what software you’re using as well. 3ds max STILL has no usable referencing, so among your two options, pull/versioned is the only possibility.

A third option, however, is to treat the scene files as “throwaway”. Save everything out into raw element files - skinning, meshes, skeletons, animations - and rebuild the scene on demand for editing, then save the component data back out when you’re done editing. I’ve heard this is done at some studios. We’re investigating something similar for part of our pipeline.