Blender 2.8 uses double memory than 2.79 + Group Instances are much better than Collection Instances

Hi Blender Artists,

Now that 2.8 has been released my understanding was that the new Collections system would be more powerful. In practice I found some concerning results. As in 2.8 seems to bloat data usage around twice the size of what 2.79 did.

Please try these two simple tests to see what I mean.

  1. Geo objects in 2.8 require twice memory usage of 2.79

Create an IcoSphere in 2.79 and 2.8. Subdivide each eight times till you get a face count of 3,932,160 faces. In 2.79 that will use 868.9 Mb of Memory. In 2.8 it will use 1.68 Gb of Memory. So 2.8 requires double memory per geometry object which will have an impact on large scenes with unique complex objects.

  1. Group Instances better than collection instances

Create a Suzanne in both 2.79 and 2.80. Then look at the face count. Should be 500 faces.

in 2.79 use Alt G to create your Suzanne as a group and then Shift A and at the bottom add it back to your scene as group instance.

Then copy it by any method you like (Shift D, Alt D) around 20 times into your scene. If you look at the total face count of the Scene in Blender 2.79 you will see that it is still only 500 faces.

Now try and do the same in 2.8.

Alt G in 2.8 gives you the option instead to create a Collection Instance. So add that Collection Instance back in and then copy it twenty times.

What you will see is that Collection Instances add the original face amount each time they are copied.

So a Suzanne copied back into the scene in Blender 2.8 twenty times using Collection Instances creates 10,000 faces, not the 500 faces that 2.79 creates.

However in checking the Memory in 2.8 after copying the Suzanne twenty times via Group Instances I note that the memory usage doesn’t go up that much, just the face count goes up tremendously.

So my question is, is why this is happening? My understanding of all the Dev notes on this is that Collections are supposed to be more efficient than Groups because they control the Data individually instead of the Scene having to control it. Yet if a large object added to the scene takes up twice the memory usage requirement of 2.79 how can this be the case?

And how will this affect performance in rendering for big scenes say with thousands of Trees or Rocks or say Space scenes with a lot of Asteroids? Would you not be better off doing those in 2.79 considering that Group Instances are much more efficient on face count plus scene memory usage will be half what it is in 2.8?

1 Like

If the memory doesn´t go up perhaps it is just a matter of the displayed face count number?
I find it hard to believe that something like instances wouldn´t make it into 2.80.

I was thinking the same. If that’s the case I hope the Dev’s can clear that up.

I agree with you. Group Instances were fundamental to my Blender workflow for managing a lot of data efficiently, I can’t believe they wouldn’t be brought forward. I just assumed that Collection Instances did the same but it doesn’t seem that way.

Outside of the instance question the other main question is why does a Suzanne or any Geo object have twice the memory usage in 2.8?

1 Like

It is beta software. Things are not optimized yet. Perhaps that is the only issue here.

I hope that’s the case. I might report it as a bug then.

Hi guys.
I tried to create an instance with the last release, but every time I duplicate the object, the vertex count and faces duplicate!
I use the instances very much …
Has not the problem been solved yet?

How are you creating the instance? Alt-D is properly instancing objects for me in a 2.8 download as of 3 hours ago. Instancing a collection is also working properly.

In the end, has this been reported or not?

No. Alt+D is Duplicate Linked.
I mean Instanced in scene like a Link operation.

Moreover, I noticed that even using the Link tools to insert objects (or collections) from other scenes, it weighs very much as a file, compared to the 2.79 release in which the Link does not weigh on the count of the polygons of the scene.

Really, I’d rather get an actual count of the polygons in the scene. It was often frustrating that b2.7 wouldn’t count the polygons of duplicated groups or linked objects. It’s not like those polygons are just free, they still take resources to render.

2 Likes

It is true that the Collection feature could use some work, but the devs. are working on that.
https://developer.blender.org/rB3d984aa15038f7a7bdf4ffacb93da83713353613
https://developer.blender.org/rB897e047374fa3d3ceef35aa2cdb3372b6a7cc64a

Please note that not everything is optimized yet. For now, you can wait for tonight’s buildbot build and see if working with Collections becomes easier. Personally I do see it as a novel idea, with how it’s kind of like layers and groups rolled into one.

More work (features and fixes)
https://developer.blender.org/rBe7ea99af1b0d933b9323be39d8b1c6f683bfba52
https://developer.blender.org/rB92182495da881d54310bc6dd53afb91daf00116f

