Triangle: A Two-Dimensional Quality Mesh Generator and Delaunay Triangulator.
Note the interior circle in the image above which uses a normal Bezier curve (two circles) as input.
From the website:
Triangle generates exact Delaunay triangulations, constrained Delaunay triangulations, conforming Delaunay triangulations, Voronoi diagrams, and high-quality triangular meshes. The latter can be generated with no small or large angles, and are thus suitable for finite element analysis.
This is a Python wrapper for the Triangle library referenced above. It uses ctypes. The add-on adds a ‘Triangulate’ operator (and button!) to Blender, which can take any planar meshable object (curves and meshes) and create a triangulated mesh based on specified input parameters.
Input parameters are provided via a text field and are described in the Triangle documentation.
Further work could be done to expand functionality and add support for meshing Ngon faces or some other way of operating out of the XY plane, but for now it is limited to this.
This is especially useful for creating meshes for sculpting or meshes with good face densities from 2d CAD data, for arch. viz or other uses. Interior edges are respected, meaning creating dense meshes with interior regions is possible.
UPDATE 190514
- Fixed issue with crashes on newer Windows versions.
- Added Linux support.
- Regions and holes can be implemented, but I just need to figure out the best way of controlling / exposing this in Blender…
UPDATE 171208:
- Added checkboxes and clearer options in the UI, with the option of specifying a argument string instead.
- A vertex group (Triangle Boundary) is added to the new mesh, which contains all the original vertices from the input mesh / curve. This is great, but when edges are split / vertices are inserted between input vertices, these don’t get included. One option would be to keep track of input edges, and find the mesh shortest path between the ends after triangulation, and add these new vertices to the vertex group as well.