Académique Documents
Professionnel Documents
Culture Documents
2
> SHAPO
3
> MAIN FEATURES IN 2D
• Voronoi tessellation from a user provided or automatically
generated (random or regularly) set of generators within a
closed domain
• Domain boundary defined by a PLC that form a polygon
• Convex or non-convex
• Simply or multiply connected - with or without holes
• Rich API provides full connectivity of the generated mesh
along with other useful information
• Points, edges & cells connectivity
• Input boundary edge a mesh edge stands on,
point ids of points introduced on boundary edges, etc.
• Remote ids on neighbor nodes (parallel)
• Centroidal Voronoi - mesh relaxation
• Mesh export and visualization functions
4
> EXTRA FEATURES IN 2D
• Voronoi Remeshing
• Replace some regions of an existing unstructured
mesh with a Voronoi mesh
• Shape of non remeshed boundary cells do not
change but their connectivity does
5
> EXTRA FEATURES IN 2D
• Voronoi Remeshing
• Replace some regions of an existing unstructured
mesh with a Voronoi mesh
• Shape of non remeshed boundary cells do not
change but their connectivity does
5
> 2D TESSELLATORS
Constrained* Clipped* ConVorM
7
> CONFORMAL VORONOI MESH
• Problem
• Output tessellation must be conform to the input PLC
• Clipping has a cost and is difficult to make 100% robust
• Could we put generators in such a way that Voronoi edges stand on
the boundary edges?
7
> CONFORMAL VORONOI MESH
• Problem
• Output tessellation must be conform to the input PLC
• Clipping has a cost and is difficult to make 100% robust
• Could we put generators in such a way that Voronoi edges stand on
the boundary edges?
7
> PREVIOUS WORK
• Sandia’s VoroCrust [Mitchell et al.]
Algorithm(s) to place the generators and create
conformal Voronoi meshes in 2D & 3D
• Several workshop presentations1 on the principle
• Core algorithm not fully described, no paper available yet
• Main idea: Sample circles on boundary points/edges
Put generators at circle-circle intersection points
10
> EXAMPLES
11
> GOING 3D
• Voronoi tessellation from dual Delaunay
triangulation is quite straightforward
• A Voronoi face is created by connecting the
circumcenters of the tets adjacent to a dual edge
• We use TetGen library – robust & efficient
• Definition of the (explicit) data structures to
define and retrieve full connectivity of
output 3D meshes: edge/face/polyhedron
12
> 3D CLIPPED VORONOI ALGORITHM
• Input: PLC, set of internal generators
13
> 3D CLIPPED VORONOI ALGORITHM
• Input: PLC, set of internal generators
1. Add 8 bounding generators far enough from the input
generators (no need to deal with infinite edges/faces)
2. Compute the Delaunay triangulation of the generator set
13
> 3D CLIPPED VORONOI ALGORITHM
• Input: PLC, set of internal generators
1. Add 8 bounding generators far enough from the input
generators (no need to deal with infinite edges/faces)
2. Compute the Delaunay triangulation of the generator set
3. Compute Voronoi faces around dual edges that involve
at least one internal generator
4. Create Voronoi polyhedron from faces
13
> 3D CLIPPED VORONOI ALGORITHM
• Input: PLC, set of internal generators
1. Add 8 bounding generators far enough from the input
generators (no need to deal with infinite edges/faces)
2. Compute the Delaunay triangulation of the generator set
3. Compute Voronoi faces around dual edges that involve
at least one internal generator
4. Create Voronoi polyhedron from faces
5. Clip Voronoi faces against the PLC
13
> ROBUST POLYHEDRON CLIPPING
• Problem: just clip Voronoi polyhedrons against the PLC
• We experienced different libraries
https://github.com/devonmpowell/r3d
http://gts.sourceforge.net
https://github.com/dabroz/csgjs-cpp
• R3D: polyhedron clipping against set of planes
• Robust
• Cost to convert general purposes polyhedron to R3D’s model (3-connected points)
• No acceleration structure
• In some cases non-convex cells are not returned explicitly
• CSG.JS
• Not robust at all
• Return a triangle soup
• No acceleration structure
• GTS (GNU Triangle Surfaces, LGPL)
• Robust
• Pretty fast
• Return highly split cells
14
> CLIPPING REPAIR
• Once clipped, polyhedron surface mesh needs to be cleaned
• Merge triangles than were created by splitting same initial face (GTS patch)
• Remove points added on face boundary edges (adjacent to 2 edges)
15
> ORPHAN CELLS
• Clipping a convex polyhedron against a non convex PLC can lead
to multiple pieces
• « Orphan cell » is the piece that
does not contain its generator
• For now we no not “adopt” them
16
> 3D CLIPPING RESULTS
17
18
18
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> 3D ConVorM
• Extension of the 2D concept to 3D
• Protect every triangle of the PLC with pairs of generators
• Generators are intersection points of 3 spheres
• Main rule: Generators must not be covered by a sphere
19
> WORK IN PROGRESS
• How to choose sphere radius?
• Big enough to ensure intersection and avoid gaps
• Small enough to not cover a generator
• What about sharp features?
20
> WORK IN PROGRESS
• How to choose sphere radius?
• Big enough to ensure intersection and avoid gaps
• Small enough to not cover a generator
• What about sharp features?
20
> ConVorM vs CLIPPED
21
> ConVorM vs CLIPPED
21
> PARALLEL TESSELLATION IN 3D
23
> FIRST RESULTS
24
> FIRST RESULTS
24
> SUMMARY
25
> THANK YOU
26