Converting character workflow from proxies to overrides

Because of the deprecation of proxies, I’m going to have to change my workflow from proxy based to library override based, but I’m having some issues and confusion.

With my existing workflow, I link the collections from my character file that I want, like the character’s body, hair, set of clothes, various accessories/props, and rigging. Then I make a proxy of the armature contained in the rigging group, hide the linked rigging group, and everything is good to go.

If I instead try to do things the new way, and make a library override for the rigging group, the other linked parts of the character do not react to moving the armature. They seem to be separate entities that don’t have any connection to the rig.

The way around this that I’ve seen people doing is to have all parts of the character in a container collection, link that big container collection into the scene, then make a library override of that.

One problem with this is that if a character has, say, multiple different sets of clothing, this links ALL of them into my new scene, and then I have to hide the ones I don’t want. This vastly increases the amount of data that blender has to load. Some of my characters have a number of different sets of clothing, props, accessories, etc, only a few of which will be needed in a given scene.

So what am I supposed to do if I want, say, a character’s body, hair, and only one out of of several outfits of clothing? Is there a way to link the collection separately and tie them together? Or am I missing something?

Any help, or even just being nudged in the right direction would be very much appreciated. This issue is stopping me from upgrading to 3.0 until I figure it out.

Hi Tokamak, I’ve also been puzzling on the best way to do this.

I’ve tried the kind of hack ‘solution’ of also overriding each accessory or garment and retargeting the various deform modifiers to the ‘new’ core character rig. This doesn’t work for me, and I’m not exactly sure why. Even if it did work it would be a bit of a pain.

the lowest-effort solution would be as you say to literally just jam every single module for each character in one bloated mega-collection, but each in their own sub-collections so that when you gather your scene you can simply disable each unnesscary module, and then blender doesn’t need to load them… as much. This seems like the intended workflow?

Well, it seems like the intended workflow is probably simply to not have characters with multiple modular variations, as if many artists might not have good reasons to want to work this way, but I digress.

The best-worst workflow I’ve settled on for now is utilising membership in multiple collections to create as many ‘outfit varitions’ as I need in the source file. That way you can have as many ‘pre-compiled’ outfit collections, each with the core rig and mesh collection in them, along with whichever garmets and accessories you want, and you’re not actually duplicating all your heaviest assets 20+ times.

So you’d have say, an ‘outfit 1’ and ‘outfit 2’ collection, and your core rig and mesh collections would be members of both, then maybe one has a jacket, shirt and leggings and the other has a jumper and skirt, and both collections have the same earrings. Nothing is duplicated, but you can link whichever configuration you like into your production scene without pulling in any modules you don’t want, and all the connections are preserved. The downside is to compile a new outfit you have to go into the source file but really I don’t think that’s too bad. it just takes a couple of minutes.

PS If you’re wondering how to add one collection to multiple other collections, I also wondered for a while. Turns out, click and drag in the outliner but hold Ctrl before you drop. Why just Ctrl-click and drag doesn’t work I cannot figure out, but there you go.

Yeah, that was more or less the solution I was arriving at as well. It seems kludgy to do it that way, but I can’t find anything better.
Good to know it’s not just me having this issue, at least.

Exactly what I was wondering. the workflow @Flaurentine had might work for linking in lo-res and hi-res versions of a rig for animation too? I’m hoping?
not a lot of documentation on this yet, makes it a lot harder.

the way I’m handling lods for my rigs at the moment is to have the low res and high res collections all present in the collection I link and override, and then enabling and disabling the collections as needed.

The limitation I’ve reached with the workflow I described is editing character meshes in a production scene. I’m not the only one who has this problem, but for our purposes it’s further excacerbated by datablocks in an overridden linked library essentially being “blind” to other linked assets, even if they have established relationships in the source file. At least, that’s my best guess at the underlying mechanism behind the problem tokamak and I have run into.

