GSoC 2018 - Bevel Improvements

Is this extrude-bevel faster than separate extrude+bevel? I can’t say for sure, but it looks like there is no significant difference between these two approaches.

Found a bug on the bevel when using percent in width mode.

Same result with 2 modifiers in weight mode.

2 Likes

I can’t tell from the picture what your original model looked like, what the vertex group was, and what the bevel edges weights were, so I don’t know what the bug is that you are trying to describe.

I found the issue, I have weird results when not using the loop slide.
I’ll make a video.

EDIT:

So if I understand correctly, the problems all stem from the fact that bevel doesn’t merge things (verts and edges) when they collide and thus occupy the same position. Is that right?

I agree that I could try harder here (to merge things). One reason I haven’t done so, so far, is that the logic to do a merge is quite complicated and doesn’t always work (there are cases were doing a merge would create invalid faces – as Blender internally wants them). The code implementing “merge vertices” is quite complicated and cannot easily be called as a subroutine in bevel. I had considered doing a general “merge all vertices within an epsilon distance” automatically after bevel, but have been worried that that might mistakenly merge other vertices that the user intended to stay separate (even though they are close together).

My general long-term solution is to put much more complicated code into bevel to handle the general case of mesh colliding into other mesh as the bevel happens, allowing even to continue beveling (eating into other faces) after the collision. But this is quite a hard project (I’ve done it in 2d, but not 3d), and it will have to wait until after my current “quite hard project”, which is fixing Boolean.

5 Likes

Thx for your answer.

In my head, just adding a merge threshold like other modifiers should do the work.
People will use it like it it, if it doesn’t fit all the scenariors, it’s not an issue, just disable the merge.

What Blender calls bevel, 3ds Max calls chamfer. What 3ds Max calls bevel, is functionality built into inset in Blender. They are different types of tools.

Right now, we have equal capabilities with the modifier and the operator. Adding this functionality makes sense as an operator, but makes no sense at all as a modifier. So, we’re talking about a completely different tool, because I think it’s more important to be able to reproduce results in the modifier with the output I get from the operator.

If segments were added to the inset tool, we would have what you show in your gif.

1 Like

No no, everything works great either as a tool or modifier. You just need to see it in action…
Oh, and the inset tool don’t need to be part of it…

1 Like

You’re arguing this based solely on terminology. The inset tool does exactly what you point to in your gif, minus adding the curvature. 3ds Max’s bevel tool behaves exactly like the inset tool in Blender. This is closer to an extrude than it is the edge chamfering. It is performed on the face and not on the edges.

Think carefully about how a modifier that does this operation you want would work. Since it’s extruding faces and moving them inwards, how would this work on a full object without a face selection? I’m picturing a spikey ball if all of the faces are extruded individually. But if not individually, it will extrude/inset/bevel all of the faces? That would do absolutely nothing. It would be like performing a shrink fatten. There are no face groups in blender, so you couldn’t specify a selection of faces to perform this on; it would be all or nothing.

example
From left to right Original Cube, Cube with gif Bevel (inset and depth) on Individual Faces, Cube with gif Bevel (extrude along normals) on All Faces

With the inset tool, mouse drag sets inward distance, and ctrl+drag to set depth. It’s there already.

Arguing that this couldn’t be part of the bevel modifier based on there not being face groups is not a definitive argument. It is already the case that the bevel modifier is not ideal because there aren’t edge groups – one can try to get by using vertex groups, but that is not ideal as sometimes undesired edges get picked by that rule, so people have to work around that using several bevel modifiers (and that doesn’t always work). One could do the same for faces (using vertex groups), with the same problems but at least somewhat usable. Or one could do other hacks like paying attention to face strength (a layer for normals) or material index or something.

