GSoC 2018 - Bevel Improvements

You can already do that, select a face, and press ctrl + b, the only different is instead doing an extrude, it is actually beveling the surrounding edge :slight_smile:

Nope, it’s not the same thing, hence my request. :slight_smile:

1 Like

I asked for it in the bevel profiles thread, idk about coding but from a conceptual viewpoint is much easier for doing any profile shape https://www.youtube.com/watch?v=1jnr-vWzSDo

2 Likes

This is what a bevel tool does everywhere, and in blender it shouldn’t be different.

Exactly. This is how profiles splines works with bevel in c4d too.

It’s kinda hard to believe that people don’t miss it in blender, it’s pretty standard…

2 Likes

Are you kidding me? :man_facepalming:

1 Like

Bevel extrusion from selected face.
Or
Bevel protruding connected edges from selected face.

Operation order: Extrude > Bevel
A conditional statement should work.

  • If (Extrude = True)
  • Then Bevel (whatever the pointer/extruded data location is)
  • Else Bevel (whatever the pointer/selected data location is)
  • End if

Adding a highlight of the data being beveled could work similarly.

Maybe the following maybe of some interest;

I can see that having a “Bevel Face” to go along with “Bevel Edge” and “Bevel Vertex” function for the tool and modifier would be useful, and looks less like duplicating the inset+transform when we have custom profiles. I will consider it for the future.

7 Likes

The Inset tool already allows for this

1 Like

You can add depth after the inset ofc, but it’s not the same thing. This is about true beveling/chamfer… be able to add segments, adjust the profile shape etc.

1 Like

?
In 3DS Max Bevel tool does what the first gif does, however, it is limited to face mode only and has no control over edge insertion. What Blenders ‘bevel’ does is done in edge mode by ‘chamfer’, albeit there seems to be no option for concave profile.
In Maya the bevel tool seems to act almost identical to Blender but instead of having the profile (depth in Maya) control between 90deg concave and convex corners the slider goes from 90deg concave to what looks like .5 profile in Blender. (If you want to have 90deg corner just to insert supporting loops you would uncheck the ‘chamfer’ toggle) Maya’s extrude tool has slider for scaling the extrusion, though, essentially allowing the same stuff as ‘bevel’ tool in Max.
I haven’t really played around with Houdini enough to say for sure how it is there but even there it would seem to require the combination polyextrude+polybevel nodes?
I can’t say for modo nor cinema havent tried either.
(Tested on 2018 versions for Autodesk and 17.0 for Houdini)

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