Advice for Implicit Boolean operations -- jagged edges

I’ve looked at the Ice Cream, Implicit Boolean, and Implicit Boolean examples.

All of these examples generate a contour surface from sampling. I’ve noticed from this method that the resulting (final) object does not have crisp edges where the initial objects meet. One can increase the sampling to make this look better, but this only gains some after increasing the processing time and the memory, etc. because of the increased number of sampling points.

So, is there a way to make this better? Is there another “filter” that can be applied or is there a better method for these boolean operations?


A few things come to mind. Try a smoothing filter like vtkWindowedSincPolyDataFilter which should help with some of the bumps. However it may smooth out the “valleys” between objects which may not be what you want. Next, depending on what you are trying to achieve you can take shortcuts. For example, if your goal is simply to visualize geometry than you can just overlap geometric objects (e.g., vtkSphereSource) and the rendered appearance will be crisp. But if you want a high-resolution, continuous watertight surface then an adaptive implicit modeling approach is needed. There are bits and pieces of this capability in VTK including AMR grids and hyper tree, but I’m not sure if these have been assembled into an implicit modeling workflow…… maybe others have something to say about this.