What is the best approach to improve library overrides?

Been directed here from blender-coders chat: Library overrides work well for animated rigs, but not so well for modifying assets. Want to address this:

As an animator I work regularly on a large city scene (a collection with many nested collections) - which I frequently need to modify to suit each scene. A seemingly simple use case: swinging a door open on one of the buildings in the (nested) scene. (see the reddit link). Current solutions are clunky, fiddly, and proving a drag on production.

However I’m also a former C++ software engineer who has been studying the Blender source with a view to contributing, and looking at several possible solutions. Seek prior advice so I don’t chase it down the wrong rabbit hole.

Possible solutions:

  1. Improve the library override code (e.g. to support nesting): Right-Click Select — Blender Community
  2. Improve Geometry Nodes so it can filter instances in collections: Right-Click Select — Blender Community
  3. Do the whole thing using existing Geometry Nodes (basically, if an asset is static, do it as a Collection to instance. If it is dynamic, do it as a single-point mesh with a Geometry Node). However Geometry Nodes graph’s aren’t ideal for positioning elements in a scene, so instead do an Addon which lets you convert an otherwise static collection into a Geometry Nodes Asset (A single-point mesh with a GN attached), and then you can modify the GN to your hearts content.

I suspect Solution 1 would be a lot of work, since overrides have wide implications. 2 also, though collection filtering might be more generally useful for everyone per “Everything Nodes”. And Solution 3 seems the easiest so long as there are no upcoming changes to the underlying GN and library overrides which break it, or even just making it unnecessary (e.g. if library overrides were to suddenly support nesting). Feedback on chat was 3 (doing an addon) was unwieldy. I agree, but it might also be the easiest way to make something happen if solutions 1 or 2 are too involved.

Which is the best approach here? 1, 2, 3 (… or is there a 4?)


A few links I’ve found that may help with the Solution 2 route:

1 Like