Can we expect at some point a true hierarchy system with groups for Blender?

Hi,

I really am wondering if Blender will ever get groups at some point.

I already asked in Blender Today but Pablo couldn’t figure out what was a group. Maybe a Maya/3Ds/Cinema4D/Modo training day at the fondation just to understand the main concept of CG outside the Blender shelter would be nice for the staff (not being mean at all, just honest, I would totally learn how my competitors are designed if I had my own software company and I would make my staff do the same). Skipping competitor studies/basic features is not viable.

I will explain what are groups then:

  • Groups are (like in operating systems) containers for creating hierarchy systems.
  • Groups can contain either groups or data.
  • In CGI however, groups have their own transform attributes (at least), so you can affect the location/orientation/scale of the content of a group through the group attributes.
    By example: You can put house_1, house_2... house_n and builing_1...building_n in a group called neighborhood and then move all the neighborhood content without having to combine or parent or doing any hack of some sort like currently.

Blender could add modifiers attributes to these groups so that all the content of a group get subdivision, as well are render attributes and more…

The current collection system acts only like a basic tag, and it’s not enough at all to organise scenes.

In the 60s, operating systems had a flat file system where folders could only contain files, it’s pretty lame that Blender (year 2020) is in the same situation.
Not having groups in Blender is a bit like not having any drawers nor fournitures in a house, you have to put everything on the ground, and for simple setups it’s ok but, for advanced setups with 2 thousands objects, it’s… let’s go somewhere else…

10 Likes

I asked the same thing a while back on BA (didn’t go well).

Strange that Pablo didn’t get what a group is considered in 2.7 there was something much alike.

Anyway, I too agree that groups are much needed and also that it would be extremely useful to be able to add modifiers to them.

It seems something it’s being done with the new boolean working on a whole collection, hopefully eventually it will lead to a solution where all modifiers will work like that.

2 Likes

Honestly it completely blows my mind that it’s not a feature since version 1.0 and that it’s still missing today.

I have friends (professional CGI artists like me) the other day that were saying that Blender looks quite interesting now after they see a few stuff online about it. When I told them that Blender have no groups, they were asking me if I was joking, I had to insist that I was not.
They replied basically (polite version) “that’s ridiculous, forget about it then”.
And that recurring feedback is what lead me to create this thread, because indeed, that is ridiculous AF.

3 Likes

We have collections to group stuff and collection instances to provide transform attributes for them. If you think about it makes a lot of sense to threat instances as containers and allow us to “enter” them to edit their contents just like we can enter edit objects with linked mesh data.

Problem is what it’s slow and clunky workflow to manually setup all this stuff (add selection to new collection, put 3d cursor somewhere, then hide that new collection and link it’s instance, move it to 3d cursor) in vanilla blender.

Quick Instances addon solves it by doing all manual work and providing hotkeys. Best thing about is what it uses base functionality and doesn’t invent new type of objects.

I have feeling there is some confusion from blender devs because before 2.80 groups meant something else (old groups worked more like tags). Request for easier creation of instances from selection and ability to “enter” instances would be easier to explain and understand.

Modifiers working with instances I’m afraid is probbaly tied to library overrides or some other internal stuff so it’s harder to achieve.

1 Like

collections/sets/tags are NOT groups.

If you do some kind of workarounds that suits your needs, good for you :slight_smile:

However, groups are groups and I am not asking for tips that are partially solving the issue or half helping,
we need true groups, hence the title.

1 Like

So getting your points I understand this:

  • Groups are (like in operating systems) containers for creating hierarchy systems.

So it’s just a matter of parenting to an empty.

  • Groups can contain either groups or data.
    Put an example about this, but I understand an empty object with some custom parameters, maybe you mean something more, some example is welcome.

  • In CGI however, groups have their own transform attributes (at least), so you can affect the location/orientation/scale of the content of a group through the group attributes.

You mentioned that are containers for creating hierarchy systems, so you are actually parenting.
Once again this condition is met parenting objects to an empty.

