[Bf-committers] Bevel function
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
> 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 =
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.