Blender 4.1 Auto Smooth is now a modifier ONLY!

I was on the alpha team of C4D when instancing was being coded for the first release, and demonstrated it at SIGGRAPH. My name is in the manual, free free to look it up. I’m aware of how it works.

Try using words and sentences that more accurately describe your thought, instead of just screaming at people in an angry fashion - and maybe they’ll understand your point more clearly.

19 Likes

What he wants is equivalent to a collection instance of a collection made of one object.
But he does not want to have to create collections, that will appear in outliner, for that purpose.
It is possible by using geometry nodes or old instancing system, but such instances are placed according to mesh elements of another mesh.
They are not selectable, able to be hidden as objects like collection instances.
And contrary to collection instances, he wants to keep original object as a selectable one, that can be tweaked, to be able to change its location without affecting instances.

He is right. Working only at mesh or collection level complicates the UX.

2 Likes

The issue is that modifiers break instancing, both in Blender, and especially when exporting from Blender.

So yeah, those four cubes all look the same, but at render time in Blender they’re treated as unique bunches of vertex data, which means they’re taking up four times more memory and affecting render performance.

Same thing when exporting to FBX, for example. Where without modifiers these would be written to the FBX as a single Mesh with four different objects referencing it, now they’re four different meshes. If you then import that FBX into something like Unreal, you now have four unique Static Mesh Objects, which means four draw calls, whereas if you didn’t have the modifiers you’d get one Static Mesh Object and four Static Mesh Actors in the scene referencing that object, which in Unreal gives you one draw call.

Turning the Autosmooth Mesh Property into a Smooth By Angle Object Modifier is a massive performance regression that hurts a ton of use cases.

3 Likes

Your comment reminded me of this meme. :mage:

4 Likes

One thing that would go a long way in solving this would be for the modifier stack itself to be a datablock type (the whole stack, so it works the same way as materials and meshes).

The stack itself has already seen updates in how it works behind the scenes, so in theory it should be easier to do now compared to a few years ago. It will have to be done eventually with everything slowly being moved to nodes.

2 Likes

???
:person_shrugging:

If you read my first comment I said

Here is a Monkey “instanced” on the verts of a plane in 4.1
The monkey has the smooth by Angle modifier and that one modifier will control the effect on the 4 “instances”.

The same thing goes for instances instanced with geometry nodes.

I also said

I am fully aware that ALT D links object data but does not link the modifiers, it copeis them but does not “link” them.

If you instance an object on the verts of another object or with GN nodes the original objects modifiers effect propagates to the “instances”. That is what I was saying.

Also if you do not like the modifier and need to use ALT D you can use the right click method to smooth by angle, it shades smooth and marks sharp edges for you, this is “part of mesh”.

I do understand that you are concernd about “Object instances”

My inicial post was simply trying out what happens when you open an old file with objects that have auto smooth shade set.

I can understand this bit, I do not use other 3d software.

But if instead of the modifier if you use the right click method would it not solve the problem?

Allowing Empties to instance Objects just as easily as they instance collections was mentioned as something that should be discussed to deal with the problem of people using the Asset Browser to link an object and then not being able to move it without additional steps via overrides.

I don’t think the discussion ever happened.

It seems like a simple thing to add. It’s no different from adding a single object to a collection and then instancing that collection, but it would be nice to keep the outliner clean by having the Empty just instance the selected object. I’m no coder but this feels like very low hanging fruit.

Here’s the irony: I agree with him that instancing in Blender is in the dark ages, and the lack of groups is just utter sadness.

I was trying to understand his main point - specifically, about the smoothing modifier. And how it is (or isn’t) different from every OTHER modifier, as how they work to instancing - and in what circumstances, or not. IOW: Does this modifier suck just like the rest (for instancing), or differently?

He already confused creasing and sharp as being the same thing in the beginning of the thread, so I’m trying to understand exactly what he’s thinking instead of just assuming. Thus why I asked, posted an image, and said “tell me what I’m missing”.

My goal was “show me the problem you see, so perhaps this ‘still in dev’ thing can include this in the discussion.” TLDR: Don’t attack people who might actually be on your side.

4 Likes

General instancing in Blender is not exactly in the dark ages since Blender was never good at instancing even during the NaN days. It was not until the Blender 2.4x series of releases that Blender even had the concept of instancing, and it was followed by 15 years of stagnation until Geometry Nodes began to make more workflows available.

Now in hindsight the BF may have made a huge mistake when they did not factor in instancing when the modifier stack debuted, but then again, they were an organization within a bubble of their own making (ie. little to no knowledge of how things worked in other apps.) and they had to do everything on a shoestring budget.

