I left the intermediate steps as separate operators as they might be useful for beveling, roofs of buildings (architecture), map isolines of mountains, etc.
It uses the one of Stefan Huber and Martin Held.
Theoretically, the algorithm can handle holes and open polygons / line-strips as well,
but I haven’t implemented these features yet.
I haven’t seen any implementation of that algorithm in Python. I’d suggest to release it as a separate library (independent of Blender) and then use the library in the addon for Blender.
Nice job. I am the author of the old straight skeleton addon. It has some bugs, as you have discovered. But it does (usually) work with polygons with holes in them. The “testing” addon for AI / PDF / SVG uses the same algorithm to do an optional bevel.
Other than the original implementation by the authors, which is closed source, I haven’t seen any other implementation. So I had to implement it from the paper and it is not complete. It also lacks the divide and conquer optimizations at the end which would make it fast for bigger polygons.
But yes, extracting it to its own library is a good idea.
At the moment I am too busy on other stuff to look at this. I remember trying to convert my algorithm into C, as a possible basis for a better inset in Blender, and ran into similar bugs, and they were hard to figure out. Maybe one day I’ll get back to this, and perhaps collaborate with you and use your code as basis for a good inset in Blender. It isn’t easy, however, because the current Blender inset works on non-planar regions.
By “testing”, I mean that it is in the addons_contrib repository, so it isn’t distributed with official releases of blender, though I think it is distributed with nightly builds - where it is available in the Addons Preferences by enabling the “Testing” tab.
Hi,
just create any + shaped form. So like a quad with each edge extruded once.
Addon from Howardt seems to have the same problem. When the + shape is not so straight its working. Like randomizing all vertizes before.
ERROR: calculateVerticesFromIntersections() could not find the next current_line
ERROR: calculateVerticesFromIntersections() could not find the next current_line
ERROR: calculateVerticesFromIntersections() could not find the next current_line
It gets it in parts right. Some faces seems correct. Then i think there is some wrong face. and then some faces are missing.
hey, that sounds cool! How did you get it to work in Blender? Could you send me the stuff?
As soon as it includes the necessary euclid3 i get the error:
error: option --python not recognized
The terminal process terminated with exit code: 1
Not even a T-shape is working, when it is symmetrical Im sure thats why you show that unsymmetrical T-shape in your screenshot?
Also its not allowed to have extra vertices, even on a quad, that don’t change any direction. So a quad with one side consisting of 2 straight edges will fail as well.
Are you planning to finish the Addon? Or is it as it is?