Yesterday, I published a library for automatically generating 3D models. Input is a simple list of unordered, undirected vertices and edges (soup). Output is a triangulated mesh (as vertex, normal, and index arrays), with consistent winding order, and per-edge weighted normals. When it's done the graph analysis once, then you can give it any set of vertices with the same topology, and it will instantly give you back adjusted normals. Or, you can pass a deforming function or lambda, and it will apply it to the vertices, and give you that mesh instead.
https://github.com/andy-wood/AutoMesh