I think by strategically appending certian meshes into the scene and paying close attention to where linked assets are actually deriving their deformations from, one can actually get by with this system. Proxies were also a bit of a nightmare for this too, but maya’s referencing system proves that it is possible to do right. If blender’s library overrides could allow the addition of wholly new shape-keys without breaking the link’s ability to inherit changes from the source file, I would consider the animation pipeline much closer to production-ready.

Ugh. This whole thing is a pain. I’m sure library overrides are great, but I had a workflow using proxies that was somewhat involved, and now I have to come up with a new one from scratch, including changing how my saved character assets are organized in addition to everything else.

Adding new more up-to-date functionality is great, but why on earth would they actively take away an existing system that worked just fine? I’m genuinely confused about this.

I’m a little unclear as to how that would help me. Would you be willing to explain?
The issue here is having fairly complicated characters, but only wanting to link a subset of what is available for the character in the source file. If I’m understanding correctly, I would have to do the change on every object every time I want to link a character into a new file…which is a LOT of objects, if you’re dealing with a character with hair and clothing.

Hi Tokamak, sorry for the delay. What I was referring to with “strategically appending” objects has more to do with needing to make local one-off edits to certian objects in a production scene, or maybe creating/switching between LODs.

I’ve been using the system of making pre-compiled collections with various combinations of assets in the source file as needed (described above in my first reply) for a couple of months now. It’s been working well, actually - it feels quite clean indeed. I can’t wait for collections to be added to the asset manager so that things can become truly frictionless but for now it doesn’t look like that’s on the feature list for 3.1. Oh well.

I think the system I use of precompiling the “asset subsets” needed in the source file serves the purpose you describe well - it usually takes me less than a minute if I need to dive back into a source file and tweak membership in a collection or create a new subset entirely!

I’m not sure what kind of change your referring to, but ceratinly any change that you’ll want to show up in multiple production scenes should be done in the source file since that’s the advantage of linking. If you need a particular change in some but not all of your scenes, I would reccomend making an alternate version of the asset in your source file and adding it to a new subset that is otherwise identical, and linking that subset collection instead - this way you don’t need to duplicate data or work.

I think that makes sense. Thank you. :slight_smile:

I’ll probably want to play around with it and get the kinks ironed out now, while proxies are still available to fall back on.

I think I’m getting my head around how this works. I do have a couple of questions, though. If anyone is able to answer them I would be very grateful.

First…what do I do if I need to change my character file in production? Like, say, I add an article of clothing in the character file. What will I have to do to make that show up in a scene using the character where I have already made the library override? Does that make sense? Do I just need to re-link everything, and figure out how to not lose all of my animation data, or is there another way?

The other question is about collections: Can I have more than one instance of a collection in my scene collection tree? I don’t mean “Collection Instance”, but for example, can my collections in the outliner look like this:

Scene Collection
|-- character casual collection
    |-- body meshes collection
    |-- hair meshes collection
    |-- casual clothes meshes collection

|-- character formal collection
    |-- body meshes collection  <---same collection as above!
    |-- hair meshes collection  <---same collection as above!
    |-- formal clothes collection

Is this a thing I can do? Or do I need to make separate collections that just happen to contain all of the same objects? (this can be a big task when there are a lot of objects)

Thank you! I appreciate any guidance I can get.

I’m glad it’s starting to work for you! Two questions, two answers:

First, you’ll be glad to know it just works! since the files are sill linked, if you update the collection you’ve got linked into your production file with a new components they’ll show up as you’d expect. If you add them in a collection you’ve not linked, nothing will change and all the existing relationships will be quite happily preseved. Because library overrides only ever add data on top of what you have linked, they’re resilient to that sort of change - that’s kind of the main reason proxies were phased out. You may (?) need to do some “re-syncing”, although I’ve never had to do that, I’m not the expert there.

Second, yes! you can do it exactly as you describe, the operation is called “link inside collection”, and you do it by holding Ctrl when drag-and-dropping a collection in the outliner. It’s very neat! Not particularly well documented though, I found it by just trying buttons :stuck_out_tongue:

Hope that helps!