Collection-based namespaces for objects and other collections
This is one of a pair of proposals intended to reduce the amount of typing involved in naming objects. The other is Object name-driven names for mesh datablocks .
What it is
It would be very convenient if object names semi-invisibly included the names of collections they belong to. For example, suppose I have this outline:
Collection A
--Collection B
----Object X
--Collection C
----Object Y
Then the names of objects
X
and
Y
would truly be something like
A.B.X
and
A.C.Y
. The advantage of this is that now objects
X
and
Y
could both be named
X
:
Collection A
--Collection B
----Object X
--Collection C
----Object X
But would truly have the names
A.B.X
and
A.C.X
.
In the outliner, the fully qualified names would not be shown. But they would appear in datablock selection widgets, since otherwise a human user could not distinguish them.
This suggestion would also apply to collections as well as objects and other items. Currently, two collections cannot share an identical name, even if they are contained in different parent collections.
Why it's useful
A model of a house might have several rooms, and each room might have a floor. Multiple rooms might have a bookcase.
Currently, users would have to make do with something like this:
House (collection)
--Living Room (collection)
----Living Room Floor (object)
----Living Room Bookcase (object)
--Bedroom (collection)
----Bedroom Floor (object)
----Bedroom Bookcase (object)
The words "Living Room" and "Bedroom" are needlessly typed out many times. And if the user wants to rename the Living Room to "Den", then they have to change it in many places.
Collection-based namespaces eliminate this needless typing and help to make maintaining organization less time consuming.
4 Comments
here to upvote this proposal.
would love to see a full hierarchical namespace for blender, based on Collections, instead-of and/or in-addition-to the current "monolithic global namespace".
patterned after how unix pathnames work:
for those complaining that an object can exist in multiple collections, in unix-speak, these are called links . (A file or object exists in one primary place, but can be linked from multiple folders or collections).
50+ years of software development suggests that hierarchical namespaces are a persistently useful concept. Hierarchical-environment lookup of context-dependent names is relatively easy to implement (just ask lisp- or python-interpreter developers).
Then the name "nose" remains "nose" for all characters -- it doesn't changed to "nose.003" depending on the order in which assets are added to a file.
In various fields of the Properties panels, have an option to toggle full/partial pathnames. So when you specify a Depth_of_Field "Focus on Object", it could show "Larry/nose", which seems much more helpful than "nose.003".
((i haven't used Maya))
A single object can be in multiple collections.
Have you ever used Maya?
Maya has a "layers" thing for a "visual" heirarchy kind of management.
Maya also has an "outliner" thing for a 3d object parent relationship heirarchy kind of management
Blender's outliner and collections are kind of a mix of both of these things.
Collections are not like folders on a hard drive. It is more like tagging in a database system.
I can tag a photo in my photo gallery software as: me, mom, dad, brother, dog, outdoors, summer, river, barbecue, 2007, july, vacation, etc.
I can tag a single light via collections in Blender as: point lights, indoor lights, colored lights, cool lights, practical lights, christmas tree lights, non-blinking lights, instanced lights, parented-to-curve-point lights, etc.
What you need is better batch renaming features that affect objects and meshes at the same time.
What if you copy a bookcase from the bedroom to the living room, containing another bookcase already? That will clash. That's why all objects are named uniquely.
You came to "specific workflow" district with it. That is why here no votes (someone even gave -1 I guess). My advice - try to learn a bit of python scripting basics, at least some copy/paste operators from console moves and simple for loops.
A bit of scripting and custom operator you need.