Remesh or decimate a set of registered meshes, while preserving correspondences

This morning, I implemented two simple routines in my R-package mesheR, that allow to remesh or decimate a set of registered meshes (i.e. with all vertices in pseudo-homologous positions). The procedure is quite simple: select a reference from the sample and apply the decimation/remeshing. Then get the barycentric coordinates of the new vertex positions on the original mesh. These in turn can then be used to extract the corresponding vertex positions of the mesh on all the sample - as the mesh structure is identical throughout the sample.

NOTE: The meshes do not have to be prealigned.

Example

origstate
Fig. 1: A set of registered meshes (62623 faces).

Fig. 1 shows a sample of mandibles (registered using gaussMatch with a GP-model created with RvtkStatismo). But maybe for some registration tasks I want to create a statistical model with only 10% the amount of faces (let’s set it rather low to see the effect better). Assume we have saved the meshes in a list in R called matchlist. Now we simply decimate the sample by calling decimateList(matchlist,percent=0.1) (you can also use all parameters from the workhorse function vcgQEdecim.

And here we go: Fig. 2 shows the same surfaces but with less vertices and faces.

origstate
Fig. 2: The same mandibles now reduced to 6262 faces.

Now we could for example create a coarser statistical model from those.You can also do a complete remeshing using the function remeshList wrapping the remeshing function vcgUniformRemesh.