ARTICLE AD BOX
I have a triangulated surface mesh in Python (PyVista Polydata) and a set of pre-defined boundary points — four ordered arrays defining lead edge, trail edge, root, and tip. I want to remesh the surface so that
The output mesh should have the same input boundary points as its boundary vertices, so the resurfaced mesh should have the same position, count, and order of the pre-defined boundry points.
The interior vertices are redistributed uniformly across the surface (algorithm should automatically determine interior vertex count based on boundary pts count)
No clean or welding operation is ever applied to the boundary vertices after insertion
Vertex indices 0 through N-1 in the output are always the boundary points in input order — this must be consistent across multiple meshes of the same wing in different deformation states
Base mesh with target vertices, aka the inputs for the remeshing script/algorithm/function
My current approach uses edge-splitting to insert boundary points onto the mesh, followed by Laplacian smoothing with boundary vertices frozen. The problem is that decimate_pro and clean() after smoothing collapse nearby boundary vertices, reducing the boundary count.
I tried:
Inserting boundary points by edge-splitting. It works but clean() after smoothing merges close boundary vertices
Appending new vertices and rebuilding faces, but clean() still merges them
Skipping clean() entirely, but it leaves a non-manifold mesh that downstream tools reject
Question: Is there a standard algorithm or library (libigl, trimesh, CGAL Python bindings, or similar) that supports constrained remeshing / surface wrapping where boundary vertices are treated as hard constraints (fixed in position and count) while the interior is freely remeshed to a target density?
Minimum reproducible example and expected output would be: input mesh with 850 boundary vertices → output mesh with exactly 850 boundary vertices at identical positions, approximately 50000 total vertices, manifold, no self-intersections.
