So, finally got something that seems to be kind of working in id-remap branch (see also the associated design task), and hence made some test builds available (updated 2016/01/16, see log below).

WARNING: Those builds are highly experimental, do not use them in production, nor on any file you want to keep valid! No corruption is expected – but you know, we do experimental builds for a good reason, issues are never expected. 😉

That said, let’s see a bit what id-remap is about. It’s a spin-off from Asset project, which requires ability to hot-reload libraries in Blender. This lead to hot-remapping of ID datablocks inside Blender, that is, the ability to totally replace all references to a given datablock (e.g. a material) by another one of the same type (and expected to be compatible!).

In theory this was rather simple, we already had tools to loop over ID usages in our code, but to use them in that case we need a totally valid and consistent handling of referencing and dereferencing IDs. I won’t go into dirty details here, but our master branch was far from that state. Some issues were fixed directly in master, but most implied some more involved changes that will likely rather end up in the 2.8 project.

All in all, code in id-remap should now allow for several cool features:

  • Possibility to remap an ID, that is, replace all usages of a given datablock by another (compatible) one. So e.g. you can replace all usages of a given material by another. Or all usages of a low-res mesh by its high-res version, etc.
  • Possibility to live-reload libraries.
  • Possibility to live-relocate libraries (i.e. select a new one to replace an existing or missing one).
  • Possibility to really, easily and properly delete a datablock in Blender (without having to save and reload .blend file).
  • etc.

The four first points above have been implemented in id-remap, and I’ve tested successfully library reloading with some rather heavy and complex files from Gooseberry, but now I need some real-life testing!


To reload or relocate a library in those experimental builds, just go to the Outliner, select the Blender File view, right-click on the library you want to refresh, and select the desired option (if you want to relocate, a filebrowser will open to select new lib .blend).

If everything goes smooth (yeah I know, it won’t), you should see nothing, aside from linked objects being updated. Please report any issue to the bug tracker, as usual, stating clearly in title it’s about id-remap. 🙂

Updates Log

This lists changes/updates/fixes of each new testbuild:

  • 2015/11/30 build:
    • Updated against master f798c791cda, id-remap 1da2edfb257e.
    • Fixes bug when reloading and linked object is selected (reported by zeauro over IRC, thanks).
  • 2015/12/07 build:
    • Updated against master de0672436bf1, id-remap 8bbfd2729a2.
    • Adding proper deletion of IDs and whole libraries (from Outliner).
  • 2016/01/16 build:
    • Updated against master 9137a4401440d, id-remap 6eec8eaa57ff.
    • Fixed some crashes.
    • Fixed bad behavior of some new rmb menu options in outliner (not ‘taking’ the right item below cursor).