Detailed Description of Request:
The way that 3DS Max handles external maps and textures currently is via a standard pathing system. When you save a scene or material library, a reference to any external assets are stored inside of that file. When you re-open that file, 3DS max follows a "search order" as described here:
For a quick breakdown, basically 3DS Max locates maps in the following order:
1. The path saved with the file.
2. The directory of the current scene.
3. The paths listed in the External Files panel, starting at the top of the list.
4. Every subdirectory under the directory of the current scene.
While this search logic can work well for scenes and projects, it does not effectively translate well for artists who are looking to create and maintain a centralized database of materials, nor does it synergize particularly well with the creative process.
Creating the actual .mat file is a no-brainer. You simply create your material and then save out a material library in slate. Problems can start to arise when you perform any of the following:
1. Reorganize directories of textures on disk, effectively breaking the pathing saved with the material library.
2. Sending your material library to other people (who have different file structures)
A lot of tedious solutions to this have been accepted as "best practice," despite not being terribly efficient in the first place:
1. Creating and appending unique IDs to any maps that are used in your material library so that the filename is unique from any other file, and adding this new path to your external path configuration.
2. Never, ever, ever (ever) changing the folder structure of your external asset libraries on disk/server.
What I am proposing is a more intuitive way to create and maintain material libraries that don't involve a series of tedious steps to ensure they don't break when the structure of your actual HD changes, or when you share files. These solutions are:
1. The ability to "commit" and embed actual images inside of any material library that you create inside of slate, effectively internalizing all map dependencies to a single file. If you want to send a library of materials to someone - you simply send them a .mat file. Done. I envision from a technical standpoint that this could be accomplished easily with zip compression and relative pathing. No renaming a ton of files to prep for archival. No pathing woes. No more broken references.
2. If the above is technically infeasible for whatever reason (I can't possibly see how), I can think of an alternative approach that would still be lightyears ahead of the current implementation. Allow the user to set a "master" map path on a per .mat file basis that would be prioritized first during the search order described at the beginning of this post when max tries to locate maps for your material library. This would allow users to relink all broken maps for any given material library by simply pasting a single directory where all relevant material textures and maps are located.
Some of you might be quick to point out that you can already do this by adding this directory to your external path configuration, but this would really just be an incomplete solution. By doing this you still expose your material library to potential naming conflicts (woood302044.jpg however unlikely, may also exist in another material library, and get loaded instead). With this approach, you ensure that the correct maps for any given material library are actually loaded, irrespective of their file name.
3. If the second implementation was chosen above, a new feature would also need to be introduced similar to the resource collector that currently exists for projects/scenes, allowing you to collect and save all maps common to a material library in a directory of your choosing. This would allow users to archive material assets a hell of a lot more quickly and efficiently.
Irrespective of the suggested implementations above, I want to underline that the basis of this feature request is to empower users to create and archive powerful material libraries without the tedium and file management nuances inherent to 3DS Max's pathing logic. I think more people would make use of this feature, reuse materials, share materials, and otherwise become more efficient with material creation if a system like this existed.
Why this feature is important to me:
As a creative professional, I dislike when technology forces me through several tedious processes just to ensure that my assets load correctly. Uniquely renaming hundreds of files and discouraging me from reorganizing my HD because of pathing interrupts my creative process and discourages me from using what could be an amazing feature, all together.
Screenshot of proposed feature: