Collection Instance make no sense. And there is another solution

Object Data was never ever my concern. In theory you could just link a background scene. It doesn’t matter. Its all about viewport display.

Well, you want to get rid of collection instances, and collection instances are very useful to keep object data at bay.

Using a background scene instead of collection instances is nowhere near as flexible as collection instances.

well, but you do NOT need the collection instance, when you have the array in a single geo node. And then you can copy that geo node, you do not even have to data-link it, and it will just load the geometry a single time.
The difference to your example is, that with geo nodes you can display all the objects… no need for boxes.

Sounds great.
I hope I find some time to learn geo nodes over christmas / new year.

The scene setup is going to be interesting. Importing CAD scenes and somehow automatically transforming them into geo nodes. If that turns out to work decently I’ll be happy. :smiley:

2 Likes

yeah could be cool if an importer would do blocks that way. I once did that manual by converting all instances into particles with saved transforms and the used a particle system. Was a model with thousands of screws.

Regarding groups I think this looks very interesting:

I’m about to buy it as I feel we might be waiting a long time for proper grouping to show up officially (or does anyone know anything else on this?).

I highly recommend the Quick Instance (Groups) add-on. https://m-soluyanov.gumroad.com/l/qinstance

It’s completely free and is really straightforward. It’ll index the collection in a library scene and then instance it into your main scene. You can edit the instance by hitting “tab” and it’ll isolate it in your library to edit.

I have also used Group Pro and that’s great too. I just prefer the hotkey commands and simplicity of Quick Instance (Groups).

The power of an instance collection is amazing and should not shrugged off IMO. I also think native collections could be improved to behave more as a traditional group that is standard in other 3D softwares.

2 Likes

Thanks for the recommendation of the free group add-on. Didn’t know that. But I prefer to wait for build in one. But yeah it could take time.
Then I like to explain 3 things here:

  1. Instances are not meshes, they are basically empties that point to a geometry, or group of geometry and clone this group 1 by 1 without the ability to add modifiers or deformers to it. Its indeed just an empty. Thats how its defined. Hence Blender has no object instance, however it has instances in geo nodes and the collection instance. Do not mix terms, its important.

  2. Data-Link Object. Blender uses Data Linking, which is a cool feature. With data link you can get performance boost on objects only if you haven’t add any modifiers! So they are still no instance, but references of the mesh data. References are identical, there is no source object, just identical object coping the mesh data. Outside Blender this is also used as References. However in Blender Data Linking is more complex. The performance advantage of Data-Like comes from the developers handling them as instances, as long as they have no modifiers, however that limits also options, like apply transform, linking modifiers etc.

  3. Collection Instances. The whole thing is outdated do tue geometry nodes. The only missing feature is instancing light objects inside the collection and maybe an easier workflow, else collection have down points in performance and usability in compare to geometry nodes.

Example1: You have a mesh that uses a Subdivision modifier and with it applied it has 200k polygons. If you doublicate it, you get 400k polygons in your viewport, no matter if tis data linked or not.
So, if you need two of this object in a collection that you want to instance, you have to put another sub collection in and instance that, to get only the 200k polygons. So instance collection in instance collection is possible, but not a really easy to manage workflow. If you don’t do that, your performance will be less good.

Example2: You can do the same with a geometry setup much easier. You take an base object that can have a geometry node modifier, curve or mesh plane, doesn’t matter as you do not display it. Then you just drag the base object into geo nodes, mark it as instance, do a set position node for the second object to be placed and join the geometry for output. You will get a instanced of your original object, shown two times and only use the 200k polygons.
You can even adjust the modifiers, as the object exist only once in your scene. It can be moved into a hidden collection, without problems. You can also apply any transform, etc.
One further advantage indifferent to collection instance is, that you can adjust the shaders. Simple add them to the base object. For me that was the deal breaker, made me remove all collection instances in my scene.

Well, you can simply put your subdivided object into a second collection. Call the collection “myInstance_01” for example. This does not need to be a sub collection. This collection does not even need to be liked to the scene or any scene at all. It can live in the blend file and if necessary you can give it a fake user.

Then instance “myInstance_01” as often as you want to. No need for sub-collections.

Sure, this is a bit more complicated than just using a one click “instance now” button. It is also more flexible, though, because it allows you to add more stuff to the instance later on by dragging stuff into that collection.

From my understanding this is the same thing that other programs call an instance as well except that (at least some, like 3ds Max for example) do not allow to add more objects to a single instance.
Other programs merely use a different UI to create and access the instances.

1 Like

One big plus of the paid Group Pro add-on is though, you can edit any of the objects and it affects its peers. You do not have one object which can be changed, but any of them can be changed and affect the rest.
At least this is how I understand it.
Seems a very neat interpretation of groups.

Please learn other software first. It is many miles from that. Much more complicate and totally confusing to use. And I really don’t want to do an own blend file for each instance… Again, please experience workflow in other apps first.

Heh, don’t worry, I have 15 or so years of 3ds Max and a couple of years with Unreal.

