[Insight-users] QuadEdgeMesh

Alexandre GOUAILLARD agouaillard at gmail.com
Wed Aug 18 00:57:46 EDT 2010


hi mahnaz,

Remeshing is pretty complex and computationally intensive as it is a
global operation. You might want to modify the mesh locally (decimate)
and then, when the quality factor drops too low,  "make it better" by
flipping some edges.

We coded a lot of QuadEdgeMesh "Functions" to help people modifying
the mesh while enforcing consistency in orientation and
2-manifoldness, and to avoid dealing with QuadEdgeMesh implementation
internals. I strongly suggest you use them. Fucntions are "in-place"
and are meant to be used within your filter, after you copy the input
to the output (for which a class is given). Filters are supposed to
copy their input to their output and be part of a pipeline. Filters
enforce const-correctness, functions don't.

== Decimation ==
What you are describing is most likely
itkQuadEdgeMeshEulerOperatorDeleteCenterVertexFunction. It removes all
the faces connected to a given point and replace the newly created
face with only one face.
Note 1: the newly created face is very likely not to be triangular. If
you want to work with only triangular meshes, you will have to do an
extra step to triangulate the newly created face
(itkQuadEdgeMeshEulerOperatorSplitFacetFunction can help  you for
that). For that reason, people often use
itkQuadEdgeMeshEulerOperatorJoinVertexFunction instead as it keeps the
mesh triangular. Note that this last function will remove two
triangles, on both sides of the collapsed edge.
Note 2: the original point is still in the container, it's up to you
to delete it if you want to.

== make it better ==
use itkQuadEdgeMeshDelaunayConformingFilter. Fast and efficient.

regards,

alex.


On Wed, Aug 18, 2010 at 7:38 AM, Mahnaz Maddah <mmaddah at synapse.sri.com> wrote:
>
> Hi Alexandre,
>
>     I'm trying to use itkQuadEdgeMesh in my EM Clustering module. One
> feature I'm looking for is the ability to resample the mesh uniformly, or at
> lease being able to delete a point on the mesh to create a larger cell.
>
>     mesh->DeletePoint(pid) won't do this. Is there anything available
> already that I could possibly use?
>
> Thanks,
> -Mahnaz
>


More information about the Insight-users mailing list