Now they have a large core team and a sizable budget and as a result can now address longstanding shortfalls in Blender, but the todo list is long.

1 Like

hans goudey (or some other developer with a similar sounding name :)) said that one possible solution would be that blender checks if all modifiers and their settings are exactly the same and if this is the case objects get treated as real instances. i think sooner or later a solution like this will come. the developers are aware that the current way isn’t ideal.

Actually, internal its simple. In order to create an instance, you would need to add an empty to the scene, then a geometry node on top and add the object as instance there. Done.

Of course you can’t add the modifier to an empty yet, thats why I often wrote that a geometry node object would be a cool to have thing. But the workflow could be easier and more user friendly.
Technical you could also use it for collection instance or any other type.

The problem remaining would be handling the call for operations. Like, select the source item by command in outliner (as it could be hidden in viewport). Then a command to select all instance, which is very much needed for control.
I do this all the time in other 3d apps.

So, it could be really simple, but you would need support by the developers. However they rather ignore that request now since two years… I know its not much, but I wish they would listen.

Why not use an empty volume-object?
OK, wait, that makes the outcome a volume either, doesn’t it…
So maybe dumb idea, for the time being.

On the other hand, I think, at some point going into the future, it should be possible. The devs have definite plans of eventually introducing an all-purpose, generic ‘geometry’-object (of no particular type, neither mesh nor volume, nor curve etc.).
Once that’ll be a reality, you’ll be able to use that and add a geonodes-modifier to it and instance away at your heart’s content.

So we’ll get there, it just takes patience.

On a sidenote, I’m a bit surprised there’s no pointcloud-object (as such). Wasn’t that meant to be exposed as it’s own object-type too?

greetings, Kologe

I feel like even simpler than that, perhaps… if I currently alt-D an object that already has modifiers, the modifiers do get duped with the mesh currently. The issue is that of course is that blender is treating only the mesh as the instance - so changing one object’s modifiers only affects that object. It should be treating the entire “assembly” as an instance.

Then, changing any modifier (say, twist angle or smoothing) would then happen on every instance of the object.

Materials assignments - same thing as well.

TLDR: Blender isn’t instancing enough when you press the key.

And yes, if i were to instance via a geometry node (on an empty) - very useful, yes - and I would still want the above to apply.

1 Like

Lot of weird workarounds are mentioned there, but most basic functionality that would solve problems mentioned here is that - If Modifier Doesn’t create new geometry, don’t realize the instance. AT LEAST for Auto Smooth modifier. But if that was case generally, pretty much would mean object instancing.

I quite like this idea as well. Modifier stacks as data blocks would mean instancing them, saving them as assets, easier work for add-on developers and etc. Amazing feature

1 Like

A modifier (speaking practically) is a applied property of the mesh it is stacked to.

I don’t care how blender interprets this as a data block, or a special asset, or a leprechaun. If it’s on an instanced mesh (or object), it should be an instance of the original modifier.

Good point. But technical the modifier can alter the mesh data in different ways, hence create a copy of it. Thats why 3dsmax moved the smoothing, subdivision and a few more data elements down into the mesh properties. Maya did the same. Modo always did. And C4D has tow types of instances. Such that are just copies and such that a true instance for rendering only (so they call it).
Render Engines on the other side back this stuff to a render only property. Like displacement, smoothing and subdivision.

As said before, technical it would all be possible in Blender. It just need developers that work on workflow. Look alone how much work the Outliner still needs. And a way remove the hard core restriction to visible objects only. That actually is not always the case, but 95% of the commands.

1 Like

Very good points, and certainly part of the bigger puzzle to solve.

Personally (just for me), C4D’s style of instancing was the best I’ve ever used in terms of … you get what you would expect to happen, but it was limited (at least in earlier times) compared to how Max could be more flexible in offering ways to deal with rendering or proxy use.

Max, on the other had - had the extensibility down, but i felt suffered in the basics… IE, it did rather poorly at the things that C4D really did well.

Blender seems to be the worst of both, at times. (I don’t say that with hatred, just as a plain observation. It doesn’t really work that awesome for anything in particular, and also not that well for more basic uses.)

1 Like

What a disaster. I check 4.1 and all KIT OPS INSERTS now come in with normals screwed up. Not to mention all legacy scene files load with objects with screwed up normals. (4.1 Alpha)

Hope they get it fixed.

5 Likes

It would be nice to have the choice to link a modifier to either the mesh or the object. Like we used to have with materials. I always thought that was a very powerful feature and very underused (because of its complexity).

That way if you create a linked duplicate the modifiers you linked to the mesh will be exactly the same.

Object instances would of course be nicer and probably easier to implement.