You don’t need a different file in Blender and it is really not confusing once you get the hang of it.
Simply try the following:

  1. Create cube
  2. Put Sudiv modifier on cube
  3. Press Ctrl - G to put the Cube into a second collection and call it “my_instance”.
  4. Note that “my_instance” is not inside the scene.
    4a. If you want to you can right click your cube in the outliner and hit unlink to remove it from the scene.
  5. shift-a → Collection Instance → my_Instance
  6. Now duplicate my_instance as often as you want to.

Granted, in 3ds Max you simply shift-drag and select the “instance” radio button. But in 3ds Max you can not add other objects to this instance. At least that was the case back in 2015 when I left Max for Blender.

1 Like

I described that above, nothing new. Now do that with ever object in your scene and get nuts.

Found another interesting usage. The asset browser in Blender 3.0 does only support single object.
However, you can build an object through geo nodes, with instances etc.
So when ever you append this asset it will also place copies of the sources for instance in your scene.
But now comes the super cool thing, if you just link the asset, no additional files get to your scene, just your composed asset.
The only down point is that you can’t edit the geometry nodes or use inputs to do so… hope that comes.

^ that’s my biggest gripe with 3.0 and the asset browser. Instances and real copies coming into scene too. Alpha versions of 3.0 let you append just the instance.

I’ve been linking my instances into the scene via the asset browser. From there, I “Make Local” and then can edit my instance.

I think the asset browser functionality will improve soon so that this will not be needed. A bug report was filed and just fixed today for instance collections and copying/pasting the real objects. I’m hopeful this will be cleaned up as they go.

Well the whole propose of linked data is to not have to edit it. Well it would be cool if you could just make a shader local or have assets use a proxy or lodfy with more ease.
Anyhow the thing I do is, for example on my mega scan stuff, I have a base scene with a collection of objects and then I just instance this as linked data to my scene.
The bigger issue for me is that Blender has no way to prevent textures and shaders to look up in material view. Meaning Blender always load all textures into material view and will load them again into cycles or Eevee, not only cause lot memory usage, but also delays.
So with assets I wish we could have a system where texture only show up in rendering. Because with assets its mostly clear that when you link them, you won’t need to check the shader in Material view.
Yeah I know you can prevent that, but its all about workflow.

Anyhow, with the geo nodes I can now bring in not only single objects, but complex ones. For example I have vase with a lot different flowers, each of them is an instance copy, else it would be 3 Million polygons. With Geometry nodes its just 120.000.

Oh and forgot to say, its really nasty that assets or append or linked data come in without the collection they have been using before… thats really pain.

I found a new trick. Case, I had an object with 10000 polygons important and 20 instances. With SubD modifier this turned to around 100.000 faces. And with the modifier applied to all instance ti was 2.000.000 faces. Not really acceptable.
So I took one mesh, did a copy of it, that I moved into a hidden collection. Then I removed all modifiers from the instances, but added a geo node modifier to it, moved the hidden object into the editor and disconnected the original mesh. The object node was set to instance and connected to output. Then I copied the modifier to all instances, via the data link menu. Now I have 100.000 faces displayed but still its 2.000.000 and it all performs well.
Best of all I still have the base mesh and can edit it or change shaders… no need.
Hey someone should write a script about that workflow, its so simple and brings so much performance boost.
Developers read that!

Ok, this is fantastic.

I have a scene with about 180K objects imported from a solid works CAD assembly. Lots of linked meshes, screws and bolts and stuff like that .
In Blender I went with my usual way, split it into several files and re-linked them into a single master file.
Performance in the master file was bad at around 1.9 - 2.2 FPS.

Then I turned the whole machine into geonodes inside the files which I had split up before and linked these geonodes objects into the master file. Performance nearly trippled to around 5.9 FPS.

Now it would be fantastic to find a way to easily generate and display simplified placeholder geometry from within the master file.

Another advantage is that I (think, need to test), is that I can now delete everything besides the geonodes objects which should make the files a lot smaller, which again will improve upload times to render farms.

Thanks Robert for this thread.
:smiley:

Yeah I’m really look forward on doing test on such cases here too. The thing I do with CAD files normally, is to split it up into groups with identical or similar parts and try to reduce the amount of objects. Especially tiny elements with few polygons make no sense to be keeper as instances.
Sometimes, if I find it to hard to deal with to many objects, I export the whole scene as obj and reimport it, so its one mesh. I noticed that most apps, except C4D and Maya, handle big mesh faster then lot of objects.

BWAHAHAHAH!!! Forget that!
I just plugged a “Realize Instance” node at the end of my node tree expecting a blue screen of death and got a solid 60FPS instead while keeping every single little screw.

That is 180 Thousand objects, 66 Million Faces running smoothly at 60 FPS with full flexibility!
And I could even use Geonodes now to do some weird Motion Graphics in case the customer decides to get funky.

YEEEHAWWW!!!

:smiley: :smiley: :smiley: