[Bf-committers] Bevel function

Laurence Bourn bf-committers@blender.org
Mon, 8 Dec 2003 11:46:22 +0100

> Should there be any questions about the algorithm itself,
> here's the basic way it works (developped in a sleepless
> night :)
> 1. Split all faces so that they are "floating" unconnected
> 2. Search for edges that lie exactly on top of each other.
>    Make a quad between them.
> 3. Search for more than 2 vertices which lie exactly on
>    the same point. Make lists of lists of these.
> 4. Shrink all original faces (i.e., excluding the new quads)
>    using an algorithm that moves a face's edge towards the
>    face's center independantly of the shape of the face.
>    This algorithm has originally been inspired by #math on
>    Dalnet, theeth has later integrated a simpler, faster
>    version.
> 5. Take the list of lists of vertices, and make n-gons between
>    each of the "clusters".
>    n-gons are made by calculating the Boundbox and extruding
>    all outer edges towards the center, merging in the middle.
> Any questions on this wonderful algo? ;-)
Fantastic algorithm and a nice clear description - thanks.
I have not reviewed your implementation so the following is just based =
on the above text.

Maybe you have missed a few steps out for clarity? It seems to me that =
the above algorithm will always introduce new polygons even if the input =
polygons are coplanar. The bevel polygons between the coplanar region =
are just flat and add nothing.

One way to get round this is to restrict your searching for interesting =
edges (Step 2) to edges whose polygons are greater than some angle. =
(Blender draws these feature edges iif you use wire-frame rendering in =
object mode).=20

Since you are now only bevelling specific edges, you will also have to =
modify the shrink function (Step 4) to only move vertices from those =
edges in the plane of the polygon and perpendicular to the edge.