Jane Tournois
+GeometryFactory
+ +Introduced in CGAL 3.5, the package +3D Mesh Generation +is designed to generate a isotropic simplicial meshes discretizing 3D domains. +Since then, multiple improvements in mesh quality, performances, and versatility have been made available in CGAL. +Lately, CGAL authors have focused more on the quality of the output mesh, the ability of the +mesh generation algorithm to represent the input surface in a more accurate way, for a wider range of input data types. +
+ +Recent releases of CGAL have introduced improvements to the 3D Tetrahedral Mesh Generation package: +detection and protection of triple lines from labeled images, +generation and use of weighted labeled images, +and a new approximation error criterion for polyline features.
+ +Triple lines from labeled images
+ +CGAL's tetrahedral mesh generation algorithm is able to compute tetrahedral meshes from 3D segmented images. +For all types of inputs, detection and construction of one-dimensional features must be done a priori for the +feature protection algorithm to be able to represent them properly in the generated mesh. +In 3D segmented images, such features correspond to the intersections of the bounding box of the image with the surfaces +defined by the image, as well as polylines that lie at the intersection of three or more subdomains (including the outside).
+ +The article +Hege, H. C., Seebass, M., Stalling, D., & Zöckler, M. (1997), +A generalized marching cubes algorithm based on non-binary classifications, provides a list of possible voxel configurations. +This description has been generalized for tetrahedral mesh generation needs, and +implemented in CGAL.
+ +After feature lines detection, similarly to what is done for polyhedral surfaces, the polyline features +are added to the feature graph of the domain for feature protection.
+ +Two detection functors are provided : +
-
+
- CGAL::Detect_features_in_image() detects and constructs all + polylines lying at the intersection of three or more subdomains, and +
- CGAL::Detect_features_on_image_bbox() detects and constructs the polylines + that lie at the intersection of two or more subdomains and the bounding box of the input labeled image. +
+
Mesh generation from labeled image without (left) + and with triple lines detection and protection (right). + The polylines lying at the intersection of three or more subdomains are + a lot more precise with a lot fewer vertices. +
Weighted Labeled Images
+ +When a segmented image is given as input for tetrahedral mesh generation, +the generated mesh surface sometimes sticks too closely to the voxels surface, causing an aliasing effect. A solution to generate +a smooth and accurate output surface was described by Stalling et al in +Stalling, D., Zöckler, M., Sander, O., & Hege, H. C. (1998), +Weighted labels for 3D image segmentation. +It consists in generating a second input image, made of integer coefficients called weights, and use those weights to define +smoother domain boundaries. The 3D image of weights can be generated by CGAL::Mesh_3::generate_label_weights().
+ ++
Mesh generation from labeled image without weights (left, 88,000 vertices) + and with weights (right, 67,000 vertices). +
The following example shows how to use weighted labeled images: mesh_3D_weighted_image.cpp.
+ +Utilizing tetrahedral mesh generation from labeled images, incorporating both feature detection and weighted labels, +presents challenges. A new method that combines feature detection and weighted labels has been +designed and implemented in CGAL, achieving smooth and feature preserving output meshes. +This method leverages the best of these two new functionalities.
+ +Approximation Criterion on Feature Edges
+ +A Delaunay refinement algorithm is guided by meshing criteria that trigger Steiner vertices insertions, +until they are satisfied. +The list of CGAL meshing criteria has been enriched with a new criterion that enables the user to +define an upper bound on the distance between the input feature graph and the output feature edges.
+ +The following example shows how to use this new criterion, called edge_distance: + +mesh_polyhedral_domain_with_edge_distance.cpp.
+ ++
Mesh generation from polyhedral surface with varying edge_distance meshing criterion. + The quality improvement is important on the lower end of stool feet. +
Status
+ +All these new improvements have been integrated in CGAL-6.0.1, which has just been officially released.
+ +
+CGAL-6.0.1 announcement
+
+
+Documentation of the package Mesh_3
+
+
+CGAL master branch on GitHub