First, let me apologise for my use of the word "trivial". I was trained by mathematicians, so to me it means "a series of pretty obvious steps, but obviously doable" versus "something you could do with no effort".
See the screenshot with the edge selection below to understand why I think it belongs to the more difficult tools.
The bevel tool is essentially your
inner extrude tool with mechanical post-processing (described in an earlier post). It's easy to make it work just as generally as inner extrude does (yes, it will have problems with pathological cases -- so does bevel). Chamfer -- which I don't care much about -- is an interpolated bevel.
Please look at the second screenshot. Do you really believe the fill hole tool can handle that case.
I don't think so.
OK, fill hole won't work for nutty examples
... but:
First: I actually don't want a "merge polygon" tool so much as a "delete edge and merge adjacent polygons" tool -- which I think is pretty simple to implement, no? In fact it's what I think most people expect when they delete an edge. It's even easy to refuse to do so if the adjacent polygon normals aren't sufficiently similar, no?
Second, given that you implement the preceding, it can be used to implement "merge polygons" via fairly trivial recursion:
1) Convert selection to edges
2) Apply "delete edge and merge adjacent polygons" to every edge in the selection which is has two other incoming edges in the selection.
Third: Note that the "delete edge and merge adjacent polygons" tool would presumably refuse to work if the polygon on both sides of an edge is the same polygon, so you wouldn't necessarily run into this problem with the solution I'm proposing.
Fourth: OK, it will still annoy folks wanting to create walls with windows in them, so that's an issue.
I first have to support N-Gons with holes which require a rewrite of all polygon tools.
It seems to me that if you can't implement polygons with internal holes by subclassing, your codebase has problems.
The hard part will be implementing stuff like starting a scalpel cut in the middle of a face. Handling a polygon with interior holes as a set of convex polygons for rendering purposes is fairly straightforward.
Scripting Wishlist
I'd
love to work with either a plugin SDK or the scripting system, but it's pretty annoying to program in an environment with no starting point documentation, no debugger, no command line, or even the ability to dynamically load scripts without restarting. I'm blown away by what some of the scripters have done (especially you-know-who
) but it seems a little too much like hard work to me ;-)