Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Extracting the segments from a Surface Mesh

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Extracting the segments from a Surface Mesh


Chronological Thread 
  • From: "Sebastien Loriot (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] Extracting the segments from a Surface Mesh
  • Date: Mon, 06 Jun 2016 16:01:59 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:MjaHKxb13ovzRx4sGKAEBij/LSx+4OfEezUN459isYplN5qZo865bnLW6fgltlLVR4KTs6sC0LqH9f6xEjJfqb+681k8M7V0HycfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aJBzzOEJPK/jvHcaK1oLsh7H0pcyYPVoArQH+SI0xBS3+lR/WuMgSjNkqAYcK4TyNnEF1ff9Lz3hjP1OZkkW0zM6x+Jl+73YY4Kp5pIYTGZj8ZLkyGLxEECw9YSdy/9zurRCFTA2V53JaXH9RiQtNGwGC7Rf0WdD6vSL+8+Z8wyKHJtalcLYvRD7377t3UAS6z2AcJjsh+SfWjNZxheRVulW6thlnysnVZo+Sc/Fxd6eYcdIBTndaRZVsUTdcCNa8c5cXFLhGev1JqpH04VoItxq3Qwe2Q/j+zydBwX7w06p92OsoFUTK3RcrAskV40jT+d76PaNXXeGux7TT1h3CaelX0HHz8tvmaBck9Lu3ULh5atbQxE9nMwTfj1KM4czKMjSQ2/gXokaS5PZnT/PuwSZzsAV2uDmo2oEpjqHGg4sUzhbP8iAvk9V9HsGxVEMuOY3sK5BXrSzPb4Y=
  • Organization: GeometryFactory

You can try using the functions keep/remove_connected_components.

http://doc.cgal.org/latest/Polygon_mesh_processing/group__keep__connected__components__grp.html

http://doc.cgal.org/latest/Polygon_mesh_processing/group__keep__connected__components__grp.html

The problem might be that the output is non-manifold (two patches sharing only one vertex).

Sebastien.


On 06/02/2016 03:01 PM, Sukhraj Singh wrote:
Hello Sebastien,

I tried the following example to create a polyhedron from a segment in
an incremental manner.
http://doc.cgal.org/latest/Polyhedron/Polyhedron_2polyhedron_prog_incr_builder_8cpp-example.html

I followed following procedure (In brief).
- Iterate the facets
If facet belongs to i-th segment.
Push its points to the incremental builder
Then add vertex to facet.


I got following error.
CGAL::Polyhedron_incremental_builder_3<HDS>::
lookup_halfedge(): input error: facet 1 shares a halfedge from vertex 1
to vertex 2 with facet 0.

I am getting the reason what is happening, but the sample provided
"polyhedron_prog_incr_builder.cpp" is too simplistic.
Is there any other example where above case is handled. Because I think
it can happen very often.
Any hint to resolve the above issue would be appreciated.



Thanks



On Mon, May 23, 2016 at 8:38 PM, Sebastien Loriot (GeometryFactory)
<

<mailto:>>
wrote:

If it does what you want, then yes.

Sebastien.

On 05/23/2016 04:57 PM, Sukhraj Singh wrote:

Okay,

Assuming I don't use connected_components().
And I directly create Polyhedrons from the segments, i.e.

- Iterate through polyhedron.
- Create polyhedron of a segment using
Polyhedron_incremental_builder_3.

Is this correct way to do ? Or there is some better approach in
CGAL.




On Mon, May 23, 2016 at 1:18 PM, Sebastien Loriot (GeometryFactory)

<

<mailto:>

<mailto:

<mailto:>>>
wrote:

What I mean is if you need both clusters and segments but
want to
save on computation time, you can run the segmentation
algorithm to
extract
segments and then clusters using `connected_components()`
(instead of
another run of segmentation).

Sebastien.

On 05/22/2016 02:32 PM, Sukhraj Singh wrote:

Thanks for your answer, Sebastien
Do I really need to use connected_components()

I already have the "segment_pmap", where the value is the
segment id to
which that particular face belongs.
And one could parse the Polyhedron and collect all the
faces having
particular segment ID.(Of-course I need to check, how to
implement the same)
Is my understanding correct ?



Further, quoting from my previous email:

Two spatially apart areas( i.e. not having
common edges) of a Mesh may fall into same
segment, since
they had
comparable SDF values.


I am not sure about it, they of-course may fall into same
cluster, but
may not be to the same segment. In such a case if,
faces that don't
share edge, will fall into different segment always,
even though
they
were in same cluster, using connected_components() may
not be
required ?




On Thu, May 12, 2016 at 6:00 PM, Sebastien Loriot
(GeometryFactory)

<

<mailto:>

<mailto:

<mailto:>>

<mailto:

<mailto:>

<mailto:

<mailto:>>>>
wrote:

On 05/12/2016 02:16 PM, Sukhraj Singh wrote:

Salut,

The "Triangulated Surface Mesh Segmentation"
module
allows one to
segment a surface mesh using the SDF values.
It creates a Property Map which is colorized
according
to the
indices,
resulting into segments. Two spatially apart
areas(
i.e. not having
common edges) of a Mesh may fall into same
segment,
since they had
comparable SDF values.

My question is, how can one extract these
segments.
Since I want
to do
further processing on a segment separately. Also I
would like
further
divide a segment, into say sub-segments , where a
sub-segment
will have
faces which are not spatially apart, i.e. a
subset
which is having
common edges only.



Set the parameter output_cluster_ids to true when
calling the
segmentation function


http://doc.cgal.org/latest/Surface_mesh_segmentation/group__PkgSurfaceSegmentation.html#ga8533ea7b1062ebbabe3bf23fed303f24

If you need also the segments, then set the option
to false and
use the function connected_components() considering as
constrained
edges the edges between two faces belonging to
different
segments.


http://doc.cgal.org/latest/Polygon_mesh_processing/group__keep__connected__components__grp.html#gabe2052b2281e1e628e68d8fea94be2d9


Sebastien.



Thanks to inform.




P.S. I am a newbie.
--
Sukhraj Singh



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





--
Sukhraj Singh



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





--
Sukhraj Singh



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





--
Sukhraj Singh




Archive powered by MHonArc 2.6.18.

Top of Page