The latest improvements should be in the buildbot starting tonight (which in central US time is just after 8 PM).

3 Likes

Hi Sterling and everyone else. Thank you for replying to this thread. This is the main problem which is still ongoing and which is why Blender 2.79 is still a better choice for production pipelines than 2.8. In this specific aspect Blender 2.8 remains a massive step backwards, which is a shame because the loss of group instances puts it behind other commercial software when the previous 2.79 implementation of group instances put Blender ahead.

I used Blender 2.79 extensively in production and its advantage over Max and Maya was that if you used Group Instances to duplicate scene geometry you could build massive scenes with no extra face count (just a minimal scene memory increase) that rendered much quicker than if you had all that extra Geo created from a straight forward duplicate or instance function (shift D and alt D).

In 2.79 if you group an object then it’s available as a “group instance” from the Shift A menu, or you can also build objects in separate scene and bring them in by enabling the “edit linked object” addon which is the same. This means that object (whether a single simple object or an object built out of different parts) can be replicated throughout your scene with no extra geometry created and, critically, then at render time before Cycles could do it’s thing Blender wouldn’t spend more time calculating the scenes objects than actually rendering. In short Group Instances made Blender an absolute beast of a 3D package. You could even use it for animation purposes to replicate thousands of offsets of the same character in a scene without extra overhead by combining a group instanced mesh and baking down animation then using the MDD cache tools to apply offset animations (with some care over pivot points and generally on a unified mesh). This was incredibly powerful and useful. You could build one Shark or Whale or Sea Monster for example, animate it, bake it, group it, bring it back into the scene as a group instance, apply the MDD and then literally copy paste infinite versions of that creature and offset the animation a little on each one. This was really useful for building large scenes with anything organic or hard surface that was animated - so space rocks, spaceships, battles scene, characters, monsters, insects even crowds etc. All with no extra face count and massive render savings at render time because Blender wouldn’t freeze for minutes on “calculating scene objects” at during every frame at render time and also in terms of normal and displacement maps only being calculated once. Again these aren’t small savings in time, they were massive savings in time, especially in renders.

So this isn’t just about saving in terms of face count and navigating the scene, the time saving applied to everything connected. Even without using MDD to do animation offsets if you were manually building a scene (say the surface of an Alien world) and you sculpted a high res object (say a rock) then made a low res version with only 300 faces then you could literally duplicate that one 300 face object hundreds of times in the scene and not only would the face count for the whole scene still stay at 300 faces but all the maps like Normals and Displacement only calculated once and the render time of the scene as a whole was massively reduced compared to if you had simply duplicated or instanced the same rock through using Shift D or Alt D and therefore created thousands of faces. I know the theory is that the Alt D means only calculating maps once, but that was not the actual experience at renders. At render time when you use Alt D to duplicate hundreds of objects then the “calculating scene objects” part of the Render (the step before Cycles actually renders) could take minutes per frame instead of seconds. Group Instances eliminated that specific problem as scenes with large object counts built out of group instances calculated in a fraction of the time of scenes built the other way.

So the big issue here isn’t just face count, it’s the other render time savings that propagate all the way up.

Blender 2.79 is the most advanced and last good version of Blender. The only reason any studio would use Blender is because of Cycles and therefore speeding up scenes and rendering in Cycles should have been the ultimate priority. Eevee took a huge amount of resources and is basically dumb and cosmetic. It’s never going to be better than Unreal or Unity and there’s no reason to build your scenes for Eevee at all because if your intended end use is Games and PBR then Unreal and Unity have completely different material systems and you have to rebuild materials in both. So if you are using Blender to build elements for Unreal then the tools that were in 2.79 (uv’s, mapping, normals etc) are still the tools you have to use to build your objects prior to export to a Games engine at which point just switching Blender 2.79 into Material or Texture view in the 3D viewport gave you near real time rendering and instant feedback.

Cycles on the other hand is Blender’s most valuable and viable technology. It makes Blender competitive with Maya, Max, Houdini, Cinema 4D etc in the field of TV, Film and Cinematic renderings.

So for the purpose of bringing Eevee into Blender (basically a big wank), we’ve all had to suffer over three years of development hell with Blender being unusable, and we’ve lost the absolute biggest advantage Blender had over every other software which was Group Instances and the ability to have as many Blender scenes as you wanted and to link as many files into Blender through Group Instancing.

