Collection Instance make no sense. And there is another solution

I honestly think that collection instance can be trashed. They make absolute no sense. Think about instance a layer that get added to a empty in order to move it and you have no access to the objects inside… who had such a crazy idea?

But you do not have to use them at all. Just one example, you arranged a table, with chairs and decoration and want to have it 10 times in your scene. At first you may thing about instancing a collection, but the problem is, you have copies that you can’t manipulate or variate. So you may put all elements into collections to do that, but that even makes less sense.

Now Blende has got no groups… beside the pro group add-on of course, which is fantastic. But, it had geometry nodes and they can do the job for you. The cool thing about geo nodes is, they instance an object from the button of the modifier stack. Remember Blender has no instance, just reference (linked mesh data). So if you have to linked mesh object and add a subdivision moodier (or any other) to it, the will not bring you any performance gain. If you have them a hundert times, you have just 100 times the mesh data.
But geo nodes, do the trick.

So the solution is to build a rig out of geo nodes. Well, actually in geo nodes and make the positions of the items random or use input values to control them. You scene will be super fast and you can add moodier to your sources.

More than this, you do not have to worry about instancing, sorry linking object with geo data. Because as long as the have no mesh data, they just nulls and as long, as you use instances for the geometry you will have no only instances in your scene.

I actually do not understand why there is no instance object jet. It would be just an empty mesh, with geo node pointing to another object (incl. its modifiers.) Hope developers pick that idea up, its terrible simple and so needed in Blender.

Have you proposed this on right click select?

Not yet. Someone should its truly simple. We only need geo nodes to work on empties. and expose the object to instance in the modifier and voiá we have true instances.

Defiantly not.

The fact that a collection instance treats multiple objects (and their animations) as one is what makes them useful.

You can move, scale and rotate an instanced collection that has been animated without ruining the animation due to constraints, and modifiers (like curve modifiers that are dependent on world cords.)

There are many use cases in which it is practical to instance a collection where you do not need to move the individual objects about separately in the instanced collection.

If you want to transform the object instances separately you can select multiple objects and ALT D.

What would be useful is the ability to “link” modifiers of different objects in the same way as you can link materials. I do not think that it should be the default behaviour for ALT D but I agree it would be useful. As you say it can be done with geo nodes, but I think it would be nice to be able to do it in the link menu.

1 Like

I actually do not understand why there (still) is no proper grouping system that allows you to apply things to groups - like materials or modifiers(!!!).


Nor motion…

Well Groups are generally a missing feature. But the bigger problem, helping with performance are instances.

An instance is always a copy of the original, without a way to manipulate it. Data Link is more of a reference system, that allows manipulation. The thing is all about performance and if you have a group with instances inside everything is fine.
However Blender has no groups or instances yet.

Blender tries to merge the two concepts for groups and layers into one, and in my opinion totally fails. So for examples, collection could have a transform in order to be more like groups. They don’t, but when instances them, they suddenly have a helper object, to more them. Thats cheating.

A good example is the array modifier. Notice that it increase the number of polygons used. However if you create an array via geometry nodes, it doesn’t, as it uses instances. So why are there instances in geo nodes, if the aren’t in any other area?

Why can geo nodes instance an object incl. its modifier, if there isn’t a way doing without geo nodes?

That all makes no sense.

I assume because geo nodes is new. Since nodes are supposed to replace modifiers in the future, or even now, it makes no sense to change the modifier.
Just use geo nodes instead of the arraay modifier.

You forget that geo nodes is also a modifier.
I don’t think they replace the modifier concept. But if you could link geometry to the modifier (not in the node) you could very easily build a new array node based on instancing. Well of course vertex merge would not work without making them real, but for the rest its not a big thing.

I guess they keep the modifier concept, but rather extend the power of nodes. In theory you can almost great an whole scene in a single node. Especially once you can access external scenes from within geo nodes.

Why does it matter if geo nodes is a modifier for this issue?

It is my understanding that geonodes or nodes in general is supposed to replace modifiers sooner or later.
What are currently modifiers is supposed to be replaced by a bunch of high level nodes. Meaning that instead of an array modifier you will get a geonodes preset that does what the array modifier does.

