Page MenuHome

LibOverride: How to handle heavy data-blocks (meshes, shape-keys, actions...)
Confirmed, NormalPublicDESIGN

Description

Problem

Storing overrides of potentially heavy data-blocks uses a lot of space in .blend files, for data that is not overridable at all (like mesh geometry, existing action FCurves, etc.).

Proposed Solution

Write, store 'empty' versions of those override data-blocks, instead of complete ones.

Pros:

  • Saves a lot of space in .blend files using overrides.
  • Makes saving and loading such files slightly faster.

Cons:

  • Those files are not 'autonomous' anymore, if the linked datablock is not available the override will show broken or not at all.

Note that technically, this should be fairly easy to implement (although some IDs, like actions or shape keys, may be less trivial since we ultimately want to allow creating or replacing whole shapes/FCurves in those). Also CC'ing the UI team, since this is more of an UX decision to make than anything else?

Identified Affected ID Types

  • Meshes (other obdata types are probably small enough to not be worth the effort here)
  • ShapeKeys
  • Actions
  • Images
  • Any other ID type allowing to embed big-ish files?

Event Timeline

Bastien Montagne (mont29) changed the task status from Needs Triage to Confirmed.Jul 15 2020, 12:26 PM
Bastien Montagne (mont29) created this task.
Bastien Montagne (mont29) changed the subtype of this task from "Report" to "Design".

I don't think files with overrides should aim to be autonomous, relying on the linked data to be available is correct I think, regardless of the datablock type.

I agree. As a user, I don't consider overridden datablocks to be local, I consider them to be linked and overridden. If the link is broken, I can only blame myself when I see that the override is also broken. Of course warnings and foolproofing for these cases is always welcome :)

Yes, that is also my vision of things, just wanted to be sure there is a consensus about it.

I have many shape key , at same time they are driven by rig (object) custom prop UI controller, which drive mesh shape key values) from add on panell.

Then when I override the Rig and children meshe collection, then mesh set as local, now I can change shape key values, but all shape keys
driver still be driven by library rig props only. But it need to be driven current over-ride rig.

To make all controller work again, after set overridable for all rig.custom props in library by script, then I need to re-assgin all shape key drivers target t, in override scene,
as override rig object, (custom prop) one by one,, with driver editor..

Can I expect, this problem will be solved?