The truth about 2.8 is that someone on the Blender 2.8 Dev team got obsessed with building a folder system something like Clarisse. But Clarisse works is along the lines of what Group Instances was doing in 2.79 not the way Blender 2.8 calculates scene objects and memory. Clarisse doesn’t add geo or faces for any objects you import, it doesn’t have a massive scene bloat and you can import an object once and it calculates everything to do with that (normals, displacement, even VOB etc) and you can put those objects into your render scene literally thousands of times over with no extra scene data, no massive need to precalculate render scenes and almost instant feedback.

Also in terms of “reporting this as a bug”. No I haven’t because it isn’t a bug. What should I report? Should I say that Blender 2.8 is bloatware? Is conceptually shit? Has increased Cycles scene render times? Adds extra geometry and face count that isn’t needed in the scene and that other software like Isotropix Clarisse is smart enough to take out of the render chain? That Eevee is a pile of wank that benefits no one building scene objects for major games engines other than cosmetically? That the three year “development” cycle has set back creatives, studios, tutorial makers and real world users of Blender and caused actual damage to those (the community) who invested in bringing Blender into their pipelines? That 2.8 completely failed to align itself with Blender’s true needs such as non linear (nodal) modelling and the extension of compositing functions (keying and green screen) into the 3d workspace? That Blender’s caching deficiencies in it’s Compositor remain the absolute worst in the Industry? That the Blender core dev team literally pissed on hundreds of independent addon creators by making their work and time and addons disappear? That Blender core Dev didn’t bring in the creators of Sverchok and Jacques Luckes and the animation nodes system right into the heart of 2.8? That Blender 2.8 didn’t introduce VOB workflows? Advanced fluids workflows? Nodal physics workflows? Or anything that actually matters?

Instead we got grease pencil, eevee, left clicking, and the new stupid and illogical interface at the cost of scene efficiency and extra geometry.

What’s the error or bug I should report? After months and years of complete wank on this forum about the “new look” of 2.8, the color scheme, the new stupid UI, the “we added left clicking” stupidity, shouldn’t the error report be that Blender 2.8 (the whole of it) sucks compared to the elegance, ease of use, refinement, class, extensibility through addons and efficiency of 2.79?

4 Likes

It is what we are all expecting. But 2.8 that has been released until now is a beta.
2.8 homestretch was announced for second week of April.
So, there is no reason to panic. They still have 2 months to solve that issue.

Collections are supposed to give more granularity control through overrides system.
They are not just a replacement for groups. They are also a replacement for layers.

I think that what devs have in mind at early state of 2.8 was layer system replacement.
But it does not mean that devs don’t care about memory consumption.

I’d rather have both pieces of info than just one. Polygons for renderer and data stored in the file are both useful.

It can’t be a shame. 2.80 has not been released, yet.
And when Ton or a main dev is saying 2.8, what they are meaning is 2.80,2.81,2.82,2.83,2.84…

When they released 2.50, there was literally almost no button in the UI, almost no modeling tool. 2.5 series was a succession of beta releases. It did not kill blender. And I still don’t understand why. :ghost:
There are weird levels of tolerance among human population on this planet.
So, it is really hard to predict what will be perceived as a shame.

No, seriously. If people are playing a lot with it doing demos, it is because it is easy and fun.
People are not making incredibly crowded and complicated shots with it.
But simple productions done with EEVEE are rendered at a speed blender users never experienced before.

Under what modern OS, blender 2.79b is not working.
Blender 2.79 was released in September 2017. Bugfixes release, blender 2.79b was released at end of March 2018. It is not one year old, yet.
A blender 2.7 branch without EEVEE is still maintained for recent bugfixes.

Well. Your first post with step to reproduce and description of what weird behavior is happening on your computer is exactly following guidelines of what a bugreport should look like.

Jacques Lucke was invited to codequest. He is actively working on 2.8 , right now.
He pushed several commits to master, yesterday. And he will be part of development week next month.
“Everything nodes” is not a target for 2.80 but for a later release of 2.8 series.

2.8 series will last during several years. Nothing of that will happen this year. It does not mean that will not be accomplished under 2.8 series.

Those ones are cool. You forgot multi-object editing and several GSOC improvements.

There are things that I don’t like.
But it is logical and often less stupid than 2.79.
Toolbar in 2.79 is a real crap compared to 2.8 one, for example.
I only use it for buttons that could be placed anywhere else without changing anything to efficiency.

That is our real problem. And everybody is confronted to it.
Spring team or regular Blender Institute artists like anybody else.
I can’t imagine a second that they don’t perceive that issue as a major issue.

2 Likes

Gentlebeings™ . . .

I think that we should all be careful to discuss problems with the 2.8 software as it is, including making an argument that “groups” are still needed, much as I have previously argued that (a re-imagined …) BI is still needed as an alternative choice of render engines. Let’s strive to keep this as a thread which developers can use.

Also – it’s just a mistake to say that “Eevee is sh*t,” and that “Cycles is what makes Blender competitive with X.” That’s opinion, guided though it may be. For my purposes, which aren’t games, Eevee is turning out to be a massive step forward because "it gets the job done now." Cycles causes my computer to switch its cooling-fan on in less than twenty seconds and to take three minutes to render a single simple frame that Eevee can generate in two seconds flat. Functionally, I can’t use Cycles at all. But Eevee meets or exceeds my requirements, rapidly. For me, “it’s a game-changer.”

IMHO it is also a mistake to dismiss Eevee with the brush-off that “when you go to Unity, you have to re-do everything,” because now you can also go to open-source Armory3D which integrates directly into the Blender environment for asset and game development, is truly cross-platform due to its novel choice of implementation language, and doesn’t require anything to be re-done because “it does things the way that Blender does them.” (A comparative analysis of the two engines is beside the point. They are what they are, and the choice is yours, but “nothing stays the same in software.”)

So, there are other users out there for whom the latest Blender developments are extremely exciting indeed, and well worth the time that has been spent on them. Certainly, one of the ongoing challenges for developers of a product like this one is that the target market is so very broad and diverse.

Therefore, let’s try hard to give developers, and the community at large, actionable feedback. Something they can do something with.

So it goes …

4 Likes

Groups had some nice things going with the group instances, but lets face it, instancing in 2.79 could’ve been a lot better.

For instance, groups couldn’t be nested, and there was also no clear way where you could have multi-layered instancing (for objects such as trees). Collections are intended to be something like groups and layers rolled into one, and then with the addition of unlimited nesting.

By the way, the add menu in the current builds has an entry labeled collection instance, you might give that a shot.

1 Like

Does anyone have a handy benchmark blend file that could be used to test the perceived differences between 2.79 and 2.8 with instancing things like this?

I remember years ago there was that nice Island scene with all the trees but that seems to have vanished.

Could the memory difference be related to the undo system? The reported number of faces I don’t really care about. In 2.79 you can load the default scene, delete everything, then File>Link and bring in a Group Instance. Blender would inform you that you had zero vertices, faces or triangles. You could then duplicate this many thousands of times. Blender would still claim that you had absolutely zero vertices, faces or triangles. Yet no-one would deny that there would be a difference between the two scenes when it came to navigating through it or rendering it.

I’m experience the exact same issue today. I too use Group duplicators every day on blender 2.79 and I got a bit scared after trying it on 2.80 as I obtained all the problems you mentioned.

The thing is that although the polygon count now increases (and memory too)… it still fells to have similar viewport performance… I can count 30 milion triangles in duplicates and still navigate reasonably.
Without any duplicates my PC starts to slow down at 3 million, so they seem to be doing something :slight_smile:

it is clear that blender 2.81 must be a version dedicated to polishing, polishing, polishing :grin:

Mh … interesting.

Comparing regular instances in 2.79b and 2.80.
Its 1331 (11 * 11 * 11) instances (forming 11 / 11 / 11 cube of instances) from a sphere (128 * 64).

Blender shows >10 million tri’s for the scene.

Blender 2.79b consumed 378M memory
Blender 2.80 consumed 116M memory

Now I created a similar setup, using ObjectGroups and Collections.
Line <- 1 Icosphere (10 subdivs), 8 instances of icosphere
Face <- 9 group/collection Instances of Line
Volume <- 9 group/collection Instances of Face
One single group/collection instance of Volume

Tri count goes into nearly 4 billion. I had to render every icosphere as a bounding box.

Blender 2.79b consumed 1.2G memory.
Blender 2.80 consumed 1.6G memory.

1 Like