user manual

description
This commit is contained in:
Pierre Alliez 2023-12-25 14:05:12 +01:00
parent 829120a1f6
commit 5d9e631357
2 changed files with 9 additions and 10 deletions

View File

@ -70,7 +70,6 @@ For example, a tunnel of the isosurface within a single cell is topologically re
Furthermore, the mesh is guaranteed to be 2-manifold and watertight, as long as the isosurface does not intersect the domain boundaries. Furthermore, the mesh is guaranteed to be 2-manifold and watertight, as long as the isosurface does not intersect the domain boundaries.
% PA: add a figure comparing without and with the option activated % PA: add a figure comparing without and with the option activated
% PA: add following to CGAL list of references: Roberto Grosso: Construction of Topologically Correct and Manifold Isosurfaces. Computer Graphics Forum 35(5):187-196 - 2016.
\subsection subsecdc Dual Contouring (DC) \subsection subsecdc Dual Contouring (DC)
The DC algorithm generates one vertex for each cell that is intersected by the isosurface. Next, a face is created for each edge that intersects the isosurface, by connecting the vertices of the incident cells. For a uniform hexahedral grid, this results into a quadrilateral surface mesh. The DC algorithm generates one vertex for each cell that is intersected by the isosurface. Next, a face is created for each edge that intersects the isosurface, by connecting the vertices of the incident cells. For a uniform hexahedral grid, this results into a quadrilateral surface mesh.
@ -90,14 +89,15 @@ Dual Contouring can deal with any domain but guarantees neither a 2-manifold nor
It generates fewer faces than Marching Cubes, in general. It generates fewer faces than Marching Cubes, in general.
Its advantage over MC is its ability to recover sharp creases and corners. Its advantage over MC is its ability to recover sharp creases and corners.
% PA: add a figure. % PA: add a figure.
[what about tips, darts, cusps and corners? respectively adjacent to 0, 1, 2 and 3+ creases] % PA: what about tips, darts, cusps and corners? respectively adjacent to 0, 1, 2 and 3+ creases
\cgalFigureAnchor{isosurfacing_iwp_dc} \cgalFigureAnchor{isosurfacing_iwp_dc}
<center> <center>
<img src="iwp_dc.png" style="max-width:40%;"/> <img src="iwp_dc.png" style="max-width:40%;"/>
</center> </center>
\cgalFigureCaptionBegin{isosurfacing_iwp_dc} \cgalFigureCaptionBegin{isosurfacing_iwp_dc}
Isosurface of the IWP scalar field generated by %Dual Contouring. [TODO: do not assume that the iwp scalar field is well known to the reader - explicit first what it means. in addition, the shape is too complex, adding confusion to the reader. try to pass only one message per figure and provide a caption to not let the reader guess. show mesh edges in black] Isosurface of the IWP scalar field generated by %Dual Contouring.
% PA: do not assume that the iwp scalar field is well known to the reader - explicit first what it means. in addition, the shape is too complex, adding confusion to the reader. try to pass only one message per figure and provide a caption to not let the reader guess. show mesh edges in black
\cgalFigureCaptionEnd \cgalFigureCaptionEnd
\subsection subseccomparison Comparisons \subsection subseccomparison Comparisons
@ -134,7 +134,7 @@ The input is provided in the form of a `domain` (see \ref secmydomains).
The `isovalue` scalar parameter denotes the value used for sampling the input scalar field for generating the isosurface. The `isovalue` scalar parameter denotes the value used for sampling the input scalar field for generating the isosurface.
The output surface mesh is provided in the form of a indexed face set, which is written to the two containers of `points` and `polygons`. The output surface mesh is provided in the form of a indexed face set, which is stored into two containers of `points` and `polygons`.
The vertex positions are stored as `Point_3` in `points`. Each face in `polygons` is a list of indices pointing into the `points` container. The vertex positions are stored as `Point_3` in `points`. Each face in `polygons` is a list of indices pointing into the `points` container.
Depending on the algorithm, the indexed face set may store either a polygon soup (unorganized polygons with no relationship whatsoever, i.e. no connectivity between them) or a mesh with connectivity. Depending on the algorithm, the indexed face set may store either a polygon soup (unorganized polygons with no relationship whatsoever, i.e. no connectivity between them) or a mesh with connectivity.
@ -145,12 +145,11 @@ When the parallel version is not available due to unsuccessful link with the TBB
\section secmydomains Domains \section secmydomains Domains
A domain is an object that provides functions to access the input data, its geometry, topology, and optionally its gradient. A domain is an object that provides functions to access the input data, its geometry, topology, and optionally its gradient.
[I fail to understand how you specify the topology - for me the domain is the support of the scalar field, whose % I fail to understand how you specify the topology - for me the domain is the support of the scalar field, whose sampling/interpolation will yield the output mesh topology - not more.
sampling/interpolation will yield the output mesh topology]
For common representations, we offer a set of predefined domain classes that wrap the input data and provide a generalized interface for the algorithm. For common representations, we offer a set of predefined domain classes that wrap the input data and provide a generalized interface for the algorithm.
Users can also define new domains by implementing the `IsosurfacingDomain_3` or `IsosurfacingDomainWithGradient_3` concepts. Users can also define new domains by implementing the `IsosurfacingDomain_3` or `IsosurfacingDomainWithGradient_3` concepts.
\subsection mysubsecimplicitdomain Implicit Crtesian Grid Domain \subsection mysubsecimplicitdomain Implicit Cartesian Grid Domain
The class `CGAL::Isosurfacing::Implicit_Cartesian_grid_domain_3` represents the input scalar field in an implicit form without storing any values. The class `CGAL::Isosurfacing::Implicit_Cartesian_grid_domain_3` represents the input scalar field in an implicit form without storing any values.
It takes a function-object (functor) or lambda function that computes the value of the scalar field from the position of a vertex query. It takes a function-object (functor) or lambda function that computes the value of the scalar field from the position of a vertex query.
Additionally, the bounding box and spacing between the grid points must be provided. Additionally, the bounding box and spacing between the grid points must be provided.
@ -197,8 +196,8 @@ The following example shows how to load data from an `Image_3`.
\subsection myExampleMeshOffset Offset Mesh \subsection myExampleMeshOffset Offset Mesh
The following example shows how to compute a signed offset mesh. The following example illustrates how to generates a mesh approximating a signed offset to an input closed surface mesh.
The input mesh is stored into an `AABB_tree` data structure to allow fast distance queries. Via the `Side_of_triangle_mesh` functor, the sign of the distance field is made negative inside the mesh. The input mesh is stored into an `AABB_tree` data structure to provides fast distance queries. Via the `Side_of_triangle_mesh` functor, the sign of the distance field is made negative inside the mesh.
\cgalExample{Isosurfacing_3/dual_contouring_mesh_offset.cpp} \cgalExample{Isosurfacing_3/dual_contouring_mesh_offset.cpp}

View File

@ -30,7 +30,7 @@
This package provides algorithms to extract isosurfaces from different inputs: Marching Cubes, topologically correct Marching Cubes and Dual Contouring. This package provides algorithms to extract isosurfaces from different inputs: Marching Cubes, topologically correct Marching Cubes and Dual Contouring.
The input is represented as a 3D scalar field defined as an implicit function, a Cartesian grid or an octree. The input is represented as a 3D scalar field defined as an implicit function, a Cartesian grid or an octree.
The output is a surface mesh represented as an indexed face set (point coordinate and face arrays). The output is a surface mesh represented as an indexed face set (container of point coordinates and indexed faces).
The provided algorithms include Marching Cubes, topologically correct Marching Cubes and Dual Contouring. The provided algorithms include Marching Cubes, topologically correct Marching Cubes and Dual Contouring.
\cgalClassifedRefPages \cgalClassifedRefPages