AFAIK your concept of “groups” it’s a Maya concept, not sure if it’s shared by C4D or Houdini, but for sure it’s not the “groups” concept present in max at all. so I don’t recognise it as generic as you may think it is.
In fact in max groups are catastrophic and you are way better exploding them and assembling a proper hierarchy, and don’t try assemblies and other “tries” to generate something similar.

Regarding the modifiers, I don’t know a software that can do what you say, but it has more implications that what one can see at first glance, for example, what happens with the modifiers in the objects themselves, also, what happens with the instances? are they converted to real objects at render time? should they be respected? when are those modifiers executed?, and how are they interpreted/mixed with the group ones?

In general, with nodes you may be able to treat collections as groups.

This kind of comments:

Are not helpful, the Blender team tries to be as “ignorant” as they can of other softwares, because there are implications in copyrights, patents, and other “pretty” things that if a company like Autodesk can demonstrate it can generate pretty serious problems, so what you see as “inspiration” and “going out of the blender shelter” it’s a death trap in many aspects.

Do you want to help the dev team to have a pretty clear idea of what a group is? Create a document that deeply explain what a group is in your opinion, taking into account different situations like armatures, collections, different object hierarchies, how should they behave, how should things be applied and be executed, etc… but don’t say “groups like in every other cg software”, first because every software has its own “groups” implementation and it’s not what you describe, and second because that is like saying “but… push the make-it-pretty button!”

You are not either explaining what you mean with groups, as I said, it feels like parenting to an empty object, with the exception of the modifiers example, but as I said, not sure where is that done that way…

5 Likes

I think this is planned:

I don’t think transform options are though.

1 Like

Oh yes! I totally forgot the overrides.
Now quite sure to understand what the concept is about but if they’ll bring modifiers to collections I’m good with that :slight_smile:

The reason behind this I think is that Blender Core relies on a flat hierarchy (HUGE BAD DESIGN DECISION that they should regret a lot).

So now the thing is rotten and not improvable…

Groups are not a tweak or a workaround, they are a base concept, and whatever they add to collections, that is not bringing the needed group feature.

I genuinely can’t work out what you want that isn’t provided by collections.

  1. Collections are hierarchical containers.
  2. Collections can contain objects or collections
  3. You can rotate, scale, translate all objects in a collection by right clicking on a collection, selecting all objects in that collection in the pop up and then transforming them as one.

Since you can select all objects in a collection you can also perform any operation that you can perform on a selection of objects such as setting the subdivision level (Press ctrl + num), whether they appear in renders using the visibility toggles etc. If you want super fine control you can script complex behaviour based on whether an object is a member of a collection or not. None of these are “hacks,” nor is parenting, they’re how Blender works. You seem to want everything to work exactly as it does in program x, rather than working out how you to do what you want in Blender.

2 Likes

As far as I understand it, the main problem is that there is no possibility to affect a group of objects with one modifier.

A simple example:
You have a water bottle which consists of two parts: The bottle and the bottle cap. Then you want to array it to have a row of bottles (with the caps). As far as I know, there is no way to do that with one array modifier. You have to add the modifier to both objects. When you want to animate the parameters of the modifier or adjust the modifier (change the distance or the number of arrays for example), you have to do it for every single object.
That might not be a huge problem for the bottle example but it is when it comes to an object that consists of maybe 50 or more objects (like a complex car or building etc.) Or when you need to handle more modifiers like deformers, subdivision, array and so on… Every time you want to change anything, you have to do it for every object.

Would be great if there was the possibility to add modifiers to a null object for example. Then the modifiers on the null object would affect all objects that are parented to the null object.
Or alternatively (and probably more likely) to add modifiers to collection instances that would behave like one merged object.

I don’t know if there are more “group related” features missing. But that’s the one thing that I really miss in blender and which still keeps me away of using blender as my main 3D application. But I’m happy that there are some discussions about that at the moment. I think that would be a big boost for this fantastic software.

2 Likes

