mirror of https://github.com/CGAL/cgal
parent
829120a1f6
commit
5d9e631357
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue