Referencing, Asset Management & Push vs Pull
By Neil Blevins
Created On: Apr 30th 2022

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.


This site is ©2023 by Neil Blevins, All rights are reserved.
NeilBlevins.com Twitter Mastodon Bluesky Instagram Blogger Facebook LinkedIn ArtStation Kickstarter Gumroad YouTube IMDB