Triangulate concave mesh
-
Given a set of non-planar edges that form a loop, is there a way to triangulate faces within this loop so they don't cross the loop boundary? (The loop is not convex.)
-
For coplanar BUT non-coplanar
BUT... how about making a collection of the original vertices [array], flattening them [temporarily] to be coplanar by transforming them by vectors to a plane; adding a face to the sides, triangulating that face and them transforming the vertices by vectors back as they were to auto-fold the face [you have the array of vectors that you used to flatten it initially to rework as their 'reverse']...
-
Is there a delaunay triangulation that can constrain to a boundary?
-
I've so far only found someone else asking similar question: http://www.gamedev.net/topic/594535-curved-3d-surface-triangulation/
-
See my idea added to my post... about projecting to a plane and transforming vertices by vectors...
If you temporarily flatten the vertices then the edges will take a face, then you can triangulate that face's mesh, then relocate vertices back as they were - with no risk of malformed triangulations ? -
My initial idea was somewhat similar, project the vertices to a best fit plane and do the triangulation in 2d. However, I didn't even know the algorithm for triangulating 2d within a boundary.
Making a temporary face is one option, but I'd rather avoid that if I can - avoiding the overhead of creating geometry.
-
Do you want to triangulate the form without faces ?
If not then the temp-face mesh triangulated is not a massive imposition.
I fear that there is no bounded delauney method...
I think the mooted way of flattening, facing, triangulating then re-inflating is the best option without trying to find some obscure algorithm that might not even exist - or might end up being the equivalent anyway... -
I've got a personal plugin that does this. I shoot rays to test if the line crosses an edge. It works well enough. Though I am not triangulating from each vertex, but from the cursor. I could email you a copy if you want to see it in action.
Chris
Advertisement