The trickier issue is that inset exists and people are used to it being there, as a separate thing from bevel. Maybe we could just make the inset shortcut invoke bevel in ‘face bevel’ mode, but there is a whole separate modal workflow with the inset tool that might be hard or impossible to mix with the modal workflow for bevel. Or at the very least, make bevel an even more daunting set of options and capabilities. So the alternative would just be to add segments, profiles, custom profiles, normal hardening, etc., into the inset tool.

2 Likes

Agreed. I think this is more a modification to the inset tool. I’ve often wished I could add segments even to my flat insets, so it would be a nice addition.

But, there is a bevel weight that can be added to edges. Some way to mark faces for modifiers is badly needed in Blender. I feel like the “when everything nodes comes out…” excuse that I’m seeing pop up pretty regularly now is kicking the can down the road, but in this case, I don’t really see a reason for adding face selections and messing around with other mesh element marking until…everything nodes comes out.

I don’t understand your concern.
Here is a quick example of what a bevel modifier does in points/edges/polys. (see how it works when I switch to polygons mode)

The modifier is affecting everything there, but I can restrict it to points/edges/faces selection ofc.
And the bevel tool works exactly the same.

5 Likes

That is definitely a cool tool. Beveling verts and edges work the same as the C4D tool as is. Having what I see as seperate functionality based on years of working in other programs bundled into the same tool as bevel, doesn’t make sense to me, though.

I like the ability we have now of selecting a face, pressing ctrl+b and the edges are beveled. I like how easy it is to do this C4D style face beveling with the inset tool. All that would need to be added from an interaction perspective is scrolling the mouse wheel to add segments.

Until individual face selections become available to the modifiers (ala vertex groups) I don’t see a modifier version of inset (C4D face bevel) being useful. I don’t have to make spiky balls very often (maybe never). A spiky ball is all you will get without face groups.

I mainly saw the possibility of adding curvature to the inset and depth appealing. Being able to add multiple loops with a flat inset is something that I have deeply longed for in the past. And I don’t want to lose the way that beveling faces works now. Especially since it is common in non destructive workflows to make a vertex group containing all of the vertices on the perimeter of a single face.

Currently Blender doesn’t discern between all of the vertices in a face selected and the face itself being selected, so if faces were automatically extruded, then you would kill the current workflow.

To sum it up: You can make a tremendous number of modifications to the core of how blender operates and how long time users expect it to behave in order to make the bevel modifier and operator work like this, or you can add segment control to inset.

That would be turning the inset tool into a bevel tool. This is what makes no sense.
Face beveling is basically a missing feature in blender, and if this feature could be added someday, it’s in the bevel tool/modifier where it should be added, not anywhere else. The inset tool should remain as it is, simple and to the point.

I’ve been waiting for this feature for a long time, I hope it can be added.

@Howard_Trickey

Could the selected edge, and face normals’ data be used?

It’s been a bevel tool since I started using blender 5 years ago.

Unfortunately this is the kind of stuff that makes blender so messy. Look at the extrude tools for example, how many they are? All of those types of extrude should be just one tool, like in other apps. I don’t know the reason why they are separate.
I certainly don’t want this type of thing happening with the bevel tool. The bevel tool needs to be as robust as possible but still be just one bevel tool. And up until now the bevel devs are doing a marvelous job. Hope they keep it that way.

3 Likes

It is always better to let control to user. A Merge modifier would be valuable for other cases than Bevel modifier.
It is probably possible to do that with most of addons for procedural modeling like animation nodes.

I don’t know if some modeling modifiers will be added in future 2.8 releases before merge of function nodes. But clearly, if only one modifier have to be created during this period, it is a Merge modifier.

4 Likes

The other devs have said several times that they are not opposed to the idea of adding edge groups to Blender. I imagine the same goes for face groups. It’s just a matter of someone prioritizing doing that.

The idea of a merge modifier has come up before. It would be easy to write. Besides bevel, though, what other modifiers leave things in a state where merge is a useful next step?

5 Likes

At least Simple Deform’s bend mode comes to my mind. If you use it to create a wheel, for example, there will be a seam because the start and the end can’t be merged.

1 Like