This makes it possible for more advanced user to modifiy the array modifier but keeps it as simple as it is now for less advanced users to simply create an array.

So for the less advanced users it will look and function the same or similar, meaning that they can still stack “modifiers” on top of each other. Under the hood it will be geo nodes presets. More advanced users can go into the “modifiers” and change them to their liking or create completely new ones.

Therefore I don’t think it makes sense to update the old modifiers. Just replace them with geonodes equivalents.

Its even simpler in 3.1 with the geo to instance node.
So in that example below I made a copy of the base mesh, incl. the modifiers before the geometry node as instance. So SubD modifier is than part of the instance. That way an array modifier could work. It just needs some imputes to generate the points.

The really cool thing is, that the object it self differ the instance. Could be all easier with more modifier nodes, that features all options, but its a start.

If you create the 20K objects this way does Blender start getting slow like it does when you duplicate an object 20K times?

Haven’t tested it. But I guess 20k objects slow down Blender a lot. Anyway, I did indeed test that with instance collection on a scene. The scene uses a lot objects to construct are larger station. All the elements have subdivision and I did a lot collections to keep the overall poly count down. However the scene performance was not really good.
Then I redone the scene layout by taking the source meshes and used geometry nodes to distribute all the instance. Ended up in 20 objects that used the hidden sources. The scene is many times faster.
So with the method in 3.1 I testing a different thing, where each source mesh has an geometry node that tells how the instance of the object get distributed. The advantage of that method is, that I can easily crap the source, edit it or access the shader.

One thing that I however miss is a way to build geo nodes objects on selection sets (face map). This could be really interesting, because then you can use parts for different operations. Like the select modifier in 3dsmax can.
In other words, you can take a face map to add subdivisions, or another for mirrored mesh, and so on. You could really build fantastic things just with a single object.

The viewport performance is only bad because of the viewport has to display a lot of polygons, though, not because of the amount of objects.

You can add millions of objects to your scene without object amount related slow down. With instanced collections that is.

You may be badly misinformed about the technology. First of, there are two types of geometry, the real and the instanced. With instances I can easily have 800 million polygons in my viewport… not in Blender, but in others it works wonderful.
The size of the viewport does also matter, as much as the amount of viewports.
The amount of objects depend to how the software differs object. No software that can gave as many object as C4D in my testing. 200k, no problem. But absolutely impossible in Blender. With more the 50000 individuals Blender becomes sluggish. It surely depend if instances or not, but keep in mind that the software need to manage the coordinates of each individual object.

I have an example scene where I did distribute plants on a field. They are instances of course, as its a particle system. But at 30.000 Blender viewport becomes really annoying slow. The same scene I have in Modo and C4D. In Modo I could go up to 140.000 instances before it even start to get slow. C4D is a bit strange here, with 30.000 it started to get laggy, but when I converted the particles to object ( simple press c), the lagging was gone and could double the amount of object ( did double the gorup)

With collection instances you can have several million objects in you scene. I mean, how else would you render cities and forests in Blender?

I think the misunderstanding is the following.
In Blender the scene gets slow at around 20k objects. Not necessarily the viewport, though. But if you have 20k objects in your scene adding another object starts taking long. Same for deleting objects and other operations.

With collection instances you can combine millions of objects into a single object and keep the scene smooth. Again, not necessarily your viewport. The viewport might be sluggish because of all the data but you can prevent that by setting up your instance collections properly.

This is one if the things that makes collection instances very valuable.

Just as an example:
Here are 15 Million Suzannes.
Each of the little pink blocks are a collection instance A consisting of 1000 Suzannes.
Each of the large blocks are a collection instance B conisting of 1000 collection instance As.
This means that every collection instance B is 1 Million Suzannes.

You of course have to set up the display in the viewport adequately. But by simplifying the display in viewport it runs like there is nothing there. Because there is almost nothing there.

how about not using box display?

Like I said, the viewport will get sluggish then due to the data load it has to shovel.

Blender getting slow because of viewport load is different from Blender getting slow due to object load.

1 Like