Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Hole-filling in the presence of non-manifold vertices

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Hole-filling in the presence of non-manifold vertices


Chronological Thread 
  • From: "Sebastien Loriot (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] Hole-filling in the presence of non-manifold vertices
  • Date: Thu, 12 Dec 2024 10:54:33 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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 uGQ3kUD
  • Ironport-hdrordr: A9a23:MXmLAaBNzVDd+IzlHemn55DYdb4zR+YMi2TDGXoRdfUzSKylfq GV98jzuiWbtN98Yh0dcJW7V5VoP0mslqKdkLN6AV7KZmCPhILrFvAB0WKI+VDd8kPFh4tgPN 9bAsxDNOE=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 675ab2df_kj8U8bd9GP88pHLJPAS1kovS33YHcm6Imx6H0Gbdwc5DoFz qUxKR/+OjVS0yocsCmD/NZeY75VwpY4grsJNS9w==

Hello,

if you add a call to
PMP::merge_duplicated_vertices_in_boundary_cycles(mesh); [1]

before detecting border cycles, then you will get what you want.

I tested it locally and your example now adds only 3 new triangles.

Best,

Sebastien.

[1] https://doc.cgal.org/latest/Polygon_mesh_processing/group__PMP__combinatorial__repair__grp.html#ga2af4c26afc4872bafd0caabe6af23f9a

On 12/12/24 10:11, Matthijs Sypkens Smit ( via cgal-discuss Mailing List) wrote:
Hello all,

I'm wondering whether it is possible to use CGAL to perform hole-filling for a mesh as provided by /sawtooth.obj/.
I have not been able to obtain a satisfactory result. In particular the attached example compiles, and runs, but produces more triangles than are expected.
Probably this is because 3 non-manifold vertices are duplicated. The documentation for 'triangulate_hole()' stipulates that there cannot be a non-manifold vertex in the boundary, which is achieved by duplication, but apparently such a case is not expected to work?
Is there a way to fill the holes of the /sawtooth.obj/ input with CGAL?

Attached you find code to reproduce the hole-filling (/main.cpp/), the input file /sawtooth.obj/, the generated output /sawtooth_filled.obj/ and a screenshot that shows that there are more triangles than we would have expected. The input has 44 triangles, whereas the output has 54 triangles. For this example I would like the output to have 44+4 = 48 triangles.

With regards,

--
Matthijs Sypkens Smit

--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss




Archive powered by MHonArc 2.6.19+.

Top of Page