Volume Cartographer 2.28.0
Public Types | Static Public Attributes | Private Attributes | List of all members
volcart::texturing::AngleBasedFlattening Class Reference

Parameterize a mesh using ABF++. More...

#include <vc/texturing/AngleBasedFlattening.hpp>

Inheritance diagram for volcart::texturing::AngleBasedFlattening:
[legend]
Collaboration diagram for volcart::texturing::AngleBasedFlattening:
[legend]

Public Types

enum class  Solver { SparseLU = 0 , ConjugateGradient = 1 }
 
using Pointer = std::shared_ptr< AngleBasedFlattening >
 
- Public Types inherited from volcart::texturing::FlatteningAlgorithm
using Pointer = std::shared_ptr< FlatteningAlgorithm >
 

Public Member Functions

void setUseABF (bool a)
 Whether to perform Angle-based flattening computation. More...
 
auto useABF () const -> bool
 Whether Angle-based flattening is performed.
 
void setABFMaxIterations (std::size_t i)
 The max number of ABF minimization iterations.
 
auto abfMaxIterations () const -> std::size_t
 The max number of ABF minimization iterations. More...
 
void setUseHLSCM (bool h)
 Whether to use HierarchicalLSCM for parameterization. More...
 
auto useHLSCM () const -> bool
 Whether HierarchicalLSCM is used.
 
void setSolver (Solver solver)
 The numerical solver method. More...
 
auto solver () const -> Solver
 The numerical solver method. More...
 
auto compute () -> ITKMesh::Pointer override
 Compute the parameterization. More...
 
- Public Member Functions inherited from volcart::texturing::FlatteningAlgorithm
virtual ~FlatteningAlgorithm ()=default
 
void setMesh (const ITKMesh::Pointer &m)
 Set the input Mesh. More...
 
ITKMesh::Pointer getMesh ()
 Get the parameterized mesh. More...
 
UVMap::Pointer getUVMap ()
 Get the parameterized mesh as a UVMap

 

Static Public Attributes

static constexpr std::size_t DEFAULT_ITERATIONS {10}
 

Private Attributes

bool useABF_ {true}
 
bool useHLSCM_ {false}
 
Solver solver_ {Solver::SparseLU}
 
std::size_t maxABFIterations_ {DEFAULT_ITERATIONS}
 
 AngleBasedFlattening ()=default
 Default constructor.
 
 AngleBasedFlattening (const ITKMesh::Pointer &m)
 Construct and set the input mesh.
 
 ~AngleBasedFlattening () override=default
 
template<typename... Args>
static auto New (Args... args) -> Pointer
 

Additional Inherited Members

- Protected Member Functions inherited from volcart::texturing::FlatteningAlgorithm
 FlatteningAlgorithm ()=default
 
 FlatteningAlgorithm (const ITKMesh::Pointer &m)
 
- Protected Attributes inherited from volcart::texturing::FlatteningAlgorithm
ITKMesh::Pointer mesh_
 
ITKMesh::Pointer output_
 

Detailed Description

Parameterize a mesh using ABF++.

Optionally uses ABF++ to calculate optimal interior angles, then flattens the mesh using either AngleBasedLSCM (default) or HierarchicalLSCM.

Implementation provided by the OpenABF library.

Definition at line 27 of file AngleBasedFlattening.hpp.

Member Typedef Documentation

◆ Pointer

Pointer

Definition at line 37 of file AngleBasedFlattening.hpp.

Member Enumeration Documentation

◆ Solver

Solver implementation

Definition at line 31 of file AngleBasedFlattening.hpp.

Constructor & Destructor Documentation

◆ ~AngleBasedFlattening()

volcart::texturing::AngleBasedFlattening::~AngleBasedFlattening ( )
overridedefault

Default destructor

Member Function Documentation

◆ abfMaxIterations()

auto volcart::texturing::AngleBasedFlattening::abfMaxIterations ( ) const -> std::size_t

The max number of ABF minimization iterations.

◆ compute()

auto volcart::texturing::AngleBasedFlattening::compute ( ) -> ITKMesh::Pointer
overridevirtual

Compute the parameterization.

Implements volcart::texturing::FlatteningAlgorithm.

◆ New()

template<typename... Args>
static auto volcart::texturing::AngleBasedFlattening::New ( Args...  args) -> Pointer
inlinestatic

Make a new shared instance

Definition at line 48 of file AngleBasedFlattening.hpp.

◆ setSolver()

void volcart::texturing::AngleBasedFlattening::setSolver ( Solver  solver)

The numerical solver method.

Note
When compiled with OpenMP support, certain Eigen solvers (e.g. ConjugateGradient) are multithreaded. The number of threads used is controlled globally through the OpenMP and/or Eigen interfaces. See Eigen and multi-threading for more information.

◆ setUseABF()

void volcart::texturing::AngleBasedFlattening::setUseABF ( bool  a)

Whether to perform Angle-based flattening computation.

If false, the mesh is flattened using only the LSCM algorithm (standard or hierarchical, depending on useHLSCM()).

◆ setUseHLSCM()

void volcart::texturing::AngleBasedFlattening::setUseHLSCM ( bool  h)

Whether to use HierarchicalLSCM for parameterization.

When true, uses HierarchicalLSCM with ConjugateGradient for the LSCM step. The solver() setting is ignored for this path. When false (default), uses AngleBasedLSCM with the configured solver().

◆ solver()

auto volcart::texturing::AngleBasedFlattening::solver ( ) const -> Solver

The numerical solver method.

Note
When compiled with OpenMP support, certain Eigen solvers (e.g. ConjugateGradient) are multithreaded. The number of threads used is controlled globally through the OpenMP and/or Eigen interfaces. See Eigen and multi-threading for more information.

Member Data Documentation

◆ DEFAULT_ITERATIONS

constexpr std::size_t volcart::texturing::AngleBasedFlattening::DEFAULT_ITERATIONS {10}
staticconstexpr

Default maximum number of ABF iterations

Definition at line 34 of file AngleBasedFlattening.hpp.

◆ maxABFIterations_

std::size_t volcart::texturing::AngleBasedFlattening::maxABFIterations_ {DEFAULT_ITERATIONS}
private

Maximum number of ABF minimization iterations

Definition at line 122 of file AngleBasedFlattening.hpp.

◆ solver_

Solver volcart::texturing::AngleBasedFlattening::solver_ {Solver::SparseLU}
private

Solver method (only used when useHLSCM_ is false)

Definition at line 120 of file AngleBasedFlattening.hpp.

◆ useABF_

bool volcart::texturing::AngleBasedFlattening::useABF_ {true}
private

Whether to use ABF minimization

Definition at line 116 of file AngleBasedFlattening.hpp.

◆ useHLSCM_

bool volcart::texturing::AngleBasedFlattening::useHLSCM_ {false}
private

Whether to use HierarchicalLSCM instead of AngleBasedLSCM

Definition at line 118 of file AngleBasedFlattening.hpp.


The documentation for this class was generated from the following file: