Bevel selection problem

Hi people!

From 2.82 after performig a bevel the adiacent faces get selected.

I recently reported this bug, because I find this new behavior useless and frustrating, It also create some trouble while modeling, but it looks like that for the programmers this is not a real bug from a coding standpoint (I guess) nor a regression.

I’m writing it here since the bug is marked as invalid and the topic got close.
I really hope to drive some one attention, because in those few days already happend few times to have to go back to 2.8, just for beveling operation.

here is the bug report:

here is a video that shows exactly the problem:

thank you!
Max

2 Likes

This is not a bug and not something for which a fix exists without changing a fundamental thing about Blener. In fact, it is the 2.81 behavior that is buggy.

It is a long-held design decision of Blender that selections of lower level elements (vertex is “lower” than edge which is lower than face) causes selection of the higher level elements if they completely form one of the higher level elements: e.g., if you select two vertices at either end of an edge, then the edge is selected. If you select all the edges around a face, then the faces is selected. In the case you are showing here, this is what happens: the bevel has selected all of the edges around those inner faces, so those faces are selected.

Probably there was a bug pre-2.82 where the selection was not “pushed” to the higher level elements, and some other code change (unrelated to bevel, because bevel didn’t change in this area) fixed that bug.

Now I will admit that this “selection pushing” that Blender uses has some negatives. Besides the case you show here, another related to bevel is that vertex selection sets sometimes cause more edges to be beveled than the user wants. But I suspect that changing this rule would break a lot of workflows.

2 Likes

Thanks for the reple @Howard_Trickey
Well, I guess I have to live with this from now on! :slight_smile:

1 Like

it would be easy enough to write a custom bevel operator that behaves the way OP expects, simply by selecting the resulting edges from bmesh.ops.bevel and using select_flush_mode instead of select_flush, but unfortunately bmesh.ops.bevel has been broken since 2.80 (causes an instant crash) so that’s not an option.

1 Like

Have you reported the crash of bmesh.ops.bevel? It doesn’t always fail because the regression tests are built on that and still work.

1 Like

hrm, i’ll have to dig through my bug history, i think I did but it’s been a while. I actually forgot all about it until this post- i was going to make OP a custom bevel operator and got my memory refreshed :sweat_smile:

super easy repro too:

import bpy, bmesh

obj = bpy.context.active_object
bm = bmesh.from_edit_mesh(obj.data)
edges = [bm.edges[0]]
new_elements = bmesh.ops.bevel(bm, geom=edges, offset=0.5)
bmesh.update_edit_mesh(obj.data, loop_triangles=True, destructive = True)

Thanks @testure. I made a bug report (https://developer.blender.org/T74256) and will fix this right away.

3 Likes

That crash is fixed in master.
There’s another problem that the bm.edges[0] indexing sometimes fails for me – I made a bug report and suggested fix for that.

6 Likes

success! a custom bevel op is back on the menu! :slight_smile:

custom_bevel

3 Likes

Going on a slight tangent here, but other programs usually keep vertex selection separate from edge selection; which is itself kept separate from face selection. I feel the Blender way is more straightforward in most cases, but sometimes, like you said, it makes incorrect assumptions. Not having “edge groups” sometimes emphasizes these issues.

Yes, this implicit assumption is indeed sometimes wrong. Would be nice to get the selections types separated per primitive type and just propagate them to other primitive types if an additional modifier like ctrl is pressed in combination with the switching between vertex mode, edge mode and face mode. That would also allow for a better handling in this case to store the “cleaner” result in the face selection separately.

2 Likes

Agreed, this is how Modo handles it as far as I remember.

1 Like

It’s also like that in Cinema4D.

Modo goes one step further and keeps element selection memorized per element and let’s you convert an element selection to another mode. It’s a really smart way to handle it.

1 Like

I really like the idea of vertex/edge/face groups separated, but I also love the way how blender keeps the selection consistent along the elements as the switch is immediate and actually save a lot of time during the modeling process. I can’t figure out any specific case in witch keeping a selection stored per element could be useful. :thinking:

It’s very useful combined with operators. For example, you could select various faces, then select edges that are unrelated to those faces and a script could orient the selected faces to the selected edges.

Another example, you can be in face mode making selections, change to another mode to modify something, and then switch back to face mode to pick up where you left off.

It’s hard to explain without a demonstration but suffice to say there are many uses.

mmmh
I’m a modeler, I find the current way more fast and straight forward in most of cases.
As you mentioned, keep selection separate can be useful for more convoluted operations.

But yes, at least be able to have groups base on vertex/edge/face would be amazing.

1 Like

This is how I was using the separate selections in Maya (never used Modo), and it’s somewhat convenient but imho the “merged” selection in Blender beats it with its immediacy. That being said I don’t see a reason design-wise to not have a preference for this.

2 Likes

Hi testure,
How to archive the bevel behavior in your posted gif with blender 2.9x? i need to perform the about exact operation shown in this video but on a very large scale and right now blender is selecting all the inner faces too wich is a pain to clean up. @Howard_Trickey i like the overall design descision that is accountable for this but it would be awesome to have an option in the bevel menue to turn it off / straight deselect the resulting faces
<3

Also when storing faces in vertex group and Reselecting them, the faces surrounded/included by those edges get selected again although i never stored them in there. this feels very inconsistent and causes pain.
is it enough for a bug report? @Howard_Trickey