FinalBevel - Sequential beveling by edge weights

Hey blenderartists,

I’ve been working on a little operator script for Blender that “bakes” accurate bevels based on edges bevel weights, called FinalBevel.
The built-in bevel modifier always had problems with edges of varying bevel weights intersecting, giving pinched results.
FinalBevel tries to circumvent these issues by beveling all edges sequentially, starting with the edges with the highest bevel weights and working it’s way down from there.
Newly created edges will receive appropriate bevel weights if necessary to make sure the results are true to expectations and as clean as possible.

Ideally, this script is considered a proof of concept and, if at all feasible, could be picked up by a Blender dev who incorporates the same behaviour into the built-in modifier.
I don’t know if this is at all possible, but this is only half as useful as it should be as long as it’s an operator and not a modifier.

Anyway, for the time being, consider this a massive work in progress and a bare-bones first iteration.
It’s appallingly slow, even on relatively lowpoly objects, there’s no UI and only few options in the F9 panel.

I’ll focus on performance for now, to make sure the operator can be used on reasonably expensive objects.
Apart from this, there are a bunch of things I’d like to add in the future:

  • A proper UI
  • More settings to give users more control
  • An option to read values from an existing bevel modifier and replace it with “baked” bevels
  • An option to save and retrieve the original mesh after the bevels have been made
  • Support to use the operator on multiple objects at once

Both Python and the Blender API are, to me, counter-intuitive at best, so I’m sure there’s plenty of bad practices and down-right blunders in the code, so I’m grateful for any feedback on how to improve the code.
For the time being, I’ll continue to learn as I go. :slight_smile:

Here are some comparison shots between the bevel modifier (left) and the result from FinalBevel(right):

And a link to the addon:

12 Likes

I had a chance to check this out and it works really well! I agree that the result this gives is what I imagined the Bevel modifier used when it came to multiple bevel weights intersecting each other.

Maybe something to get on @howardt 's radar since he did the awesome rework of the Bevel system not long ago. :slight_smile:

Hey,

thanks for checking it out. I hope you got one of the more recent versions and not the super slow initial submit. :slight_smile:

I just updated the .py on github. The addon is now a panel in the sidebar rather than just an operator in the object dropdown.

1 Like

I was using v0.2, which still seemed fine enough on a test cube. I’m testing 0.3 now that you’ve updated it.

What’s the intended workflow you had for the new panel version? I like how this version lets me go in and out of the operation so that I can go back and adjust the varying bevel widths to see how they interact with each other, but is there some method of ultimately “committing” the Final Bevel result so that I can then further work on the mesh? If I go into Edit mode on the mesh I can edit elements as expected but it requires me to not press the “Stop Final Bevel” button.

That’s a really good question. :smiley:
Technically, once you hit “Run Final Bevel”, the operation is commited. However, I need to add something to allow the user to “Confirm” that.

It’s not very clearly communicated right now. I’ll work on that.
Thanks for the feedback.

1 Like