Referencing, Asset Management
& Push vs Pull By Neil Blevins Created On: Apr 30th 2022 Software: Any
If you're a student using a 3d application such as 3dsmax, Maya or
Blender, you've likely had a single scene which contains all your
objects for a particular shot, and you've likely worked on it
exclusively by yourself. But that's not how things are done at bigger
film and game companies, where you have a large team that needs to
share pieces of this scene, working on top of each other to create the
final shot or game level. So this tutorial is a quick primer discussing
the theory behind Asset Management so if you work at a bigger studio
you have some idea of how you're going to slot into the system.
You have two choices with this lesson, watch me discuss the issue in
the video below, or read the full text.
Working Alone Vs Working In A Team
So when working alone, either because you're a student at home or
because you're working in a very small company, your 3d scene is likely
going to contain everything, your characters, your environment, your
cameras, your lighting, your animation. And this will work fine.
Referencing
But what happens when you're now a part of a big team, and you're the
character modeler, and someone else is making the environment, someone
else is placing the camera, and someone else is lighting the scene.
(note, things may be broken up even further, like one person might be
modeling the character while a different person is texturing it). This
is where Referencing comes into play (sometimes also called X
References). No matter what 3d application you're using, Referencing
refers to the same general thing, you are creating a dummy scene that
instead of all the elements living inside the file, the elements are
their own separate files that are instanced into the dummy scene.
Now when someone changes the character file, the characters in the shot
or scene change as well. This is particularly helpful when you have
multiple scenes.
Now, if you make a change to the character (the red arrows), both shot
#1 and shot #2 get those same changes, so you don't have to make the
changes twice to fix both shots. Imagine trying to fix all these shots
by hand if a character appears in 1000 shots of a film. You really need
to use referencing.
Asset Management
So now we've discussed Referencing, the next step is Asset Management.
What happens if two people on a team need to make changes to the
characters at the same time? What if both people open the file, and
then make their change, and then resave the file? The result will be
whomever saved first will get their file overwritten by the second
person. So at its core, Asset Management software lets you not just
open a file, but lock anyone else from opening the file while you make
your changes. No more simply opening the file or copying the files
using something like Windows Explorer, now its time to do your file
management with an Asset Manager.
So the first user doesn't just open the file, they lock it while
they're using it, and so when the second person tries to open the file,
they will be told they're not allowed to edit the file because user 1
has the file checked out. Think of it like a library, one reader has
the book checked out, and the second reader can only check it out after
the first reader has returned the book.
Another thing Asset Management lets you do is versionning. Let's say I
"check out" a file, make a change, then "check in" the file. And I end
up breaking the character and so the character is now the wrong color
or it has an arm missing. When I check a file back in using the asset
management software, it creates 2 versions, and the newer version is
the one the shots or scenes will draw from.
So I open my shot and the character is broken. And it's the end of the
day and I don't have time to fix the character file. All I do is go to
my asset management software and "revert" back to version 1, which
means now the scenes will no longer be using the newest version of the
character, they'll use the version 1 back that is not broken. Now the
character is temporarily fixed, and I can come back tomorrow morning
and try my change again, doing it right this time.
There's a lot of asset management software out there, but one of the
most popular is Perforce, so you may hear that name mentioned a lot.
Push and Pull System
So the final concept is a push or pull system. When using references,
you can use them in two different ways. In a push system, if you make a
change to say the character file, the scene is automatically updated.
So if you open your scene file, without doing anything special, you'll
always get the latest version of the referenced files.
This means if you break the character file, and the character is
referenced into 1000 shots, you now have 1000 broken shots. That's
obviously a big disadvantage, although there are some advantages too.
For example, since its so easy to break everything, a user making a
change to a character file will likely be more careful making their
change, because they know the consequences of making a mistake. Also,
you're guaranteed to always have the latest version of the character in
your scene file without having to do anything.
So a pull system, instead of always having the latest copy of the
character, it makes a copy of the character from the file, and places
that inside your scene. So to get the latest character, you have to use
your asset management software to pull all the changes into your scene.
So the advantage of this system is if someone breaks the character
file, you won't be affected, because you have a COPY of the character
in your scene. However, the big disadvantage is if you forget to get
the latest copy of things, you don't get all the changes and fixes that
have been done. I can't tell you the number of times someone will be
looking at a shot and say something like "why is that character blue?
They should be red." And its because you didn't get the latest copy of
the character file.
In actual production, most people use a sort of hybrid system. Before
checking in your character change, you'll test that file on your own
computer to make sure nothing is broken before putting it on the
network and affecting the whole team's files. And if you're about to
render something, you can lock your scene file, which means if
someone changes the character 1 minute before your render starts, your
file will continue to use the older version of the character file
since that version you've tested and looks good.
But the basics are
still the same, studios tend to favor either a push or pull system, and
each has their own advantages and disadvantages.
Conclusion
So if you're about to make that move from a one person shop to a large
pipeline with 200 people working at the same time on the same files,
hopefully this gives you some basics on referencing and asset
management. And keep in mind, there's nothing wrong with using these
techniques even if you are just a one person team, it makes things a
little more complex, but it can still save you time if you want to
share the same characters or environments between multiple scenes or
shots.