Ah, ok, that does actually make sense. Thank you for the example. I believe this is something that is in the pipeline with the instance override system but I’m not sure where that is up to.
Incidentally the array thing is actually fairly easy to do. Create an object with a single vert. Parent your bottle, cap and any other objects to the vert object. Select vert object and go down to “instancing” In the object properties. Select vertices. Add an array modifier to your vert object. The one array modifier will now array all the objects parented to your vert. You can also instance by face and choose whether to have the instancing object visible in renders.
But yes being able to add something like a simple deform modifier to a collection would be very useful as currently you have to join the meshes together.

2 Likes

Empties are groups lol

1 Like

To @JuanGea’s comment, I want to confirm – “Groups” in Maya are exactly the same as groups in Blender. They are empty transform nodes that can have data assigned, just like empties are Object objects that can have data assigned (in Maya’s case, “shape” nodes, in Blender’s case, a datablock such as a mesh or curve, etc.).

There are some subtle differences, however, in how Maya handles transform nodes… although I don’t think anyone in this discussion is concerned about Scale Pivots or axis rotation offsets or anything like that.

Not exactly, empties can’t group objects but collections do but they don’t have transform information like empties, so combining both collections & empties you get an empty group which is the one used in other DCCs ,Ctrl+G should group objects into one collection and parent them to that collection, or make it create an empty but then it will cause a mess as you’ll have many empties added to your scene, best is to make collections also have transform,parent/child functionality with the objects :slight_smile:

4 Likes

no? when you parent stuff to an empty you have a hierarchy in the outliner. this is literally what you want

collections work more like tags, objects can be in multiple collections at once, so transformations wouldn’t work

I didn’t say they would work as they’re now, design need to be changed to combine both concepts otherwise like i have said you’ll end up with tons of extra empties laying around along side collections, we need to keep the outliner as clean as possible even if it means scarifying some features.

2 Likes

Modifiers stack will be rewritten to become modifiers nodes.
At that moment, we should be able to use as Input of a nodetree an object or a collection.

That is probably already possible to create similar set-up using addons with custom nodes system like Animation Nodes or Sverchok.
Without addons by default, currently, we can define an object as an origin of the effect of a modifier and give to him a unique name. We can copy/paste this modifier from active object to rest of selection.
As is, we can use multi-object editing on all objects of selection having a modifier of same type and same name in their modifier stack.
All objects have to be selected, if user press alt while modifying a modifier setting, all similar modifiers of all objects should be updated and acts like there was one for the whole selection.
That will only work for modifiers allowing to precise a common reference.

We also have ability to use deformers on an object of reference used by specific modifiers (Armature, Curve, Lattice, Mesh Deform, Surface Deform).

I agree that may not be satisfying for all cases. But we have a working solution for most of cases.

One way to array collection instances is to use particles.

Currently, there is a work in progress about a Point Cloud object that should be used by new particle Nodes. So, that should become really easy to array collections using that new object type.
When Particle Nodes would be at a satisfying state, next target of “everything nodes” project should be modifiers.

1 Like

Just want to jump in here on this. Coming to Blender from other 3D and 2D software I was perplexed at it’s lack of groups, in the sense that they store transform data and also allow settings / modifiers to affect their constituents.
Parenting is a poor substitute, as you have to select the single object, as opposed to selecting any of the objects in the group, and having them select the group itself.
Collections, could be great if they had their own translation, and allowed for settings / modifiers to affect their constituents. That’d be so useful.

Is there any effort on looking at this on the developer side?
Are there any documents around why this isn’t something that could be developed (at least the translation) and implemented?

I’d be happy to work on that once I’m done upgrading the asset browser.

2 Likes

Agreed 100%. For me it’s translation first, and modifiers / settings second. But yeah it’s a paint to use the system as it’s currently set up.

I wonder if this is one of those situations where one is so used to using the software as it is, that there isn’t any desire / need to change it. But all you have to do is come from something else and know that the way it’s set up makes it really painful when working with many objects / complex models.

2 Likes