Appologies in advance if this has been discussed already. It seems most new ideas for blender are typically not new, but searching, I didn’t find anything similar discussed.
While working on my bools script, I was thinking it would be handy for debugging if I could tag extra information on faces and vertices, that I could get back later after the script finished. (Specifically labeling verts as inside/outside/both). I was thinking about it some more, and surely export scripts could benefit a lot for tagging extra data onto materials for alternate shading systems. My conclusion is that blender would benefit from having the abiulity for python scripts to store arbitrary metadata in any blender object. Metadata would be stored in a heirarchy of dictionaries. For example, for my script, I create a “BooleanResultData” item in the object’s metadata dictionary. In the boolean result data dictionary, I store two items - “inside” and “outside”. There would probably need to be support for storing any base python type, as well as blender objects. (like other verts, etc)
Then, there would be an optional separate script that idenifies it self as a metadata manager stored in .blender/scripts. Somewhere in the bottons window probably, there will be a list of metdata dictionary items for the currently selected object/vertex/texture/world/camera/etc/etc. For each item in the list there is a button for “browse data structure”, and if a handler script exists a “manage” button. At the end of the list would be an add button, to add named metadata, or pick from a list of handled metadata. If the manage button is available, it runs the script to manage metadata with the name. If the “browse data structure” button is clicked, then a generic data browser is opened.
The metdata would be saved in the .blend.
The most useful case of this I can think of is managing advanced texture/shader data export/import. So for implementing, that’s probably the logical starting point. However I’d imagine it should be applied everywhere, just in case it may come in handy.
I’m not saying I plan to code this. I’m just throwing the idea out for feedback.