Page MenuHome

Bevel creates inefficient geometry; triangle faces & too many edges
Closed, InvalidPublic

Description

Group: V 2.47 release
Resolution: Postponed
Category: Scripts

This used to be fine with the old bevel script (Blender 2.44 and below)... I'm really unhappy with how bevel works in recent Blender versions (e.g: Blender 2.46, 2.47).

Newer versions of bevel can not treat a mesh whilst maintaining...
...Number of edges: three for each previous edge (minimum needed for smoothing).
...Number of triangles: none.

See attached image or http://img402.imageshack.us/img402/8651/bevelprobak3.jpg

I did the left cube on an older version of Blender by beveling twice. Newer versions can't reproduce this geometry. I think they should because it...

* creates no triangles
* is non destructive to edgeflow (e.g when later inserting new edgeloops
* has the ideal minimum edges for maintaining edges on smoothing (two has lost the edge, whereas four is excessive).

The problem seems to be caused because dragging the bevel width halts when two vertices meet up, whereas in previous versions, they would clip and allow for further dragging to sandwich the edges flat. This allowed for closing the seam instead of using four edges. Extra vertices could then be removed with "remove doubles", but even that was rarely needed.

An alternative fix would be to include a checkbox for "keep previous edge" in the current bevel function, with allowance that the prior edges should shrink a fraction to respect the bevel curve.

Other than that, I'm finding it extremely time consuming making my bevels by hand in order to meet the modeling requirements of my clients & other colleagues.

Please look into this, as it's going to make my modeling with Blender a lot easier once fixed.

Event Timeline

I'm pretty sure that the old one you have has made use of the 'recursion' feature of the script. This is different to applying the bevel modifier twice. The recursive feature of the bevel modifier was taken out because it was unstable*.

*if i'm not mistaken

The image shown was made as stated... the older script, bevel performed twice. The old script isn't perfect by any means... it does bad things to concave areas, but at least, on the whole, it made better geometry than the new script. I'm thinking a complete rewrite might be needed.

It's very unclear what you are referring to in this report.

1: You refer to the 'old bevel script'. However other parts of your report indicate that you may in fact be referring to the internal bevel that blender had prior to 2.46 and not the bevel center script which has not been changed. You need to clarify what it is you are reffering to before this can be properly investigated.

2: I cannot replicate the geometry that you show on the left of your image either with old bevel or the bevel center script. You need to include exact details of how you achieved those results. Fromm looking at it, I'm at a loss as to how you got it.

Please clarify these issues so this can be looked into.

Thanks for the reply.

I got the left image on the old blender as stated, by performing a bevel twice. I had the cube, and then hit W key and dragged the mouse a little. Then I did the same a second time, this time dragging the mouse out until edges correctly merged.
On newer versions of Blender, the merging into three lines gets "locked" before they can be dragged far enough. It does not matter whether I use the bevel centre script, the W key, or the bevel modifier, I cannot get the results I want on newer versions of Blender (e.g. three lines for each edge and no triangles).

The older bevel was not perfect, creating a mess of triangles on concave areas, but it was still better tidier than the current implementations.

...by pressing "W" I was referring to Edit mode, with all faces selected, and choosing "bevel" from the drop down list. Hopefully, the devs aren't going to say "that was the second method for beveling in Blender whereas I am in charge of the third"... if so, perhaps they should be melded into one script?

I finally got how exactly you getting the image you posted with the old bevel. There is no reason that the new bevel cannot be modified to allow you to keep 'sliding' so that new faces are 'collapsed' and you get the geometry you want. This would just be tweaks to whats already there.

That's really great news to me!
How do I go about doing those modifications? (Not a pythoner)

It's not something that can be described so easily as 'modify this line number and add this function call'. You have to have a good understanding of Blender's source code to begin with. I am putting this on todo list with bevel, but there are bigger issues that take precedence at the moment.

Thanks. I'll be looking forward to being able to use this. Should make a big difference to certain application-open speed-modeling events where topology is a key part of the judging.

Oh, that was my coded-in-one-sleepless-night bevel stuff. Sad that a one-year effort produces worse results than that indeed.

Sorry, have to give Theeth credit too, of course :)

Well, 2.48 out and this request on "to do". Please give this some thought... I had an industry friend look at Blender the other week. Once he stumbled across the bevel, his words were "Ooh, that's terrible" before he walked off. :-(

Hey - this nearly works (though not quite)...

Given a simple shape (like a cube with maybe a few faces extruded)
Use W-key Bevel, but do not drag out the edges.
Repeat the W-key bevel
Now kit W-key again and select "smooth"
After this, remove vertice doubles.


...gives something close to the topology I would be after.

Bantle:

The problem is that the W-bevel feature only bevels once, and then modifies the factor to change how far you slide (i.e. it just transforms the vertices). This means that we can't actually remove or add geometry depending on how far you slide.

The bevelling operation would need to change quite a lot, and we would have to run the bevelling continuously as you move the mouse. Probably worth it though.

I was doing a few comparisons with the W Bevel and the Bevel Center script and also noticed a few areas of geometry that could be improved upon.
The test was done by bevelling the centre vertex.

http://img.photobucket.com/albums/v299/metalliandy/bevel_geom.jpg

The Bevel Center result is much more friendly when it come to subsurfing and though the same amount of tri's are created the positioning of them is much more efficient.

It would be great if this could be incorporated into the new update :)

