Does VTK have any tools to achive this?
(I have tested vtkDataSetTriangleFilter and have the documentaion for other triangulation/tessealtion filters but cannot find anything close to this example)
Cleaver2 is good and it comes with MIT license, does not have any dependencies, and properly maintained and still developed. Mesh resolution is varied according to complexity of the surface but you can also apply additional constraints. You can try it with its nice (optional) GUI application or using 3D Slicer’s SegmentMesher extension.
Tetgen and GTS are not great. tetgen uses restrictive license, not very robust, a one-man project, with the last release 7 years ago. GTS is ancient (actually, it looks like it died many years ago) and depends on GTK glib (huge library, not Windows friendly).
It is privately developed, and unfortunately I cannot speak about it in detail as of now.
I use unstructured grids as a base, allowing users to create 2D and 3D objects using a variety of tools and building-blocks within an editor (pretty much a lite mesh-modeling suite used for scientific application).
I know this is slightly off topic now, but I see that Cleaver2 uses NRRD files as input.
Is there anyway to convert an UnstructuredGrid file into a NRRD file, and then would there be a way to read the resulting file back in to vtk once the triangulations are generated?
Yes, typically you use a segmented image (labelmap volume, in NRRD format) as input. NRRD is probably the simplest possible file format for image volumes: a text header that describes dimensions, origin, spacing, and axis directions; followed by voxel values.
If the input is a surface mesh then you need to convert it to an image volume. For example, using polydata to image stencil filter.
It may be surprising that the input has to be an image volume, but this allows the mesher to work very robustly: it is guaranteed to produce valid, high-quality meshes for arbitrarily complex input geometries. Most other meshers take a surface mesh as input, but when they are given a complex input, they often break down: crash, hang, produce invalid outputs.
I would recommend to give a quick try to Cleaver2 and if you find that it works well for you then use it, if not then go on and try others. If your input is not nrrd but some mesh format and you don’t want to experiment with converting using VTK, then I would suggest to use 3D Slicer and Segment Mesher extension - the complete workflow takes about 10-15 clicks - see for example this discussion. The default resolution may be too coarse but you can refine it as needed.