Shared Material Library Across a Team – Portable Linking & Remote Asset Libraries
Hi everyone,
We are a small team building an internally used Blender add-on that quite a few people in our company use to create 3D models – with one shared material library. We are stuck on a workflow question and would love to hear how others handle this, or whether we are misusing the system or missing something obvious.
Current Setup
- Our add-on is distributed automatically to all users through a CI/CD pipeline. It is installed into each user’s
AppDatafolder, so the path is different for every user – it contains the Windows username. - The add-on ships a material library (about ~40 materials).
- The materials are used inside other scene files, which are saved to a separate repo (Git LFS) on the local computer.
- When we add or change a material asset in our library, we would like that change to be reflected in everyone’s files without having to reapply it.
The Workaround
We link the materials inside the finished scenes, because this is the only way we know to get library updates into existing files.
The problem: the .blend files store the path to the local library file, which for us lives inside the user’s AppData. When someone else on the team opens a scene from the Git repo, the library cannot be found, because their AppData path is different.
As a workaround, our add-on fixes the library paths: whenever Blender opens any file, it rewrites that path to the current user’s own AppData material library. This feels hacky, to say the least.
What We Tried: Remote Asset Libraries
We were initially excited about this feature and built a small proof of concept:
- generated the listing files
- hosted the library on cloud storage
- browsing, applying and thumbnails worked great – nice job there!
However, it does not seem to fit our case:
- Only Append and Pack are available as import methods; Link is not offered for remote libraries. Append and Pack create copies, so updates would never reach existing 3D models.
- The downloaded library ends up in a user cache folder in
AppData. If we link the materials from there via scripting, we are back to the same problem: the path contains the username and doesn’t work on another computer.
Questions
- How is this scenario usually handled in small studios where multiple people work with the same material library on different computers?
- Is there a built-in way to make library paths portable between computers that we overlooked (e.g. path variables like
%APPDATA%)? - Are there plans for remote asset libraries to support linking, or any other way to update assets that came from a remote asset library?
Thanks in advance – any hints, experiences, or “don’t do it like that – do it this way” stories are very welcome!