I think that one of the main problems is that there are too many Bevel options in Blender which can all give different results, causing confusion...Maybe it would be an idea to merge the best bits and only have one?
Though saying that, i am not a coder so its easy for me to talk.
Is this part of the eventual plan?

Until last post, I was unaware that the different bevel options (W key, bevel centre and bevel script) actually gave differing results. :-/

Bevel Centre still creates the triangles I am so unhappy with.

I've looked into this a bit more depth and I'm thinking that I might be asking the impossible in some circumstances. I've had a look at how other applications (commercial ones) make use of Bevel.

It seems that where there is a partial bevel, it is always possible for the user to select edges where "ideal" bevels (e.g. without creating triangles) are simply not possible. On the other hand, if the whole mesh is selected, triangles never need to be introduced.

I'm thinking there should be two bevel functions...

1. Bevel as it is now; a partial (choose the edges you want to bevel) but perhaps improved to allow odd numbers of resulting edges as well as even (at the moment, bevel only makes even numbered edges which is bad, if you want a single edge to become three, like I do)... and possibly also with the ability to slide until edges merge (as in earlier bevel versions).
2. A "whole mesh" bevel which always creates ideal geometry for the full shape.

I have attached a file (bevelIQ.blend) and image as an example of the geometry which should happen in the ideal "whole mesh" method.

Hope this helps to simplify things.

Closing this since its not a bug but a feature request...

Geoffrey Bantle (briggs) changed the task status from Unknown Status to Unknown Status.Nov 7 2008, 5:45 PM

OMG - I can't believe this.

I've refrained from comapring to other packages.

Is there someone other than Bantle who knows how to code a decent bevel?

Try and understand what this is, and what it isn't....

The bevel tool in the cases that you are pointing out actually works as it was originally designed. I am not saying that the limitations in the design are not significant, however when something works as designed its not strictly speaking a bug, and therefore does not belong in the bug tracker.

Furthermore, there is work going on behind the scenes on the mesh kernel that bevel uses that will effect current bevel code so I cannot devote much time to improving it until these other related issues are resolved. I'm sure there are plenty of people who *could* fix this problem in the current bevel code, but it would be a mis-allocation of resources/development time in my opinion.

If you are interested in working on the code yourself I would be available to answer specific questions/advice. Barring that I would just ask that you be patient and understand the underlying issues surrounding the development of this code; in a development model like blender's not every need can get immediate attention due to lack of resources.

Cheers,
Geoff Bantle

Try and understand what this is, and what it isn't....

The bevel tool in the cases that you are pointing out actually works as it was originally designed. I am not saying that the limitations in the design are not significant, however when something works as designed its not strictly speaking a bug, and therefore does not belong in the bug tracker.

Furthermore, there is work going on behind the scenes on the mesh kernel that bevel uses that will effect current bevel code so I cannot devote much time to improving it until these other related issues are resolved. I'm sure there are plenty of people who *could* fix this problem in the current bevel code, but it would be a mis-allocation of resources/development time in my opinion.

If you are interested in working on the code yourself I would be available to answer specific questions/advice. Barring that I would just ask that you be patient and understand the underlying issues surrounding the development of this code; in a development model like blender's not every need can get immediate attention due to lack of resources.

Cheers,
Geoff Bantle

In addition:

Comparisons to other applications would actually be a *welcome* addition to this dialog. Clearly illustrating how other applications have identified specific problems and dealt with them helps to understand what Blender can do to overcome deficiencies in its own feature set. So if you have clear illustrations/explanations of features in the bevel tools of other applications that you find useful I would encourage you to share them.

Cheers

Thank you. I wasn't thinking I'd get an answer.

Rewriting the mesh kernel? Well, that would indeed explain why development could be halted in areas. By closing this thread though, I suspect you're really saying "no" to looking into this one at all, as opposed to putting it aside for a more appropriate time later on.

I generally try to avoid making comparisons to other applications because I don't see Blender as trying to copy those other applications; it's a powerful 3D application in its own right, with many features ahead of the commercial alternatives. Besides, citing other applications is often taken very negatively on community forums, so best just avoided. The issue here is a physical one; that Blender is now unable to make a simple bevel without introducing triangle faces to a mesh. In contexts where modeling requirements are "no sharp edges" and also "no triangles" along with "as low poly as possible" (e.g. basic subdiv modeling), the effect is devastating.

If you would like a clear example of better bevels in another application, you could look to Autodesk Maya where "segments" are set to 2... all shapes in the bevelIQ image I recently posted would instantly get beveled edges with no triangles, and organic edgeflow not broken.

I suspect that you don't really want to look into this though; you do have a lot on, hence the topic has been closed.

I'm thinking that "if you want it, you code it" is fine for, say, the original Linux developers, or perhaps for people making a programmers kit / IDE, because those people are already able to code. I'm just a standard user of Blender; without the same programming background. However, I could try. Do I start by downloading the SVN version? Are there clear references which would show me the API (is that the right term) of how Blender works?

Thanks again for the reply. Any help would be much appreciated. :-)

Looks like this has at last been addressed in Blender 2.65. A huge improvement!

Thanks for your work devs - the update of this feature means a lot to me. :-)

This task was automatically closed as archived as part of migration, because the project or tracker this task belonged to is no longer active.