Referencing Characters and Objects for Animation

Here is how it is used.

I create a quick and dirty character to animate.

I hand the character off to Dana Freelancer to complete.

I animate 30 shots with that character.

There are also 5 other characters in those shots all being updated by different freelancers. Dana updates the character I’ve been animating by saving a file with the same name as the source file.

All 30 shots update with the new character automatically the next time I open each of their scenes, without me doing anything. Because they are loading the characters from separate files. By file name. Every time the scene is loaded.

And they will update with all of the characters, props and other items. Every time they are updated by different artists, or myself at a later time.

There are ways of doing this in Maya, Motion Builder, Unreal Engine and Unity.

I have not found one in Blender. It appears that objects being used in multiple scenes, need to be 100 percent complete, or it is a nightmarish song and dance of copying things in scene.

I really really want to be wrong about this. Is there a way to load objects by Blender scene file name, and have it load those characters from the file every time the scene file is opened? And manage those assets loaded by files?

Thanks. I don’t really ask many questions, and this one is a bit of a show stopper…or delayer.

In blender terms : you need to link collection, rather than appending objects.
There are two ways of doing it, the old way that is safer and the new way that is still in development.

The old way : https://www.youtube.com/watch?v=qLW27XcH6lY
It’s quite solid, but you have a few downsides :
You can’t modify geometry , change materials, or do stuff with objects without controlling them with the rig.
If you update the rig some tiny stuff might break, it can be a bit cumbersome but it’s manageable, I worked this way on various productions for years.
In short, all objects added to the asset will be handled perfectly through the project, but if you change bone’s constraints or some bone settings it may not update correctly on your shots.
You need to separate control bones and all the other bones (deformations, utilty ect…) in a protected layer of the armature.
Why not put all the bones into protected layer then if it solves all the update issues :
Because then you can’t add constraints to your rig (child of constraints if the character is carring a props) in the shots or change some bones settings (rotation order ect…) they will always be reset once you re-open your shot.
Last but not least issue : you can’t have two time the same character/props, with different animation, you need to make several files for that. If you make 2 proxys , geometry will start to bounce from one rig to another.

You have to test all this to be sure as I don’t remember exactly how all this behave and I’m used to working around all this.
I think the first time you open a shot with an asset that as new bones they will update properly , but if you change some constraints / settings in the master file, they won’t update unless they are on a protected layer.

It’s better to get the rig done as soon as possible so it’s imported properly, you can always fix material or skinning issues later in production.

The new way :

It seems quite promising as it solves manly all the issues the old way has.
But ! it’s still quite experimental, if you update the rig, change objects inside the collections it will probably fail to update correctly for now.
I’ve tested it to see if I could switch to overrides in production and I think it need a bit of time .
Most of the issues I found seems to be taken care of (some developpers are working on it) , so I’ll test it again in ~6 months.
All that said, depending on your need and especially if you are used to change materials or objects settings at render time, or throughout the production , you may look into it and see if at this stage it’s usable for you.
The main annoyance I found is that you need to manually update the rig, (go to outliner select the override and do a resync) which is a no-go for me because I’ve got too many linked assets and too many shots. I’ve looked into a way to automate this with python but it wasn’t available at that time, it’s probably still the case.

Good luck with your project !

Looks like they’re working in the right direction. Seems weird it’s taken this long. I’ll test it out while I’m doing tests and working out a pipeline.

Kudos to you guys who found workarounds.

There is a very weird linearity to the Blender workflow considering all of its great non-destructive and procedural features. It seems like the idea of working on multiple shots in large numbers and revisiting models and scenery is kind of…not usual experience for a lot of users.

Thank you so much for showing me that video.

I see what you mean, proxy system has been introduced to blender in 2006 during the first open movie probably in an hacky way and it stayed as it is since now.
At that time blender was very far from what it is now. Probably to make Overrides working a lot of code refactor was needed, that’s why it has taken that long.
It’s quite new that blender get such a funding to manage these kind of big / long term projects. It’s something also probably less interesting to work on as an opensource contribution, that’s why it’s only now that’s getting into blender.

I think many people know how to use blender in animation production, but indeed there is very few tutorials or youtube channels dedicated to that.

If you know a bit of python scripting you can work around many limitations of the proxy system, still it will be a bit cumbersome and once overrides will be production ready that will open many more possibilities in a cleaner way.

Don’t hesitate to poke me if you have more questions once you’ve looked into all this !

I’m not in a pro-production environment anymore, and don’t have a revenue stream to pay for Maya licenses. Blender can technically do everything I want. But this scene management issue is frustrating.

Essentially what I want is a sidebar tool with a list of every file I’m “linking” into the scene, and when I load the scene, the tool comes up first with a list of all the files that will be loaded with a checkbox by the filename. And I can uncheck files I don’t need (background files, etc), or I can change the filename to load a slower more detailed model or a faster “fast” model. There is no reason to wait for a scene with a ton of buildings and procedural stuff to load all of that when I’m working on a close up conversation between two people and don’t need the 20 background characters to load.

Does something like that exist as an add on?

hum, there are several things here…

For that you can use the outliner, to enable disable every assets in the viewport. If you use proxy rather that overrides (which you probably should) for every asset (char, props, BG) you end up with two object in the outliner (one for the instanced geo and one for the rig) . And that’s generally easy to manage visibility. You can’t check uncheck what is loaded tho, but given blender’s file reading is quite fast it’s generally not an issue unless you work with very massive files. I think in that case you probably be annoyed by slow handling of heavy geometry in the viewport rather than file loading.

You can do that in the outliner also, there is a tab to edit libraries path. I haven’t really tested that way , I switch the instanced collection with a script but it probably should work by changing the filepath , probably it would be needed to save-reload the shot in some way or another.

For asset loading into shot there is the asset browser that is currently in development, sadly it’s a bit early to use for your case . There are some addons that can probably do the job but they are generally more oriented toward modeling or arch-viz rather that animation.

I ended up writing a lot of custom tools to get an efficient pipeline, things like asset-loading / file naming / lowres version of assets… You can probably find some stuff as addons but not an complete solution.

The Outliner would have to read the file and load nothing into the scene until I’ve reviewed all of the linked files and decide which would load.

If I turned visibility off on all objects before saving, and one of them was updated from 500 polygons and 50k of textures to 230 million polygons with a lot of shader networks, gigs of textures and a lot of procedural stuff in the file overnight…does it load into scene memory or load only when I turn on visibility?

Also, is there a way to find the linked file for a character, and change the file name and path? So I can load a different character with the same architecture and reuse animation and scenery?

It will be loaded into memory nonetheless , the only difference when you use hide_viewport ( != using H / Alt-H) is that it isn’t evaluated and isn’t sent to the GPU for display. That gives a more responsive viewport especially when things move.

Yes in the outliner , you can switch to the “Blender File” tab, that allow you to change linked data’s filepath.

You’ve been great! Thanks so much for pointing me in the right direction.

Hope I can repay the favor some day.