When to link external blend files

I understand the benefits and the economy in memory and the functionality, of using instances of any repetitive model.
I can understand the functionality of external library system.
I have read but cannot understand the economy of linking a single instance of a resource from an external file. Is there such benefit?
The relevant chapter in the Blender Manual does not deal with this (though I seem to recall having read about the topic of economizing means with linked libraries).

Example: add a bouquet of roses in a vase as a decoration in a larger scene such as a whole living room.
This asset may be complicated with several objects and data for each. Linking has an obvious advantage of a clean, minimal representation in the referencing file (if you want the “thing” as is).
But is there a saving in the scene in the use of memory? and even rendering times?

basicly you use linked objects when you have a big project like an animated film. 2 minute short film has somewhere around 25 scenes. Each scene needs it’s own file. You want to make sure that each character, rig, prop, enviroment and so on in each scene is always exaclty the same.
Theoreticly you could do it in one blender file using multiple scenes, but with 1 blender file only 1 person can work on the same time. So linked objects when having a group project is necessery.

It’s also better to heep assets in seperated files, because its easier to find them and reuse them in other projects.

It does not reduce render time and memory usage as you have to load those assets from other files anyway.
It does however speed up saving the file.

Offhand, I’d guess no, but as a workflow -especially in a big project or a group project - it’s far superior because there aren’t a bunch of local copies to keep track of. There’s ONE copy. Obvious utility there.

But for an individual anmiator working on a one-off, not quite as much. Unless you are building your own libraries.

The new asset manager workflow will save each asset in a unique file, so this is definitely the recommended way of doing things. I’m just not very used to doing so and often just start doing everything in one file (and what about corner cases, like a library of tree branches, surely there not every branch would go into a seperate file). Issues then start to arise when I want to instance stuff, as the collection I’m instancing has to be at 0/0/0, because otherwise the whole instancing just won’t really work properly - and there is no way to disable a collection from being rendered, while at the same time have all of it’s instances be rendered. I guess in the future, with the Asset manager, there will be a button like “save as asset” and it will save the whole thing as a seperate asset for you.

Until then it’s a great idea for a script / addon actually:

  1. Select stuff
  2. Start the addon (idk maybe via search or hotkey idk)
  3. The addon will automatically put the selected stuff inside a new file, save it somewhere, relink that stuff into your scene and delete the originals from your scene.

I guess this clears the fog a bit.


Asset Wizard helps with this task.

Thank you all for your input. The video is good @MarioPeper
Because most all the input regarded functionality, I decided to do a test for System Resource Usage (memory and speed).
I made a source file with a huge object, consisting of a meshes with more than 10Million faces, then placed this object in a collection. I linked from the source to other files and duplicated:

  1. In the file MemoryTestCollection.blend I linked the collection and duplicated. Took that instance and duplicated it in the file using Copy&Paste, Αlt+D and Shift+D. Made no difference (since the copies are all place holders, no detail data)
  2. In the file MemoryTestLinkObjectAltD.blend I linked the object from the source and duplicated it, using Alt+D, Duplicate linked. Performance during editing, and resulting file size were the same as the first case
  3. In the file MemoryTestLinkObjectShiftD.blend I linked the object from the source but then duplicated it using Shift+D instead. The interesting note in this case is that the file spiked, despite the fact that you cannot edit the instance prototype and all instances are identical (and if you edit the source file all will modified).

File sizes, each file contains the original from the external source and 3 duplicates of that :
image

Conclusions regarding System Resources only:

  • For a single instance in the file referencing, it is practically the same to Append, Link an Object or a Collection with that same object, from the source
  • To duplicate identical instances, regardless for appended or linked objects use Alt+D, duplicate linked.
  • Duplicating a linked collection instance can be done in every way without bloating the file size, but seems to be no more efficient than Alt+D duplicates of any original from an external source file.
  • It was surprising to me, that Shift+D (or Copy&Paste) duplicates of linked originals from a source file (be it object or collection instancing) bloated file size.
    I did not anticipate this since I thought I would be like copying a placeholder only, since the data is only a reference to an external bulky source, not the details of the source… nevertheless

Of course the cases above each have different functionality and hence applicability.
Among Linked Collections and Linked objects, Linked Collection Instances do seem more “clean” and fault-proof from careless duplication usage within a project file, even though it seems a slight overkill in the case of a collections consisting of a single object.

Actually, it’s quite simple. Once you are at instances (alt + D) you should stick to them. Linked Data can be recognized by the chain symbol.

If it’s uniquely / locally editable, it’s going to take up more space.

It was surprising to me because an individual link to external source takes almost no file space. 2 or 3 individual links also. So why does a (unique) copy of something that does not take up space, add a lot of space? (as opposed to making a brand new link?)
Anyway this case had no unique functionality for me (since I can just make a new link or copy duplicate of the existing) and I have achieved the goal of the exercise and know how to economize and what to use when and why.

I >>imagine<< that in the file, an external link is merely a pointer to the other file.

But once you instantiate a linked object locally, in an editable fashion, the current file has to maintain a COPY of that link’s data, including at worst (?) case, “packed” image files. So, again, I imagine it comes down to the difference between a pointer and a copy.

But that’s just speculation on my part.