BrunoLevy/geogram

Does geogram support non-manifold surface isotropic remeshing while maintaining its non-manifold?

Closed this issue · 6 comments

First I want to say thank you guys for sharing such a powerful tool.
Here's my question: I have a non-manifold surface which has its screenshot as follows:
image
the non-manifold edges comes from the underlayer surface:
image

This surface mesh is aimed to simulate a mountain slope(the green part) and the stratum underneath(the yellow part), and it is actually generated by intersecting the mountain slope surface mesh and the stratum layer mesh:
image
thus the boundry between stratum layer and mountain slope is filled with small and irregular triangles:
image, but the the stratum layer and mountain slope share exactly the same boudry vertices.

What I want to do is to isotropic remesh this model while maintaining the boundry vertices connecting mountain slope and stratum still keep connected. I tried to isotropic remesh it using Geobox and set nb_points to be 25000, then the output remesh is shown as follows:
image
open it in meshlab:
image
and it seems that the boundary vertices connecting mountain slope and stratum are detached.

Is it possible to keep these boundry vertices still keep connected? I will appreciate if anyone help me solve this issue.

Here's the surface mesh attachment slope_slide_clip_merge.zip

Probably, and the proposed "fix" is probably a collection of viruses, spywares etc... (I have deleted the answer and removed the link in your message).
I'll come back to you shortly with an answer to your question.

P.S. did you see the same type of answer elsewere ? (would be good to signal them so that they are removed as well).

P.S. did you see the same type of answer elsewere ? (would be good to signal them so that they are removed as well).

No. I do not see these answers from other place.

Remeshing with preservation of non-manifold contacts is not implemented in Geogram. There are two possiblities:

  1. modify the remeshing algorithm. You will need to generate vertices along all the non-manifold edges (using for instance the curvilinear absissa to generate an even spacing of the vertices), then mark the new vertices as 'locked' so that they are not moved away by Lloyd relaxation, then generate the new vertices and relax them with Llloyd.
    Here is a list of relevant files in geogram:
  1. Tessael markets a geogram-based GeO2 solution that has a non-manifold aware mesh repair tool, specialized for reservoir modeling and gridding (usage scenario seems to be quite similar to yours), so you may also contact them.

Remeshing with preservation of non-manifold contacts is not implemented in Geogram. There are two possiblities:

  1. modify the remeshing algorithm. You will need to generate vertices along all the non-manifold edges (using for instance the curvilinear absissa to generate an even spacing of the vertices), then mark the new vertices as 'locked' so that they are not moved away by Lloyd relaxation, then generate the new vertices and relax them with Llloyd.
    Here is a list of relevant files in geogram:
  1. Tessael markets a geogram-based GeO2 solution that has a non-manifold aware mesh repair tool, specialized for reservoir modeling and gridding (usage scenario seems to be quite similar to yours), so you may also contact them.

Dear BrunoLevy, in your first solution, you mentioned using curvilinear absissa to generate an even spacing of the vertices,
Do you mean collecting all the intersect vertices along the non-manifold edges, and then from these vertices choose those that are almost equally spaced(at target triangle length), and lock these vertices, then do the rermesh?

Yes, that's more or less the idea (with a small difference: you may generate new vertices, that are not necessarily existing in the intersection). A polygonal line can be considered as a parametric function, that maps a "time" t to a position along the line (you "travel" along the line at constant speed), then you generate the point for t=1/N, t=2/N, ... t=1.