MEPP2 Project
|
Classes | |
class | Batch_collapser |
Batch_collapser: Takes an halfedge graph and collapses its edges. A Batch_collapser object can simplify as many times a mesh as possible. No need to create an object for each batch. Input: Original mesh. Output: a simplified mesh. More... | |
class | Batch_decompressor |
Batch_decompressor: Given a draco buffer, will decompress a non-textured (or not) mesh. More... | |
class | Binary_batch_decoder |
class | Binary_batch_encoder |
Encode binary data with draco. Also contains static methods to generate csv files. More... | |
class | Butterfly |
class | Coarse_mesh_decoder |
class | Collapse_info |
Class used to store information on a single edge collapse operation. More... | |
class | Compare_weights2 |
struct | CopyGraphParameters |
struct | CopyGraphParameters< FEVV::CGALPointSet, FEVV::CGALPointSet > |
Specialization of CopyGraphParameters for copy from CGAL Point Set to CGAL Point Set. More... | |
struct | CopyGraphParameters< FEVV::CGALPointSet, PointCloudT > |
Specialization of CopyGraphParameters for CGAL Point Set copy from. More... | |
struct | CopyGraphParameters< FEVV::PCLPointCloud, FEVV::PCLPointCloud > |
Specialization of CopyGraphParameters for copy from PCL Point Cloud to PCL Point Cloud. More... | |
struct | CopyGraphParameters< FEVV::PCLPointCloud, PointCloudT > |
Specialization of CopyGraphParameters for PCL Point Cloud copy from. More... | |
struct | CopyGraphParameters< PointCloudT, FEVV::CGALPointSet > |
Specialization of CopyGraphParameters for CGAL Point Set copy to. More... | |
struct | CopyGraphParameters< PointCloudT, FEVV::PCLPointCloud > |
Specialization of CopyGraphParameters for PCL Point Cloud copy to. More... | |
struct | CopyPCParameters |
class | Delta_predictor |
class | Edge_length_metric |
Concrete class to compute the collapse cost of each edge in a mesh as the edge length (L2). More... | |
class | Error_metric |
Abstract class to compute the collapse cost of each edge in a mesh. It also manages a priority queue of (edge, cost, collapse position). More... | |
class | Geometric_metrics |
Geometric_metrics is a class dedicated to the geometric distance computation between an original full resolution mesh and a simplified version (a LoD). Two distortions are currently available, the maximum error (Hausdorff distance) and an approximation of the RMSE distance. Note: this code only works with CGAL mesh data structures for the time being. More... | |
class | Halfedge |
Concrete class to represent the target position type of the resulting vertex of an edge collapse. More... | |
class | Kept_position |
Abstract class to represent the position type of the resulting vertex of an edge collapse. More... | |
class | Memory_comparator |
Functor object to sort sequential container of Collapse_info objects. It is based on the Spanning_tree_vertex_edge_comparator functor. More... | |
struct | MeshFromVectorReprParameters |
class | Midpoint |
Concrete class to represent the midpoint position type of the resulting vertex of an edge collapse. More... | |
class | Parameters |
Parameters contains the compression parameters except the stopping criteria. More... | |
class | Predictor |
Abstract class used to predict position. More... | |
class | Preprocessing |
Preprocessing class is dedicated to provide a list of preprocessings that are needed to guarantee that the following progressive compression will work properly with a "decompressible" binary file. More... | |
class | QEM_3D |
Concrete class to compute the collapse cost of each edge in a mesh as the memoryless variant of QEM error (Quadric Error Metric). More... | |
class | Raw_positions |
class | Refinement_info |
class | Uniform_dequantization |
Uniform_dequantization is a class dedicated to the XYZ uniform dequantization of vertex coordinates stored in the mesh point map. More... | |
class | Uniform_quantization |
Uniform_quantization is a class dedicated to the XYZ uniform quantization of vertex coordinates stored in the mesh point map. More... | |
struct | v_Curv |
struct | v_Curv_cmdm |
class | Vertex_span_comparator |
Functor object to sort sequential container of vertex_descriptor objects. It is based on the Spanning_tree_vertex_edge_comparator functor. More... | |
class | Volume_preserving |
Concrete class to compute the collapse cost of each edge in a mesh as the local absolute volume error. More... | |
Typedefs | |
typedef std::vector< float > | ColorMeshLUT |
template<typename BoostGraphS , typename BoostGraphT > | |
using | VertexToVertexMap = std::map< typename boost::graph_traits< BoostGraphS >::vertex_descriptor, typename boost::graph_traits< BoostGraphT >::vertex_descriptor > |
template<typename FaceGraphS , typename FaceGraphT > | |
using | FaceToFaceMap = std::map< typename boost::graph_traits< FaceGraphS >::face_descriptor, typename boost::graph_traits< FaceGraphT >::face_descriptor > |
template<typename BoostGraph > | |
using | VertDescVect = std::vector< typename boost::graph_traits< BoostGraph >::vertex_descriptor > |
template<typename FaceGraph > | |
using | FaceDescVect = std::vector< typename boost::graph_traits< FaceGraph >::face_descriptor > |
template<typename PointCloudS , typename PointCloudT > | |
using | PCVertexToVertexMap = std::map< typename boost::graph_traits< PointCloudS >::vertex_descriptor, typename boost::graph_traits< PointCloudT >::vertex_descriptor > |
Functions | |
template<typename FaceGraph > | |
bool | clean_topology (FaceGraph &g, bool remove_isolated_vertices=true, bool remove_isolated_edges=true, bool remove_isolated_faces=false, bool remove_similar_edges=true, bool remove_similar_faces=true) |
Function use for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms. More... | |
template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
std::vector< typename boost::graph_traits< FaceGraph >::edge_descriptor > | edge_selector_for_collapse (const FaceGraph &g, bool is_g_2_manifold, bool forbid_non_satisfying_link_condition, bool forbid_non_manifold_edge, bool forbid_edge_collapse_creating_non_manifold_split, bool forbid_border_edge, bool forbid_inner_edge, bool forbid_non_triangular_incident_face_to_edge, bool forbid_edges_that_are_adjacent_to_collapsed_edges, bool forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices, bool forbid_edges_that_are_incident_to_opposite_vertices_of_collapsed_edge_vertices, bool forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices, const std::set< typename boost::graph_traits< FaceGraph >::edge_descriptor > &external_forbidden_edges_to_collapse, const GeometryTraits >) |
Function used for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms. More... | |
template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
std::vector< typename boost::graph_traits< FaceGraph >::edge_descriptor > | edge_selector_for_collapse (const FaceGraph &g, bool is_g_2_manifold, bool forbid_non_satisfying_link_condition, bool forbid_non_manifold_edge, bool forbid_edge_collapse_creating_non_manifold_split, bool forbid_border_edge, bool forbid_inner_edge, bool forbid_non_triangular_incident_face_to_edge, bool forbid_edges_that_are_adjacent_to_collapsed_edges, bool forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices, bool forbid_edges_that_are_incident_to_opposite_vertices_of_collapsed_edge_vertices, bool forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices, const GeometryTraits >) |
Function used for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms. More... | |
template<typename FaceGraph > | |
bool | is_triangle_mesh (const FaceGraph &g) |
Function determining if mesh g is a pure triangular mesh. More... | |
template<typename MutableFaceIncidentGraph > | |
static void | resolve_similar_edges (MutableFaceIncidentGraph &g) |
Remove/resolve similar edges for the given mesh g. More... | |
template<typename MutableFaceIncidentGraph > | |
static void | resolve_similar_faces (MutableFaceIncidentGraph &g, bool take_into_account_face_rientation=false) |
Remove/resolve similar faces for the given mesh g. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_union (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out, const GeometryTraits &) |
Computes the union of two polyhedra. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_union (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out) |
Computes the union of two polyhedra. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_inter (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out, const GeometryTraits &) |
Computes the intersection of two polyhedra. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_inter (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out) |
Computes the intersection of two polyhedra. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_minus (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out, const GeometryTraits &) |
Computes the subtraction of two polyhedra. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | boolean_minus (HalfedgeGraph &gA, HalfedgeGraph &gB, HalfedgeGraph &g_out) |
Computes the subtraction of two polyhedra. More... | |
void | read_mesh (const std::string &filename, FEVV::CGALPointSet &g, PMapsContainer &pmaps, bool=false) |
Load mesh from file. More... | |
void | write_mesh (const std::string &filename, FEVV::CGALPointSet &g, PMapsContainer &pmaps) |
Write mesh to file. More... | |
template<typename PointCloudT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FEVV::CGALPointSet &pc_s, const FEVV::PMapsContainer &pmaps_s, PointCloudT &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for CGAL Point Set copy from. More... | |
template<typename PointCloudT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const PointCloudT &pc_s, const FEVV::PMapsContainer &pmaps_s, FEVV::CGALPointSet &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for CGAL Point Set copy to. More... | |
template<typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FEVV::CGALPointSet &pc_s, const FEVV::PMapsContainer &pmaps_s, FEVV::CGALPointSet &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for copy from CGAL Point Set to CGAL Point Set. More... | |
template<typename HalfedgeGraph , typename PointMap , typename EdgeColorMap , typename edge_descriptor = typename boost::graph_traits< HalfedgeGraph >::edge_descriptor> | |
void | color_edge (HalfedgeGraph &, PointMap &, EdgeColorMap &e_cm, edge_descriptor edge_to_color, typename boost::property_traits< EdgeColorMap >::value_type color) |
Colors an edge by putting the specified color into the edge color map at the "edge" position. Used for debug purpose. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename vertex_descriptor = typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor> | |
void | color_vertex (HalfedgeGraph &, PointMap &, VertexColorMap &v_cm, vertex_descriptor vertex_to_color, typename boost::property_traits< VertexColorMap >::value_type color) |
Colors a vertex by putting the specified color into the vertex color map at the "vertex" position. Used for debug purpose. More... | |
template<typename HalfedgeGraph , typename PointMap , typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor, typename edge_descriptor = typename boost::graph_traits< HalfedgeGraph >::edge_descriptor, typename Geometry = typename FEVV::Geometry_traits< HalfedgeGraph >> | |
void | connectivity_encoding (const HalfedgeGraph &g, const PointMap &, Collapse_info< HalfedgeGraph, PointMap > &mem, edge_descriptor starting_edge, std::list< bool > &edge_bitmask) |
Encode vertex to split' one-ring edges to expand. For a vertex to split (represented by a Collapse_info object), will encode the edges to expand in a binary stream, 1 being an edge that should be expanded and 0 being an edge that should not. Takes as arguments a graph g, a pointmap, a Collapse_info object (again, representing a vertex and many necessary refinement info), the first edge to process (see the encode_connectivity_bitmask function), and the edge/connectivity bitmask (which will receive the connectivity bitstream). More... | |
template<typename HalfedgeGraph , typename PointMap , typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor, typename edge_descriptor = typename boost::graph_traits< HalfedgeGraph >::edge_descriptor, typename Geometry = typename FEVV::Geometry_traits< HalfedgeGraph >> | |
void | encode_connectivity_bitmask (const HalfedgeGraph &g, const PointMap &pm, std::list< Collapse_info< HalfedgeGraph, PointMap > > &list_memory, std::list< bool > &edge_bitmask, const FEVV::Comparator::Spanning_tree_vertex_edge_comparator< HalfedgeGraph, PointMap, Geometry > &spanningtree) |
Encode vertex to split' one-ring edges to expand, for all collapsed edges in the order of the sorted list list_memory. More... | |
template<typename HalfedgeGraph , typename vertex_descriptor = typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor, typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor> | |
void | forbid_vertex (HalfedgeGraph &g, vertex_descriptor v, std::set< halfedge_descriptor > &forbidden_edges) |
template<typename HalfedgeGraph , typename vertex_descriptor = typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor, typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor> | |
void | find_vertices_to_forbid (HalfedgeGraph &g, vertex_descriptor v, std::set< vertex_descriptor > &forbidden_vertices) |
template<typename HalfedgeGraph , typename vertex_descriptor = typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor, typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor> | |
void | forbid_edges (HalfedgeGraph &g, vertex_descriptor v, std::set< halfedge_descriptor > &forbidden_edges) |
template<typename HalfedgeGraph , typename vertex_descriptor = typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor, typename halfedge_descriptor = typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor> | |
void | compute_simple_stencil (HalfedgeGraph &g, vertex_descriptor v, std::set< halfedge_descriptor > &forbidden_edges, std::vector< halfedge_descriptor > &edges_to_color) |
template<typename HalfedgeGraph , typename PointMap > | |
void | preprocess_mesh (HalfedgeGraph &g, PointMap &pm, FEVV::Filters::Uniform_quantization< HalfedgeGraph, PointMap > &pq, bool allow_duplicates=false) |
Isolated vertices and isolated edges are removed, then vertex positions are quantized, and eventually, vertex duplicates are moved until there is no more vertex position duplicate. This function implements line 1 of Algorithm 1. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename EdgeColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | progressive_compression_filter (HalfedgeGraph &g, PointMap &pm, FEVV::Filters::Uniform_quantization< HalfedgeGraph, PointMap > &pq, VertexColorMap &v_cm, EdgeColorMap &e_cm, const GeometryTraits >, FEVV::Filters::Error_metric< HalfedgeGraph, PointMap > *EM, const FEVV::Filters::Kept_position< HalfedgeGraph, PointMap > *KP, FEVV::Filters::Predictor< HalfedgeGraph, PointMap > *predict, int nb_q_bits, int nb_max_batches, int nb_min_vertices, FEVV::Filters::BATCH_CONDITION batch_condition, draco::EncoderBuffer &buffer, const std::string &measure_path, bool preprocess=true, bool dequantiz=false, bool save_preprocess=false, const std::string &output_file_path_save_preprocess="", bool allow_duplicates=false) |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data into a buffer. This function implements Algorithm 1 (Progressive encoder). More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename EdgeColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | progressive_compression_filter (HalfedgeGraph &g, PointMap &pm, VertexColorMap &v_cm, EdgeColorMap &e_cm, const GeometryTraits >, const FEVV::Filters::Parameters ¶ms, int nb_max_batches, int nb_min_vertices, FEVV::Filters::BATCH_CONDITION batch_condition, const std::string &output_path, std::string &binary_path, bool preprocess=true, bool dequantiz=false, bool save_preprocess=false, const std::string &output_file_path_save_preprocess="") |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data to a binary file. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename EdgeColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | progressive_compression_filter (HalfedgeGraph &g, PointMap &pm, VertexColorMap &v_cm, EdgeColorMap &e_cm, const FEVV::Filters::Parameters ¶ms, const std::string &output_path, std::string &binary_path, int nb_max_batches, int nb_min_vertices, FEVV::Filters::BATCH_CONDITION batch_condition, bool preprocess=true, bool dequantiz=false, bool save_preprocess=false, const std::string &output_file_path_save_preprocess="") |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data to a binary file. The geometry trait object is set automatically (syntactic sugar). More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits > | |
void | progressive_decompression_filter (HalfedgeGraph &g, PointMap &pm, VertexColorMap &v_cm, const GeometryTraits &, draco::DecoderBuffer &buffer, bool dequantize=true, unsigned int nb_max_batches=10000) |
Takes a buffer as an input, will decode the compression settings, the coarse mesh and refine the mesh until the end of buffer is reached. This function implements the Algorithm 2 (Progressive decoder). More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits > | |
void | progressive_decompression_filter (HalfedgeGraph &g, PointMap &pm, VertexColorMap &v_cm, const GeometryTraits >, const std::string &input_file_path, bool dequantize=true, unsigned int nb_max_batches=10000) |
Takes a binary file as an input, will decode the compression settings, the coarse mesh and refine the mesh until the end of file is reached. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | progressive_decompression_filter (HalfedgeGraph &g, PointMap &pm, VertexColorMap &v_cm, const std::string &input_file_path, bool dequantize=true, unsigned int nb_max_batches=10000) |
Takes a binary file as an input, will decode the compression settings, the coarse mesh and refine the mesh until the end of file is reached. The geometry trait object is set automatically (syntactic sugar). More... | |
template<typename Point3d , typename Vector > | |
bool | sphere_clip_vector_cmdm (Point3d &o, double r, const Point3d &p, Vector &v) |
template<typename VertexIterator , typename HalfedgeGraph , typename PointMap , typename CMDMNearestMap > | |
void | compute_geometry_statistics (const HalfedgeGraph &, const PointMap &pm_degr, const CMDMNearestMap &nearest_pmap, const VertexIterator p_vertex, std::vector< double > &tab_distance1, std::vector< double > &tab_distance2, std::vector< CGALPoint > &tab_point1, std::vector< CGALPoint > &tab_point2, double *tab_f1, double *tab_f2, double *tab_f3, double radius) |
Calculates the local geometry-based features per vertex. More... | |
template<typename VertexIterator , typename HalfedgeGraph , typename PointMap , typename CMDMNearestMap > | |
void | compute_color_statistics (const HalfedgeGraph &, const PointMap &pm_degr, const CMDMNearestMap &nearest_pmap, const VertexIterator p_vertex, std::vector< std::array< double, 3 > > &tab_color1, std::vector< std::array< double, 3 > > &tab_color2, std::vector< CGALPoint > &tab_point1, std::vector< CGALPoint > &tab_point2, double *tab_f4, double *tab_f5, double *tab_f6, double *tab_f7, double *tab_f8, double radius) |
Calculates the local color-based features per vertex. More... | |
template<typename HalfedgeGraph , typename VertexColorMap = typename FEVV:: PMap_traits< FEVV::vertex_color_t, MeshSurface >::pmap_type> | |
VertexColorMap | Get_VertexColorMap (const HalfedgeGraph &m_poly, FEVV::PMapsContainer &pmaps, std::vector< double > &init_grid_L, std::vector< double > &grid_L, std::vector< std::vector< std::pair< double, double > > > &init_grid_AB) |
Retrieve the color (RGB values) of each vertex of the mesh and transform it into the working color space LAB2000HL. More... | |
template<typename CMDMMap , typename HalfedgeGraph , typename CMDMNearestMap , typename TagMap , typename PointMap , typename FaceIterator = typename boost::graph_traits< HalfedgeGraph >::face_iterator> | |
void | matching_multires_init_cmdm (const HalfedgeGraph &m_poly_degrad, CMDMMap &cmdm_degrad, CMDMNearestMap &cmdmm_degrad, TagMap &tag_map, const PointMap &pm_degrad, const HalfedgeGraph &m_poly_original, CGAL::SM_Face_index *tab_matched_facet) |
Initialize the matching process. More... | |
template<typename PointMap , typename HalfedgeGraph , typename FaceNormalMap , typename VertexCMDMMap > | |
double | process_CMDM_multires (const HalfedgeGraph &m_poly_degrad, const PointMap &pm_degrad, const FaceNormalMap &fnm_degrad, FEVV::PMapsContainer &pmaps_degrad, const HalfedgeGraph &m_poly_original, const PointMap &pm_original, const FaceNormalMap &fnm_original, FEVV::PMapsContainer &pmaps_original, const int nb_level, VertexCMDMMap &cmdm_pmap, const double maxdim, double &CMDM_value) |
template<typename HalfedgeGraph , typename CurvatureVertexMap , typename CMDMCurvatureMatchMap , typename VertexColorMap > | |
void | matching_multires_update (const HalfedgeGraph &m_poly_degrad, const HalfedgeGraph &m_poly_orig, CGALPoint *tab_pm_orig, CGALPoint *tab_cmdmm_degrad, const CurvatureVertexMap curv_orig, const VertexColorMap vcm_orig, CMDMCurvatureMatchMap curvmatch_pmap, VertexColorMap colmatch_pmap, CGAL::SM_Face_index *tab_matched_facet) |
Updates the matching process. More... | |
template<typename VertexIterator , typename HalfedgeGraph , typename TagMap , typename CurvatureVertexMap , typename CMDMCurvatureMatchMap , typename VertexColorMap > | |
void | process_cmdm_per_vertex (const HalfedgeGraph &m_degr, CGALPoint *tab_pm_degr, const TagMap &tags_pmap, CGALPoint *tab_nearest_pmap, const CurvatureVertexMap &curv_pmap_degr, const VertexColorMap &col_pmap_degr, const CMDMCurvatureMatchMap &curvmatch_pmap, const VertexColorMap &colmatch_pmap, const VertexIterator &p_vertex, double radius, std::vector< CGALPoint > &tab_point1, std::vector< CGALPoint > &tab_point2, std::vector< double > &tab_distance1, std::vector< double > &tab_distance2, std::vector< std::array< double, 3 > > &tab_color1, std::vector< std::array< double, 3 > > &tab_color2) |
Computes the local neighborhoods. More... | |
template<typename HalfedgeGraph , typename CurvatureVertexMap > | |
void | kmax_kmean_cmdm (const HalfedgeGraph &mesh, CurvatureVertexMap &curv_vmap, const double coef) |
Computes the mean curvature field (kmin+kmax)/2 and normalize it according to the size of the model. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename PointMap , typename FaceNormalMap , typename VertexCMDMMap > | |
double | process_CMDM_multires (const HalfedgeGraph &m_poly_degrad, const PointMap &pm_degrad, const FaceNormalMap &fnm_degrad, FEVV::PMapsContainer &pmaps_degrad, const HalfedgeGraph &m_poly_original, const PointMap &pm_original, const FaceNormalMap &fnm_original, FEVV::PMapsContainer &pmaps_original, const int nb_level, VertexCMDMMap &cmdm_pmap, double &CMDM_value) |
Computes the multiscale CMDM metric. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | fabs_cmdm (const v_Curv_cmdm< HalfedgeGraph > &input) |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | triangle_area_cmdm (const HalfedgeGraph &g, const PointMap &pm, typename boost::graph_traits< HalfedgeGraph >::face_descriptor fd, const GeometryTraits >) |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename GraphTraits = boost::graph_traits< HalfedgeGraph >, typename VertexDescriptor = typename GraphTraits::vertex_descriptor> | |
void | principal_curvature_per_vert_cmdm (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &f_nm, VertexDescriptor vd, double pp_matrix_sum[3][3], const GeometryTraits >) |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename GraphTraits = boost::graph_traits< HalfedgeGraph >, typename VertexDescriptor = typename GraphTraits::vertex_descriptor> | |
void | geodes_principal_curvature_per_vert_cmdm (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &f_nm, VertexDescriptor vd, double pp_matrix_sum[3][3], double radius, const GeometryTraits >) |
template<typename HalfedgeGraph , typename VertexCurvatureMap , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_curvature_cmdm (const HalfedgeGraph &g, VertexCurvatureMap &v_cm, const PointMap &pm, const FaceNormalMap &f_nm, bool is_geod, double radius, double &min_nrm_min_curvature, double &max_nrm_min_curvature, double &min_nrm_max_curvature, double &max_nrm_max_curvature, const GeometryTraits >) |
Calculate the curvature for a mesh. More... | |
template<typename HalfedgeGraph , typename VertexCurvatureMap , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_curvature_cmdm (const HalfedgeGraph &g, VertexCurvatureMap &v_cm, const PointMap &pm, const FaceNormalMap &f_nm, bool is_geod, double radius, double &min_nrm_min_curvature, double &max_nrm_min_curvature, double &min_nrm_max_curvature, double &max_nrm_max_curvature) |
Calculate the curvature for a mesh. More... | |
template<typename Point3d , typename Vector > | |
bool | sphere_clip_vector_msdm2 (Point3d &o, double r, const Point3d &p, Vector &v) |
template<typename VertexIterator , typename HalfedgeGraph , typename PointMap , typename MSDM2NearestMap , typename MSDM2Map > | |
void | compute_statistics (const HalfedgeGraph &, const PointMap &pm_degr, const MSDM2NearestMap &nearest_pmap, MSDM2Map &msdm2_map, const VertexIterator p_vertex, double param, std::vector< double > &tab_distance1, std::vector< double > &tab_distance2, std::vector< CGALPoint > &tab_point1, std::vector< CGALPoint > &tab_point2, double radius, double) |
Calculates the local curvature statistics per vertex. More... | |
template<typename MSDM2Map , typename HalfedgeGraph , typename MSDM2NearestMap , typename PointMap , typename TagMap , typename FaceIterator = typename boost::graph_traits< HalfedgeGraph >::face_iterator> | |
void | matching_multires_init (const HalfedgeGraph &m_poly_degrad, MSDM2Map &msdm2m_degrad, MSDM2NearestMap &msdm2nm_degrad, TagMap &tag_map, const PointMap &pm_degrad, const HalfedgeGraph &m_poly_original, CGAL::SM_Face_index *tab_matched_facet) |
Initialize the matching process. More... | |
template<typename PointMap , typename HalfedgeGraph , typename FaceNormalMap , typename VertexMSDM2Map , typename GeometryTraits > | |
double | process_msdm2_multires (const HalfedgeGraph &m_poly_degrad, const PointMap &pm_degrad, const FaceNormalMap &fnm_degrad, FEVV::PMapsContainer &pmaps_degrad, const GeometryTraits >_degrad, const HalfedgeGraph &m_poly_original, const PointMap &pm_original, const FaceNormalMap &fnm_original, FEVV::PMapsContainer &, const GeometryTraits &, const int nb_level, VertexMSDM2Map &msdm2_pmap, const double maxdim, double &msdm2_value) |
template<typename PointMap , typename HalfedgeGraph , typename CurvatureVertexMap , typename MSMD2CurvatureMatchMap > | |
void | matching_multires_update (const HalfedgeGraph &m_poly_degrad, const PointMap &pm_degr, const HalfedgeGraph &m_poly_orig, const PointMap &pm_orig, const CurvatureVertexMap curv_orig, MSMD2CurvatureMatchMap curvmatch_pmap, CGAL::SM_Face_index *tab_matched_facet) |
Updates the matching process. More... | |
template<typename VertexIterator , typename HalfedgeGraph , typename PointMap , typename TagMap , typename CurvatureVertexMap , typename MSDM2NearestMap , typename MSMD2CurvatureMatchMap , typename GeometryTraits > | |
void | process_msdm2_per_vertex (const HalfedgeGraph &m_degr, const PointMap &pm_degr, const TagMap &tags_pmap, const CurvatureVertexMap &curv_pmap, const MSDM2NearestMap &nearest_pmap, const MSMD2CurvatureMatchMap &curvmatch_pmap, const GeometryTraits &, const HalfedgeGraph &, const PointMap &, const VertexIterator &p_vertex, double radius, std::vector< double > &tab_distance1, std::vector< double > &tab_distance2, std::vector< CGALPoint > &tab_point1, std::vector< CGALPoint > &tab_point2) |
Computes the local neighborhoods. More... | |
template<typename HalfedgeGraph , typename CurvatureVertexMap > | |
void | kmax_kmean (const HalfedgeGraph &mesh, CurvatureVertexMap &curv_vmap, const double coef) |
Computes the mean curvature field (kmin+kmax)/2 and normalize it according to the size of the model. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename PointMap , typename FaceNormalMap , typename VertexMSDM2Map > | |
double | process_msdm2_multires (const HalfedgeGraph &m_poly_degrad, const PointMap &pm_degrad, const FaceNormalMap &fnm_degrad, FEVV::PMapsContainer &pmaps_degrad, const HalfedgeGraph &m_poly_original, const PointMap &pm_original, const FaceNormalMap &fnm_original, FEVV::PMapsContainer &pmaps_original, const int nb_level, VertexMSDM2Map &msdm2_pmap, double &msdm2_value) |
Computes the multiscale MSDM2 metric. More... | |
template<typename PropertyGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< PropertyGraph >> | |
void | compute_mesh_bounding_box (const PropertyGraph &g, const PointMap &pm, typename boost::property_traits< PointMap >::value_type &min_aabb, typename boost::property_traits< PointMap >::value_type &max_aabb, const GeometryTraits >) |
Compute the mesh Axis-Aligned Bounding-Box (AABB). More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | get_max_bb_size (const HalfedgeGraph &g, PointMap &pm, GeometryTraits >) |
Gets the maximum size of the object bounding box. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | get_max_bb_size (const HalfedgeGraph &g, PointMap &pm) |
Gets the maximum size of the object bounding box. Use the default geometry traits of the mesh. More... | |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits > | |
void | calculate_face_normals (const HalfedgeGraph &g, const PointMap &pm, FaceNormalMap fnm, const GeometryTraits >) |
Calculate "some" normal of all the faces of the considered mesh and populate the argument provided Face Normal Map with the resulting normals. More... | |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_face_normals (const HalfedgeGraph &g, const PointMap &pm, FaceNormalMap fnm) |
Compute all faces normals. More... | |
ColorMeshLUT | make_LUT (bool color_in_0_255=true, unsigned int colors_nbr=256, float h1=240, float h2=0) |
Create a RGB LUT based on an HSV range. Default range creates a blue-cyan-green-yellow-red gradient. More... | |
template<typename Descriptor , typename PropertyMap , typename ColorMap , typename MapType = typename PropertyMap::value_type> | |
void | color_descriptor_from_map (const Descriptor &d, const PropertyMap &prop_map, ColorMap &color_pmap, const MapType min_metric, const MapType max_metric, const ColorMeshLUT &colors) |
Set the color for the descriptor using a numerical property map and the color array given. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename ColorMap , typename MapType = typename PropertyMap::value_type> | |
void | color_faces_from_map (const HalfedgeGraph &g, const PropertyMap &prop_map, ColorMap &color_pmap, const MapType min_metric, const MapType max_metric, const ColorMeshLUT &colors=make_LUT()) |
Fill the color map for the faces of a mesh using a numerical property map. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename ColorMap , typename MapType = typename PropertyMap::value_type> | |
void | color_vertices_from_map (const HalfedgeGraph &g, const PropertyMap &prop_map, ColorMap &color_pmap, const MapType min_metric, const MapType max_metric, const ColorMeshLUT &colors=make_LUT()) |
Fill the color map for the vertices of a mesh using a numerical property map. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename ColorMap , typename MapType = typename PropertyMap::value_type> | |
void | color_halfedges_from_map (const HalfedgeGraph &g, const PropertyMap &prop_map, ColorMap &color_pmap, const MapType min_metric, const MapType max_metric, const ColorMeshLUT &colors=make_LUT()) |
Fill the color map for the halfedges of a mesh using a numerical property map. More... | |
template<typename Descriptor , typename BooleanMap , typename ColorMap , typename Color = typename boost::property_traits< ColorMap >::value_type> | |
void | color_descriptor_from_bool (const Descriptor &d, const BooleanMap &prop_map, ColorMap &color_pmap, const Color &color1, const Color &color2) |
Set the color for the descriptor using a boolean property map and the colors given. More... | |
template<typename HalfedgeGraph , typename BooleanMap , typename ColorMap , typename Color = typename boost::property_traits< ColorMap >::value_type> | |
void | color_faces_from_bool_map (const HalfedgeGraph &g, const BooleanMap &prop_map, ColorMap &color_pmap, const Color &color1, const Color &color2) |
Fill the color map for the faces of a mesh using a boolean property map. More... | |
template<typename HalfedgeGraph , typename BooleanMap , typename ColorMap , typename Color = typename boost::property_traits< ColorMap >::value_type> | |
void | color_vertices_from_bool_map (const HalfedgeGraph &g, const BooleanMap &prop_map, ColorMap &color_pmap, const Color &color1, const Color &color2) |
Fill the color map for the vertices of a mesh using a boolean property map. More... | |
template<typename HalfedgeGraph , typename BooleanMap , typename ColorMap , typename Color = typename boost::property_traits< ColorMap >::value_type> | |
void | color_halfedge_from_bool_map (const HalfedgeGraph &g, const BooleanMap &prop_map, ColorMap &color_pmap, const Color &color1, const Color &color2) |
Fill the color map for the halfedges of a mesh using a boolean property map. More... | |
template<typename FaceListGraphS , typename FaceListGraphT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FaceListGraphS &g_s, const PMapsContainer &pmaps_s, FaceListGraphT &g_t, PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Copy a source mesh into a target mesh. Copy standard properties too. More... | |
template<typename FaceListGraphS , typename FaceListGraphT , typename Parameters = CopyGraphParameters< FaceListGraphS, FaceListGraphT >, typename GeometryTraitsS = FEVV::Geometry_traits< FaceListGraphS >, typename GeometryTraitsT = FEVV::Geometry_traits< FaceListGraphT >> | |
void | copy_graph (const FaceListGraphS &g_s, const PMapsContainer &pmap_s, FaceListGraphT &g_t, PMapsContainer &pmap_t, const Parameters ¶ms=CopyGraphParameters< FaceListGraphS, FaceListGraphT >()) |
Copy a source mesh into a target mesh. Copy standard properties too. More... | |
template<typename FaceListGraphS , typename FaceListGraphT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FaceListGraphS &g_s, FaceListGraphT &g_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Copy a source mesh into a target mesh. Do NOT Copy properties. More... | |
template<typename FaceListGraphS , typename FaceListGraphT , typename Parameters = CopyGraphParameters< FaceListGraphS, FaceListGraphT >, typename GeometryTraitsS = FEVV::Geometry_traits< FaceListGraphS >, typename GeometryTraitsT = FEVV::Geometry_traits< FaceListGraphT >> | |
void | copy_graph (const FaceListGraphS &g_s, FaceListGraphT &g_t, const Parameters ¶ms=CopyGraphParameters< FaceListGraphS, FaceListGraphT >()) |
Copy a source mesh into a target mesh. Do NOT copy properties. More... | |
double | get_time_and_reset (std::chrono::time_point< std::chrono::steady_clock > &time_start) |
Measure time since starting time and reset starting time. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | read_mesh (const std::string &filename, HalfedgeGraph &g, PMapsContainer &pmaps, const GeometryTraits >, bool only_pts) |
Load mesh from file. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | read_mesh (const std::string &filename, HalfedgeGraph &g, PMapsContainer &pmaps, bool only_pts=false) |
Load mesh from file. More... | |
template<typename HalfedgeGraph , typename GeometryTraits > | |
void | write_mesh (const std::string &filename, HalfedgeGraph &g, PMapsContainer &pmaps, const GeometryTraits >) |
Write mesh to file. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | write_mesh (const std::string &filename, HalfedgeGraph &g, PMapsContainer &pmaps) |
Write mesh to file. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits > | |
void | homogeneous_transform (const HalfedgeGraph &g, PointMap &pm, const Eigen::Matrix4d &mat, const GeometryTraits >) |
Calculate the homogeneous transformation of the vertices coordinates using the provided 4x4 homogeneous transformation matrix. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | homogeneous_transform (const HalfedgeGraph &g, PointMap &pm, const Eigen::Matrix4d &mat) |
Calculate the homogeneous transformation of the vertices coordinates using the provided 4x4 homogeneous transformation matrix. More... | |
template<typename HalfedgeGraph , typename PointMap , typename HalfedgeUVMap , typename VertexTangentMap > | |
void | calculate_halfedges_tangent (const HalfedgeGraph &g, const PointMap &pm, const HalfedgeUVMap &hum, VertexTangentMap &vtm) |
Calculate the mesh's tangents from its halfedges. More... | |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename VertexNormalMap , typename GeometryTraits > | |
void | calculate_vertex_normals (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &fnm, VertexNormalMap vnm, const GeometryTraits >) |
Compute the respectice vertex normal for all the vertices of the considered mesh and populate the argument provided Face Normal Map with the resulting normals. More... | |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename VertexNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_vertex_normals (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &fnm, VertexNormalMap vnm) |
Compute the respectice vertex normal for all the vertices of the considered mesh and populate the argument provided Face Normal Map with the resulting normals. More... | |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_angles_based_centroid (const FaceGraph &g, const PointMap &pm, CentroidMap angles_based_centroids_pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits >) |
Compute angle-based centroids for all vertices and store them in bangles_based_centroids_pm. More... | |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_angles_based_centroid (const FaceGraph &g, const PointMap &pm, CentroidMap angles_based_centroids_pm, const typename GeometryTraits::Scalar smoothing_factor=0.1) |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_barycenter (const FaceGraph &g, const PointMap &pm, CentroidMap barycenters_pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits >) |
Compute barycenters for all vertices and store them in barycenters_pm. More... | |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_barycenter (const FaceGraph &g, const PointMap &pm, CentroidMap barycenters_pm, const typename GeometryTraits::Scalar smoothing_factor=0.1) |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_geometric_laplacian (const FaceGraph &g, const PointMap &pm, CentroidMap geom_laplacians_pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits >) |
Compute geometric laplacians for all vertices and store them in geom_laplacians_pm. More... | |
template<typename FaceGraph , typename PointMap , typename CentroidMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >> | |
void | calculate_vertices_one_ring_geometric_laplacian (const FaceGraph &g, const PointMap &pm, CentroidMap geom_laplacians_pm, const typename GeometryTraits::Scalar smoothing_factor=0.1) |
template<typename HalfedgeGraph , typename PointMap , typename VertexUVMap , typename VertexTangentMap > | |
void | calculate_vertices_tangent (const HalfedgeGraph &g, const PointMap &pm, const VertexUVMap &vum, VertexTangentMap &vtm) |
Calculate the mesh's tangents from its vertices. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
std::string | compression_valence (HalfedgeGraph &g, PointMap *pm, VertexColorMap *v_cm, const std::string &input_filename, const std::string &output_filename, bool with_compression, bool with_adaptative_quantization, int max_vertices, int quantiz_bits, const GeometryTraits &) |
Compress the input mesh using the Compression Valence algorithm. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
std::string | compression_valence (HalfedgeGraph &g, PointMap *pm, VertexColorMap *v_cm, const std::string &input_filename, const std::string &output_filename, bool with_compression=false, bool with_adaptative_quantization=false, int max_vertices=100, int quantiz_bits=10) |
Compress the input mesh using the Compression Valence algorithm. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
std::string | decompression_valence (HalfedgeGraph &g, PointMap *pm, VertexColorMap *v_cm, const std::string &input_filename, bool &has_color, bool do_write_info, std::vector< HalfedgeGraph * > *intermediate_meshes, std::vector< VertexColorMap * > *intermediate_vertex_color_maps, int stop_level, bool do_write_intermediate_meshes, const GeometryTraits &) |
Uncompress a mesh compressed with Compression Valence algorithm. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
std::string | decompression_valence (HalfedgeGraph &g, PointMap *pm, VertexColorMap *v_cm, const std::string &input_filename, bool &has_color, bool do_write_info=false, std::vector< HalfedgeGraph * > *intermediate_meshes=nullptr, std::vector< VertexColorMap * > *intermediate_vertex_color_maps=nullptr, int stop_level=-1, bool do_write_intermediate_meshes=false) |
Uncompress a mesh compressed with Compression Valence algorithm. More... | |
template<typename HalfedgeGraph , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | fabs (const v_Curv< HalfedgeGraph > &input) |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
double | triangle_area (const HalfedgeGraph &g, const PointMap &pm, typename boost::graph_traits< HalfedgeGraph >::face_descriptor fd, const GeometryTraits >) |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename GraphTraits = boost::graph_traits< HalfedgeGraph >, typename VertexDescriptor = typename GraphTraits::vertex_descriptor> | |
void | principal_curvature_per_vert (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &f_nm, VertexDescriptor vd, double pp_matrix_sum[3][3], const GeometryTraits >) |
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename GraphTraits = boost::graph_traits< HalfedgeGraph >, typename VertexDescriptor = typename GraphTraits::vertex_descriptor> | |
void | geodes_principal_curvature_per_vert (const HalfedgeGraph &g, const PointMap &pm, const FaceNormalMap &f_nm, VertexDescriptor vd, double pp_matrix_sum[3][3], double radius, const GeometryTraits >) |
template<typename HalfedgeGraph , typename VertexCurvatureMap , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_curvature (const HalfedgeGraph &g, VertexCurvatureMap &v_cm, const PointMap &pm, const FaceNormalMap &f_nm, bool is_geod, double radius, double &min_nrm_min_curvature, double &max_nrm_min_curvature, double &min_nrm_max_curvature, double &max_nrm_max_curvature, const GeometryTraits >) |
Calculate the curvature for a mesh. More... | |
template<typename HalfedgeGraph , typename VertexCurvatureMap , typename PointMap , typename FaceNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | calculate_curvature (const HalfedgeGraph &g, VertexCurvatureMap &v_cm, const PointMap &pm, const FaceNormalMap &f_nm, bool is_geod, double radius, double &min_nrm_min_curvature, double &max_nrm_min_curvature, double &min_nrm_max_curvature, double &max_nrm_max_curvature) |
Calculate the curvature for a mesh. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits , typename FaceNormalMap , typename HalfEdge , typename CamType , typename LightType , typename DirType > | |
double | compute_visibility (const GeometryTraits &geom, const PointMap &point_map, const HalfedgeGraph &mesh, const FaceNormalMap &f_nm, const HalfEdge &halfedge, const DirType &displacement, const LightType &light, const CamType &cam, const ScreenParam &screen, const UserParam &user, const SceneParam &scene, const NWHWD16_Threshold &threshold, bool both_faces_move=true) |
Compute the visibility of the movement of an halfedge, given a light source and the displacement. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits , typename FaceNormalMap , typename VertexType , typename CamType , typename LightType , typename DirType > | |
double | compute_threshold (const GeometryTraits &geom, const PointMap &point_map, const HalfedgeGraph &mesh, const FaceNormalMap &f_nm, const VertexType &vertex, const DirType &dir, const LightType &light, const CamType &cam, const ScreenParam &screen, const UserParam &user, const SceneParam &scene, const NWHWD16_Threshold &threshold, double max_displacement) |
Compute the JND value for a vertex, using a given light. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename FaceNormalMap , typename JNDMap > | |
void | just_noticeable_distortion_filter (const HalfedgeGraph &halfedge_graph, PointMap &point_map, const VertexNormalMap &vertex_normal_map, const GeometryTraits &geometry_traits, const FaceNormalMap &face_normal_map, JNDMap &jnd_map, const ScreenParam &screen, const UserParam &user, const SceneParam &scene, const int nb_light_sources, bool data_output=false, bool use_random=true) |
Computes the Just Noticeable Distortion metric. More... | |
template<typename HalfedgeGraph , typename PointMap , typename VertexNormalMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >, typename FaceNormalMap , typename JNDMap > | |
void | just_noticeable_distortion_filter (const HalfedgeGraph &g, PointMap &pm, const VertexNormalMap &v_nm, const FaceNormalMap &f_nm, JNDMap &jnd_m, const ScreenParam &screen, const UserParam &user, const SceneParam &scene, const int lights=128, bool data_output=false, bool use_random=true) |
Computes the Just Noticeable Distortion metric. More... | |
FEVV::Types::Image * | make_no_texture_image (void) |
template<typename HalfedgeGraph , typename coordP_type , typename coordN_type , typename coordT_type , typename coordC_type , typename index_type , typename GeometryTraits > | |
void | mesh_from_vector_representation (HalfedgeGraph &g, FEVV::PMapsContainer &pmaps, unsigned int &dup_v_nbr, FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > &mvr, MeshFromVectorReprParameters< HalfedgeGraph > const ¶ms, const GeometryTraits &) |
Build the mesh from the given vector representation. More... | |
template<typename HalfedgeGraph , typename coordP_type , typename coordN_type , typename coordT_type , typename coordC_type , typename index_type , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | mesh_from_vector_representation (const HalfedgeGraph &g, const FEVV::PMapsContainer &pmaps, unsigned int &dup_v_nbr, FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > &mvr, MeshFromVectorReprParameters< HalfedgeGraph > const ¶ms=MeshFromVectorReprParameters< HalfedgeGraph >()) |
Build the mesh from the given vector representation. More... | |
template<typename FaceListGraph , typename coordP_type , typename coordN_type , typename coordT_type , typename coordC_type , typename index_type , typename GeometryTraits > | |
void | mesh_to_vector_representation (const FaceListGraph &g, const FEVV::PMapsContainer &pmaps, FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > &mvr, const GeometryTraits &) |
Build the vector representation of the mesh. More... | |
template<typename FaceListGraph , typename coordP_type , typename coordN_type , typename coordT_type , typename coordC_type , typename index_type , typename GeometryTraits = FEVV::Geometry_traits< FaceListGraph >> | |
void | mesh_to_vector_representation (const FaceListGraph &g, const FEVV::PMapsContainer &pmaps, FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > &mvr) |
Build the vector representation of the mesh. More... | |
template<typename Descriptor , typename PropertyMap , typename MapType = typename PropertyMap::value_type> | |
void | compute_min_max_descriptor (const Descriptor &d, const PropertyMap &prop_map, MapType &min_metric, MapType &max_metric) |
Generic call to compute min max from a Descriptor Get the value of the property map for the given descriptor and update minMetric and maxMetric accordingly. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename MapType = typename PropertyMap::value_type> | |
void | compute_min_max_faces (const HalfedgeGraph &g, const PropertyMap &prop_map, MapType &min_metric, MapType &max_metric) |
Compute min and max value of a numerical property map for the faces of a mesh. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename MapType = typename PropertyMap::value_type> | |
void | compute_min_max_vertices (const HalfedgeGraph &g, const PropertyMap &prop_map, MapType &min_metric, MapType &max_metric) |
Compute min and max value of a numerical property map for the vertices of a mesh. More... | |
template<typename HalfedgeGraph , typename PropertyMap , typename MapType = typename PropertyMap::value_type> | |
void | compute_min_max_halfedges (const HalfedgeGraph &g, const PropertyMap &prop_map, MapType &min_metric, MapType &max_metric) |
Compute min and max value of a numerical property map for the halfedges of a mesh. More... | |
template<typename Iterator , typename PropertyMap , typename GeometryTraits > | |
void | normalize_vector_map (const Iterator &begin, const Iterator &end, PropertyMap &prop_map, const GeometryTraits >) |
Normalize each vector of a property map, one by one. Generic implementation. More... | |
template<typename HalfedgeGraph , typename PropertyMap > | |
void | normalize_vector_map_vertices (const HalfedgeGraph &g, PropertyMap &prop_map) |
Normalize each vector of the vertex property map. More... | |
template<typename HalfedgeGraph , typename PropertyMap > | |
void | normalize_vector_map_faces (const HalfedgeGraph &g, PropertyMap &prop_map) |
Normalize each vector of the face property map. More... | |
template<typename HalfedgeGraph , typename PropertyMap > | |
void | normalize_vector_map_edges (const HalfedgeGraph &g, PropertyMap &prop_map) |
Normalize each vector of the edge property map. More... | |
template<typename HalfedgeGraph , typename PropertyMap > | |
void | normalize_vector_map_halfedges (const HalfedgeGraph &g, PropertyMap &prop_map) |
Normalize each vector of the halfedge property map. More... | |
template<typename PointCloudS , typename PointCloudT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_point_cloud (const PointCloudS &pc_s, const PMapsContainer &pmaps_s, PointCloudT &pc_t, PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT &) |
Copy a source point cloud into a target point cloud. Copy standard properties too. More... | |
template<typename PointCloudS , typename PointCloudT , typename Parameters , typename GeometryTraitsS = FEVV::Geometry_traits< PointCloudS >, typename GeometryTraitsT = FEVV::Geometry_traits< PointCloudT >> | |
void | copy_point_cloud (const PointCloudS &pc_s, const PMapsContainer &pmap_s, PointCloudT &pc_t, PMapsContainer &pmap_t, const Parameters ¶ms=CopyPCParameters< PointCloudS, PointCloudT >()) |
Copy a source point cloud into a target point cloud. Copy standard properties too. More... | |
template<typename PointCloud , typename VertexCurvatureMap > | |
void | compute_mean_stdev_curvature (const PointCloud &pc, const VertexCurvatureMap &v_curvm, double &mean, double &stdev) |
Compute mean and stdev of curvature. More... | |
template<typename PointCloud , typename VertexCurvatureMap , typename VertexColorMap > | |
void | curvature_to_color (const PointCloud &pc, const VertexCurvatureMap &v_curvm, VertexColorMap &v_cm) |
Convert a curvature map to a color map. More... | |
template<typename Point , typename PointMap , typename NNIdsVector , typename GeometryTraits > | |
double | curvature_at_point (const Point &origin, const PointMap &pm, const NNIdsVector &neighbors_ids, const GeometryTraits >) |
Compute the curvature at origin point using a set of neighbors given by a list of indices. More... | |
template<typename PointCloud , typename PointMap , typename VertexCurvatureMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< PointCloud >> | |
void | point_cloud_curvature (const PointCloud &pc, const PointMap &pm, unsigned int k, double radius, VertexCurvatureMap &v_curvm, VertexColorMap &v_cm, const GeometryTraits >) |
Compute the curvature for each point of the point cloud using the nearest neighbors. More... | |
template<typename PointCloud , typename PointMap , typename VertexCurvatureMap , typename VertexColorMap , typename GeometryTraits = FEVV::Geometry_traits< PointCloud >> | |
void | point_cloud_curvature (const PointCloud &pc, const PointMap &pm, unsigned int k, double radius, VertexCurvatureMap &v_curvm, VertexColorMap &v_cm) |
Compute the curvature for each point of the point cloud. Helper function to simplify the call to the filter. More... | |
template<typename PointCloud , typename PointMap , typename NormalMap , typename GeometryTraits = FEVV::Geometry_traits< PointCloud >> | |
void | compute_weighted_pca (const PointCloud &pointCloud, const PointMap &pointMap, NormalMap &normalMap, int n_neight, float noise, float curvature, const GeometryTraits >) |
template<typename PointCloud , typename PointMap , typename NormalMap , typename GeometryTraits = FEVV::Geometry_traits< PointCloud >> | |
void | compute_weighted_pca (const PointCloud &pointCloud, const PointMap &pointMap, NormalMap &normalMap, int n_neight, float noise, float curvature) |
template<typename HalfedgeGraph , typename NormalMap > | |
void | print_face_normals (const HalfedgeGraph &g, NormalMap nm) |
Print all faces normals. More... | |
template<typename HalfedgeGraph , typename PointMap > | |
void | print_points (const HalfedgeGraph &g, PointMap pm) |
Print all vertices coordinates. More... | |
template<typename PropertyGraph , typename PointMap , typename NewPointMap , typename GeometryTraits = FEVV::Geometry_traits< PropertyGraph >> | |
void | reposition_vertices (const PropertyGraph &g, PointMap pm, const NewPointMap &smoothed_pm, const GeometryTraits &) |
Apply new vertex positions to vertex position property map. More... | |
template<typename PropertyGraph , typename PointMap , typename NewPointMap , typename GeometryTraits = FEVV::Geometry_traits< PropertyGraph >> | |
void | reposition_vertices (const PropertyGraph &g, PointMap pm, const NewPointMap &smoothed_pm) |
template<typename Graph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< Graph >> | |
void | calculate_scaling (Graph &g, PointMap &pm, typename GeometryTraits::Scalar scale_x, typename GeometryTraits::Scalar scale_y, typename GeometryTraits::Scalar scale_z, const GeometryTraits >) |
Scale a mesh. More... | |
template<typename Graph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< Graph >> | |
void | calculate_scaling (Graph &g, PointMap &pm, typename GeometryTraits::Scalar scale_x, typename GeometryTraits::Scalar scale_y, typename GeometryTraits::Scalar scale_z) |
Scale a mesh. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | translate (const HalfedgeGraph &g, PointMap &pm, typename GeometryTraits::Scalar offset_x, typename GeometryTraits::Scalar offset_y, typename GeometryTraits::Scalar offset_z, const GeometryTraits >) |
Translate a mesh. More... | |
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< HalfedgeGraph >> | |
void | translate (const HalfedgeGraph &g, PointMap &pm, typename GeometryTraits::Scalar offset_x, typename GeometryTraits::Scalar offset_y, typename GeometryTraits::Scalar offset_z) |
Translate a mesh. More... | |
template<typename PointCloudT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FEVV::PCLPointCloud &pc_s, const FEVV::PMapsContainer &pmaps_s, PointCloudT &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for PCL Point Cloud (copy from). More... | |
template<typename PointCloudT , typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const PointCloudT &pc_s, const FEVV::PMapsContainer &pmaps_s, FEVV::PCLPointCloud &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for PCL Point Cloud (copy to). More... | |
template<typename Parameters , typename GeometryTraitsS , typename GeometryTraitsT > | |
void | copy_graph (const FEVV::PCLPointCloud &pc_s, const FEVV::PMapsContainer &pmaps_s, FEVV::PCLPointCloud &pc_t, FEVV::PMapsContainer &pmaps_t, const Parameters ¶ms, const GeometryTraitsS >_s, const GeometryTraitsT >_t) |
Overloading of copy_graph() for PCL Point Cloud (copy from & to). More... | |
void | read_mesh (const std::string &filename, FEVV::PCLPointCloud &g, PMapsContainer &pmaps, bool=false) |
Load mesh from file. More... | |
void | write_mesh (const std::string &filename, FEVV::PCLPointCloud &g, PMapsContainer &) |
Write mesh to file. More... | |
typedef std::vector< float > FEVV::Filters::ColorMeshLUT |
Definition at line 25 of file color_mesh.h.
using FEVV::Filters::FaceDescVect = typedef std::vector< typename boost::graph_traits< FaceGraph >::face_descriptor > |
Helper type for face descriptors vector.
Definition at line 79 of file mesh_from_vector_representation.hpp.
using FEVV::Filters::FaceToFaceMap = typedef std::map< typename boost::graph_traits< FaceGraphS >::face_descriptor, typename boost::graph_traits< FaceGraphT >::face_descriptor > |
Helper type for face to face map.
Definition at line 41 of file copy_graph.hpp.
using FEVV::Filters::PCVertexToVertexMap = typedef std::map< typename boost::graph_traits< PointCloudS >::vertex_descriptor, typename boost::graph_traits< PointCloudT >::vertex_descriptor > |
Helper type for vertex to vertex map.
Definition at line 30 of file copy_point_cloud.hpp.
using FEVV::Filters::VertDescVect = typedef std::vector< typename boost::graph_traits< BoostGraph >::vertex_descriptor > |
Helper type for vertex descriptors vector.
Definition at line 71 of file mesh_from_vector_representation.hpp.
using FEVV::Filters::VertexToVertexMap = typedef std::map< typename boost::graph_traits< BoostGraphS >::vertex_descriptor, typename boost::graph_traits< BoostGraphT >::vertex_descriptor > |
Helper type for vertex to vertex map.
Definition at line 31 of file copy_graph.hpp.
|
strong |
Enumerator | |
---|---|
ALL_EDGES | |
REACH_THRESHOLD |
Definition at line 51 of file Batch_collapser.h.
|
strong |
Definition at line 33 of file Parameters.h.
|
strong |
Enumerator | |
---|---|
POSITION | |
DELTA | encode the 2 edge vertex positions |
BUTTERFLY | encode the delta between the 2 edge vertex positions |
Definition at line 19 of file Parameters.h.
|
strong |
Enumerator | |
---|---|
CASE11 | |
CASE12 | |
CASE13 | |
CASE211 | |
CASE212 | |
CASE221 | |
CASE222 | |
SIMPLE |
Definition at line 56 of file Batch_decompressor.h.
|
strong |
Enumerator | |
---|---|
MIDPOINT | |
HALFEDGE | midpoint position |
FULLEDGE | edge target position an "optimal" position along the collapsed edge (not implemented in this release) |
Definition at line 28 of file Parameters.h.
void FEVV::Filters::boolean_inter | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out | ||
) |
Computes the intersection of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010 Use the default geometry traits of the mesh.
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
Definition at line 148 of file boolean_operations.hpp.
void FEVV::Filters::boolean_inter | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out, | ||
const GeometryTraits & | |||
) |
Computes the intersection of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
gt | the geometry traits to use |
Definition at line 115 of file boolean_operations.hpp.
void FEVV::Filters::boolean_minus | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out | ||
) |
Computes the subtraction of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010 Use the default geometry traits of the mesh.
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
Definition at line 217 of file boolean_operations.hpp.
void FEVV::Filters::boolean_minus | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out, | ||
const GeometryTraits & | |||
) |
Computes the subtraction of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
gt | the geometry traits to use |
Definition at line 184 of file boolean_operations.hpp.
void FEVV::Filters::boolean_union | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out | ||
) |
Computes the union of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010 Use the default geometry traits of the mesh.
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
Definition at line 79 of file boolean_operations.hpp.
void FEVV::Filters::boolean_union | ( | HalfedgeGraph & | gA, |
HalfedgeGraph & | gB, | ||
HalfedgeGraph & | g_out, | ||
const GeometryTraits & | |||
) |
Computes the union of two polyhedra.
Ref: "Exact and Efficient Booleans for Polyhedra", C. Leconte, H. Barki, F. Dupont, Rapport de recherche RR-LIRIS-2010-018, 2010
gA | 1st input mesh |
gB | 2nd input mesh |
g_out | output mesh |
gt | the geometry traits to use |
Definition at line 46 of file boolean_operations.hpp.
void FEVV::Filters::calculate_curvature | ( | const HalfedgeGraph & | g, |
VertexCurvatureMap & | v_cm, | ||
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
bool | is_geod, | ||
double | radius, | ||
double & | min_nrm_min_curvature, | ||
double & | max_nrm_min_curvature, | ||
double & | min_nrm_max_curvature, | ||
double & | max_nrm_max_curvature | ||
) |
Calculate the curvature for a mesh.
g | input mesh |
v_cm | output vertex curvature map |
pm | point map |
f_nm | face normal map |
isGeod | isGeod if true = geodesic neighborhood, if false = 1-ring neighborhood |
radius | radius |
MinNrmMinCurvature | output minimum value of the minimum curvature (usefull for color rendering) |
MaxNrmMinCurvature | output maximum value of the minimum curvature (usefull for color rendering) |
MinNrmMaxCurvature | output minimum value of the maximum curvature (usefull for color rendering) |
MaxNrmMaxCurvature | output maximum value of the maximum curvature (usefull for color rendering) |
Definition at line 538 of file curvature.hpp.
void FEVV::Filters::calculate_curvature | ( | const HalfedgeGraph & | g, |
VertexCurvatureMap & | v_cm, | ||
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
bool | is_geod, | ||
double | radius, | ||
double & | min_nrm_min_curvature, | ||
double & | max_nrm_min_curvature, | ||
double & | min_nrm_max_curvature, | ||
double & | max_nrm_max_curvature, | ||
const GeometryTraits & | gt | ||
) |
Calculate the curvature for a mesh.
g | input mesh |
v_cm | output vertex curvature map |
pm | point map |
f_nm | face normal map |
isGeod | isGeod if true = geodesic neighborhood, if false = 1-ring neighborhood |
radius | radius |
MinNrmMinCurvature | output minimum value of the minimum curvature (usefull for color rendering) |
MaxNrmMinCurvature | output maximum value of the minimum curvature (usefull for color rendering) |
MinNrmMaxCurvature | output minimum value of the maximum curvature (usefull for color rendering) |
MaxNrmMaxCurvature | output maximum value of the maximum curvature (usefull for color rendering) |
gt | the geometry traits to use |
Definition at line 312 of file curvature.hpp.
void FEVV::Filters::calculate_face_normals | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
FaceNormalMap | fnm | ||
) |
Compute all faces normals.
g | mesh |
pm | point map |
fnm | face normal map |
Definition at line 73 of file calculate_face_normals.hpp.
void FEVV::Filters::calculate_face_normals | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
FaceNormalMap | fnm, | ||
const GeometryTraits & | gt | ||
) |
Calculate "some" normal of all the faces of the considered mesh and populate the argument provided Face Normal Map with the resulting normals.
[in] | g | The considered mesh |
[in] | pm | The Point Map holding the vertices geometry |
[out] | fnm | The Property Map that will be populated with the resulting normal vectors. |
[in] | gt | The Geometry Traits used to perfom the geometrical calculations |
Definition at line 40 of file calculate_face_normals.hpp.
void FEVV::Filters::calculate_halfedges_tangent | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const HalfedgeUVMap & | hum, | ||
VertexTangentMap & | vtm | ||
) |
Calculate the mesh's tangents from its halfedges.
g | the halfedge graph from which we take the mesh's informations. |
pm | vertices' positions. |
hum | halfedge UV map containing halfedges' texture coordinates. |
vtm | vertex tangent map to be filled with computed tangents. |
Definition at line 38 of file calculate_halfedges_tangent.hpp.
void FEVV::Filters::calculate_scaling | ( | Graph & | g, |
PointMap & | pm, | ||
typename GeometryTraits::Scalar | scale_x, | ||
typename GeometryTraits::Scalar | scale_y, | ||
typename GeometryTraits::Scalar | scale_z | ||
) |
Scale a mesh.
g | input mesh |
pm | output point map |
scaleX | x scale factor |
scaleY | y scale factor |
scaleZ | z scale factor |
Definition at line 82 of file scaling.hpp.
void FEVV::Filters::calculate_scaling | ( | Graph & | g, |
PointMap & | pm, | ||
typename GeometryTraits::Scalar | scale_x, | ||
typename GeometryTraits::Scalar | scale_y, | ||
typename GeometryTraits::Scalar | scale_z, | ||
const GeometryTraits & | gt | ||
) |
Scale a mesh.
g | input mesh |
pm | output point map |
scaleX | x scale factor |
scaleY | y scale factor |
scaleZ | z scale factor |
gt | the geometry traits to use |
Definition at line 38 of file scaling.hpp.
void FEVV::Filters::calculate_vertex_normals | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | fnm, | ||
VertexNormalMap | vnm | ||
) |
Compute the respectice vertex normal for all the vertices of the considered mesh and populate the argument provided Face Normal Map with the resulting normals.
[in] | g | The considered mesh. |
[in] | pm | The Point Map holding the vertices geometry |
[in] | fnm | The Property Map providing the face normal vectors |
[out] | vnm | The Property Map that will be populated with the resulting normal vectors. |
vnm | provided face normals |
Definition at line 84 of file calculate_vertex_normals.hpp.
void FEVV::Filters::calculate_vertex_normals | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | fnm, | ||
VertexNormalMap | vnm, | ||
const GeometryTraits & | gt | ||
) |
Compute the respectice vertex normal for all the vertices of the considered mesh and populate the argument provided Face Normal Map with the resulting normals.
[in] | g | The considered mesh. |
[in] | pm | The Point Map holding the vertices geometry |
[in] | fnm | The Property Map providing the face normal vectors |
[out] | vnm | The Property Map that will be populated with the resulting normal vectors. |
[in] | gt | The Geometry Traits associated to the mesh |
vnm | provided face normals |
Definition at line 41 of file calculate_vertex_normals.hpp.
void FEVV::Filters::calculate_vertices_one_ring_angles_based_centroid | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | angles_based_centroids_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor, | ||
const GeometryTraits & | gt | ||
) |
Compute angle-based centroids for all vertices and store them in bangles_based_centroids_pm.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
PointMap | A modifiable point map to manage vertex positions. |
CentroidMap | A modifiable point map to manage vertex' angle-based centroid. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>. |
g | The FaceGraph instance from which the vertices will be taken. |
pm | The point map which associate a vertex descriptor with a vertex position. |
angles_based_centroids_pm | The point map to store the computed vertex centroids. |
SMOOTHING_FACTOR | A (usually positive) factor used to compute the position of a stored centroid following V_pos + SMOOTHING_FACTORx(C_computed - V_pos). |
gt | The geometry trait object. |
Definition at line 49 of file calculate_vertices_one_ring_angles_based_centroid.hpp.
void FEVV::Filters::calculate_vertices_one_ring_angles_based_centroid | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | angles_based_centroids_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor = 0.1 |
||
) |
Definition at line 87 of file calculate_vertices_one_ring_angles_based_centroid.hpp.
void FEVV::Filters::calculate_vertices_one_ring_barycenter | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | barycenters_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor, | ||
const GeometryTraits & | gt | ||
) |
Compute barycenters for all vertices and store them in barycenters_pm.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
PointMap | A modifiable point map to manage vertex positions. |
CentroidMap | A modifiable point map to manage vertex' barycenter. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>. |
g | The FaceGraph instance from which the vertices will be taken. |
pm | The point map which associate a vertex descriptor with a vertex position. |
barycenters_pm | The point map to store the computed vertex centroids. |
SMOOTHING_FACTOR | A (usually positive) factor used to compute the position of a stored centroid following V_pos + SMOOTHING_FACTORx(C_computed - V_pos). |
gt | The geometry trait object. |
Definition at line 47 of file calculate_vertices_one_ring_barycenter.hpp.
void FEVV::Filters::calculate_vertices_one_ring_barycenter | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | barycenters_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor = 0.1 |
||
) |
Definition at line 82 of file calculate_vertices_one_ring_barycenter.hpp.
void FEVV::Filters::calculate_vertices_one_ring_geometric_laplacian | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | geom_laplacians_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor, | ||
const GeometryTraits & | gt | ||
) |
Compute geometric laplacians for all vertices and store them in geom_laplacians_pm.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
PointMap | A modifiable point map to manage vertex positions. |
CentroidMap | A modifiable point map to manage vertex' geometric laplacians. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>. |
g | The FaceGraph instance from which the vertices will be taken. |
pm | The point map which associate a vertex descriptor with a vertex position. |
geom_laplacians_pm | The point map to store the computed vertex geometric laplacians. |
smoothing_factor | A (usually positive) factor used to compute the position of a stored geometric laplacian following V_pos + smoothing_factor x(GL_computed - V_pos). |
gt | The geometry trait object. |
Definition at line 49 of file calculate_vertices_one_ring_geometric_laplacian.hpp.
void FEVV::Filters::calculate_vertices_one_ring_geometric_laplacian | ( | const FaceGraph & | g, |
const PointMap & | pm, | ||
CentroidMap | geom_laplacians_pm, | ||
const typename GeometryTraits::Scalar | smoothing_factor = 0.1 |
||
) |
Definition at line 83 of file calculate_vertices_one_ring_geometric_laplacian.hpp.
void FEVV::Filters::calculate_vertices_tangent | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const VertexUVMap & | vum, | ||
VertexTangentMap & | vtm | ||
) |
Calculate the mesh's tangents from its vertices.
g | the halfedge graph from which we take the mesh's informations. |
pm | point map containing vertices' positions. |
vum | vertex UV map containing vertices' texture coordinates. |
vtm | vertex tangent map to be filled with computed tangents. |
vtm | provided vertex UVs |
Definition at line 38 of file calculate_vertices_tangent.hpp.
bool FEVV::Filters::clean_topology | ( | FaceGraph & | g, |
bool | remove_isolated_vertices = true , |
||
bool | remove_isolated_edges = true , |
||
bool | remove_isolated_faces = false , |
||
bool | remove_similar_edges = true , |
||
bool | remove_similar_faces = true |
||
) |
Function use for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
[in,out] | g | The FaceGraph instance. |
[in] | remove_isolated_vertices | Boolean to remove isolated vertices if true. |
[in] | remove_isolated_edges | Boolean to remove isolated edges if true. |
[in] | remove_isolated_faces | Boolean to remove isolated faces if true. |
[in] | remove_similar_edges | Boolean to remove similar/parallel edges if true. |
[in] | remove_similar_faces | Boolean to remove similar/parallel faces if true. |
Definition at line 46 of file clean_topology.hpp.
void FEVV::Filters::color_descriptor_from_bool | ( | const Descriptor & | d, |
const BooleanMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const Color & | color1, | ||
const Color & | color2 | ||
) |
Set the color for the descriptor using a boolean property map and the colors given.
d | Descriptor used as key for the property map |
prop_map | Property map containing boolean values |
color_pmap | Property map containing color values |
color1 | color when the property is true |
color2 | color when the property is false |
Definition at line 290 of file color_mesh.h.
void FEVV::Filters::color_descriptor_from_map | ( | const Descriptor & | d, |
const PropertyMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const MapType | min_metric, | ||
const MapType | max_metric, | ||
const ColorMeshLUT & | colors | ||
) |
Set the color for the descriptor using a numerical property map and the color array given.
d | Descriptor used as key for the property map |
prop_map | Property map containing numerical values |
color_pmap | Property map containing color values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
colors | 1D array of size N*3 |
Definition at line 105 of file color_mesh.h.
void FEVV::Filters::color_edge | ( | HalfedgeGraph & | , |
PointMap & | , | ||
EdgeColorMap & | e_cm, | ||
edge_descriptor | edge_to_color, | ||
typename boost::property_traits< EdgeColorMap >::value_type | color | ||
) |
Colors an edge by putting the specified color into the edge color map at the "edge" position. Used for debug purpose.
Definition at line 36 of file apply_color.h.
void FEVV::Filters::color_faces_from_bool_map | ( | const HalfedgeGraph & | g, |
const BooleanMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const Color & | color1, | ||
const Color & | color2 | ||
) |
Fill the color map for the faces of a mesh using a boolean property map.
g | mesh to color |
prop_map | Property map containing boolean values |
color_pmap | Property map containing color values |
color1 | color when the property is true |
color2 | color when the property is false |
Definition at line 324 of file color_mesh.h.
void FEVV::Filters::color_faces_from_map | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const MapType | min_metric, | ||
const MapType | max_metric, | ||
const ColorMeshLUT & | colors = make_LUT() |
||
) |
Fill the color map for the faces of a mesh using a numerical property map.
g | mesh to colorize |
prop_map | property map containing numerical values |
color_pmap | property map containing color values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
colors | 1D array of size N*3 |
Definition at line 172 of file color_mesh.h.
void FEVV::Filters::color_halfedge_from_bool_map | ( | const HalfedgeGraph & | g, |
const BooleanMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const Color & | color1, | ||
const Color & | color2 | ||
) |
Fill the color map for the halfedges of a mesh using a boolean property map.
g | mesh to color |
prop_map | Property map containing boolean values |
color_pmap | Property map containing color values |
color1 | color when the property is true |
color2 | color when the property is false |
Definition at line 388 of file color_mesh.h.
void FEVV::Filters::color_halfedges_from_map | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const MapType | min_metric, | ||
const MapType | max_metric, | ||
const ColorMeshLUT & | colors = make_LUT() |
||
) |
Fill the color map for the halfedges of a mesh using a numerical property map.
g | mesh to colorize |
prop_map | property map containing numerical values |
color_pmap | property map containing color values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
colors | 1D array of size N*3 |
Definition at line 250 of file color_mesh.h.
void FEVV::Filters::color_vertex | ( | HalfedgeGraph & | , |
PointMap & | , | ||
VertexColorMap & | v_cm, | ||
vertex_descriptor | vertex_to_color, | ||
typename boost::property_traits< VertexColorMap >::value_type | color | ||
) |
Colors a vertex by putting the specified color into the vertex color map at the "vertex" position. Used for debug purpose.
Definition at line 56 of file apply_color.h.
void FEVV::Filters::color_vertices_from_bool_map | ( | const HalfedgeGraph & | g, |
const BooleanMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const Color & | color1, | ||
const Color & | color2 | ||
) |
Fill the color map for the vertices of a mesh using a boolean property map.
g | mesh to color |
prop_map | Property map containing boolean values |
color_pmap | Property map containing color values |
color1 | color when the property is true |
color2 | color when the property is false |
Definition at line 356 of file color_mesh.h.
void FEVV::Filters::color_vertices_from_map | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
ColorMap & | color_pmap, | ||
const MapType | min_metric, | ||
const MapType | max_metric, | ||
const ColorMeshLUT & | colors = make_LUT() |
||
) |
Fill the color map for the vertices of a mesh using a numerical property map.
g | mesh to colorize |
prop_map | property map containing numerical values |
color_pmap | property map containing color values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
colors | 1D array of size N*3 |
Definition at line 211 of file color_mesh.h.
std::string FEVV::Filters::compression_valence | ( | HalfedgeGraph & | g, |
PointMap * | pm, | ||
VertexColorMap * | v_cm, | ||
const std::string & | input_filename, | ||
const std::string & | output_filename, | ||
bool | with_compression, | ||
bool | with_adaptative_quantization, | ||
int | max_vertices, | ||
int | quantiz_bits, | ||
const GeometryTraits & | |||
) |
Compress the input mesh using the Compression Valence algorithm.
Ref: Ho Lee, Guillaume Lavoué and Florent Dupont, Rate-distortion optimization for progressive compression of 3D mesh with color attributes, The Visual Computer, vol. 28, No. 2, pp. 137-153, 2012. https://perso.liris.cnrs.fr/guillaume.lavoue/travaux/revue/VC2011.pdf
g | input mesh |
pm | point map |
v_cm | vertex color map if any, nullptr allowed |
input_filename | name of the input mesh file (only used to known the input file size and compute the compression rate) ; empty allowed |
output_filename | name of the compressed mesh file |
with_compression | compression flag ; if set to false, only mesh simplification is done |
with_adaptative_quantization | adaptative quantization flag ; if set to false, no adaptative quantization is done |
max_vertices | maximum number of vertices of the final mesh |
quantiz_bits | number of quantization bits |
gt | the geometry traits to use |
Definition at line 54 of file compression_valence.h.
std::string FEVV::Filters::compression_valence | ( | HalfedgeGraph & | g, |
PointMap * | pm, | ||
VertexColorMap * | v_cm, | ||
const std::string & | input_filename, | ||
const std::string & | output_filename, | ||
bool | with_compression = false , |
||
bool | with_adaptative_quantization = false , |
||
int | max_vertices = 100 , |
||
int | quantiz_bits = 10 |
||
) |
Compress the input mesh using the Compression Valence algorithm.
Ref: Ho Lee, Guillaume Lavoué and Florent Dupont, Rate-distortion optimization for progressive compression of 3D mesh with color attributes, The Visual Computer, vol. 28, No. 2, pp. 137-153, 2012. https://perso.liris.cnrs.fr/guillaume.lavoue/travaux/revue/VC2011.pdf Use the default geometry traits of the mesh.
g | input mesh |
pm | point map |
v_cm | vertex color map if any, nullptr allowed |
input_filename | name of the input mesh file (only used to known the input file size and compute the compression rate) ; empty allowed |
output_filename | name of the compressed mesh file |
with_compression | compression flag ; if set to false, only mesh simplification is done |
with_adaptative_quantization | adaptative quantization flag ; if set to false, no adaptative quantization is done |
max_vertices | maximum number of vertices of the final mesh |
quantiz_bits | number of quantization bits |
Definition at line 125 of file compression_valence.h.
void FEVV::Filters::compute_color_statistics | ( | const HalfedgeGraph & | , |
const PointMap & | pm_degr, | ||
const CMDMNearestMap & | nearest_pmap, | ||
const VertexIterator | p_vertex, | ||
std::vector< std::array< double, 3 > > & | tab_color1, | ||
std::vector< std::array< double, 3 > > & | tab_color2, | ||
std::vector< CGALPoint > & | tab_point1, | ||
std::vector< CGALPoint > & | tab_point2, | ||
double * | tab_f4, | ||
double * | tab_f5, | ||
double * | tab_f6, | ||
double * | tab_f7, | ||
double * | tab_f8, | ||
double | radius | ||
) |
Calculates the local color-based features per vertex.
pVertex | The considered vertex |
TabColor1 | Color values (L,A,B) from the neighborhood of pVertex regarding the first polyhedron |
TabColor2 | Color values (L,A,B) from the neighborhood of pVertex regarding the second polyhedron |
TabPoint1 | 3D points from the neighborhood of pVertex regarding the first polyhedron |
TabPoint2 | 3D points from the neighborhood of pVertex regarding the second polyhedron |
radius | The radius of the neighborhood. |
Definition at line 214 of file cmdm.h.
void FEVV::Filters::compute_geometry_statistics | ( | const HalfedgeGraph & | , |
const PointMap & | pm_degr, | ||
const CMDMNearestMap & | nearest_pmap, | ||
const VertexIterator | p_vertex, | ||
std::vector< double > & | tab_distance1, | ||
std::vector< double > & | tab_distance2, | ||
std::vector< CGALPoint > & | tab_point1, | ||
std::vector< CGALPoint > & | tab_point2, | ||
double * | tab_f1, | ||
double * | tab_f2, | ||
double * | tab_f3, | ||
double | radius | ||
) |
Calculates the local geometry-based features per vertex.
pVertex | The considered vertex |
TabDistance1 | Curvature values from the neighborhood of pVertex regarding the first polyhedron |
TabDistance2 | Curvature values from the neighborhood of pVertex regarding the second polyhedron |
TabPoint1 | 3D points from the neighborhood of pVertex regarding the first polyhedron |
TabPoint2 | 3D points from the neighborhood of pVertex regarding the second polyhedron |
radius | The radius of the neighborhood. |
Definition at line 112 of file cmdm.h.
void FEVV::Filters::compute_mean_stdev_curvature | ( | const PointCloud & | pc, |
const VertexCurvatureMap & | v_curvm, | ||
double & | mean, | ||
double & | stdev | ||
) |
Compute mean and stdev of curvature.
pc | the point cloud |
v_curvm | the vertex curvature map |
mean | output value of mean |
stdev | output value of stdev |
Definition at line 35 of file point_cloud_curvature.hpp.
void FEVV::Filters::compute_mesh_bounding_box | ( | const PropertyGraph & | g, |
const PointMap & | pm, | ||
typename boost::property_traits< PointMap >::value_type & | min_aabb, | ||
typename boost::property_traits< PointMap >::value_type & | max_aabb, | ||
const GeometryTraits & | gt | ||
) |
Compute the mesh Axis-Aligned Bounding-Box (AABB).
PropertyGraph | a Mesh type that provides a Model of the PropertyGraph Concept through a boost::graph_traits<> specialization. |
PointMap | A modifiable point map to manage vertex positions. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<PropertyGraph>. |
g | The PropertyGraph instance from which the vertices will be taken. |
pm | The point map which associate a vertex descriptor with a vertex position. |
smoothed_pm | The point map used to replace the vertex positions in pm. |
gt | The geometry trait object. |
Definition at line 38 of file compute_mesh_bounding_box.hpp.
void FEVV::Filters::compute_min_max_descriptor | ( | const Descriptor & | d, |
const PropertyMap & | prop_map, | ||
MapType & | min_metric, | ||
MapType & | max_metric | ||
) |
Generic call to compute min max from a Descriptor Get the value of the property map for the given descriptor and update minMetric and maxMetric accordingly.
d | Descriptor used as key for the property map |
prop_map | Property map containing numerical values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
Definition at line 35 of file minmax_map.h.
void FEVV::Filters::compute_min_max_faces | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
MapType & | min_metric, | ||
MapType & | max_metric | ||
) |
Compute min and max value of a numerical property map for the faces of a mesh.
g | mesh with the property map |
prop_map | Property map containing numerical values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
Definition at line 62 of file minmax_map.h.
void FEVV::Filters::compute_min_max_halfedges | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
MapType & | min_metric, | ||
MapType & | max_metric | ||
) |
Compute min and max value of a numerical property map for the halfedges of a mesh.
g | mesh with the property map |
prop_map | Property map containing numerical values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
Definition at line 123 of file minmax_map.h.
void FEVV::Filters::compute_min_max_vertices | ( | const HalfedgeGraph & | g, |
const PropertyMap & | prop_map, | ||
MapType & | min_metric, | ||
MapType & | max_metric | ||
) |
Compute min and max value of a numerical property map for the vertices of a mesh.
g | mesh with the property map |
prop_map | Property map containing numerical values |
minMetric | minimum value of the property map |
maxMetric | maximum value of the property map |
Definition at line 92 of file minmax_map.h.
void FEVV::Filters::compute_simple_stencil | ( | HalfedgeGraph & | g, |
vertex_descriptor | v, | ||
std::set< halfedge_descriptor > & | forbidden_edges, | ||
std::vector< halfedge_descriptor > & | edges_to_color | ||
) |
void FEVV::Filters::compute_statistics | ( | const HalfedgeGraph & | , |
const PointMap & | pm_degr, | ||
const MSDM2NearestMap & | nearest_pmap, | ||
MSDM2Map & | msdm2_map, | ||
const VertexIterator | p_vertex, | ||
double | param, | ||
std::vector< double > & | tab_distance1, | ||
std::vector< double > & | tab_distance2, | ||
std::vector< CGALPoint > & | tab_point1, | ||
std::vector< CGALPoint > & | tab_point2, | ||
double | radius, | ||
double | |||
) |
Calculates the local curvature statistics per vertex.
pVertex | The considered vertex |
TabDistance1 | Curvature values from the neighborhood of pVertex regarding the first polyhedron |
TabDistance2 | Curvature values from the neighborhood of pVertex regarding the second polyhedron |
TabPoint1 | 3D points from the neighborhoodof pVertex regarding the first polyhedron |
TabPoint2 | 3D points from the neighborhood of pVertex regarding the second polyhedron |
radius | The radius of the neighborhood. |
dim | The max dimension of the Bounding Box Length. |
we then compute the MSDM2_Local value
Definition at line 112 of file msdm2.h.
double FEVV::Filters::compute_threshold | ( | const GeometryTraits & | geom, |
const PointMap & | point_map, | ||
const HalfedgeGraph & | mesh, | ||
const FaceNormalMap & | f_nm, | ||
const VertexType & | vertex, | ||
const DirType & | dir, | ||
const LightType & | light, | ||
const CamType & | cam, | ||
const ScreenParam & | screen, | ||
const UserParam & | user, | ||
const SceneParam & | scene, | ||
const NWHWD16_Threshold & | threshold, | ||
double | max_displacement | ||
) |
Compute the JND value for a vertex, using a given light.
Definition at line 182 of file just_noticeable_distortion.hpp.
double FEVV::Filters::compute_visibility | ( | const GeometryTraits & | geom, |
const PointMap & | point_map, | ||
const HalfedgeGraph & | mesh, | ||
const FaceNormalMap & | f_nm, | ||
const HalfEdge & | halfedge, | ||
const DirType & | displacement, | ||
const LightType & | light, | ||
const CamType & | cam, | ||
const ScreenParam & | screen, | ||
const UserParam & | user, | ||
const SceneParam & | scene, | ||
const NWHWD16_Threshold & | threshold, | ||
bool | both_faces_move = true |
||
) |
Compute the visibility of the movement of an halfedge, given a light source and the displacement.
Definition at line 49 of file just_noticeable_distortion.hpp.
void FEVV::Filters::compute_weighted_pca | ( | const PointCloud & | pointCloud, |
const PointMap & | pointMap, | ||
NormalMap & | normalMap, | ||
int | n_neight, | ||
float | noise, | ||
float | curvature | ||
) |
Definition at line 181 of file point_cloud_normal_wpca.hpp.
void FEVV::Filters::compute_weighted_pca | ( | const PointCloud & | pointCloud, |
const PointMap & | pointMap, | ||
NormalMap & | normalMap, | ||
int | n_neight, | ||
float | noise, | ||
float | curvature, | ||
const GeometryTraits & | gt | ||
) |
Convert generic cloud into raw cloud Raw cloud is the structure used by the original normal computation algorithm
Original algorithm
Definition at line 38 of file point_cloud_normal_wpca.hpp.
void FEVV::Filters::connectivity_encoding | ( | const HalfedgeGraph & | g, |
const PointMap & | , | ||
Collapse_info< HalfedgeGraph, PointMap > & | mem, | ||
edge_descriptor | starting_edge, | ||
std::list< bool > & | edge_bitmask | ||
) |
Encode vertex to split' one-ring edges to expand. For a vertex to split (represented by a Collapse_info object), will encode
the edges to expand in a binary stream, 1 being an edge that should be expanded and 0 being an edge that should not. Takes as arguments a graph g, a pointmap, a Collapse_info object (again, representing a vertex and many necessary refinement info), the first edge to process (see the encode_connectivity_bitmask function), and the edge/connectivity bitmask (which will receive the connectivity bitstream).
mem | in |
starting_edge | in/out |
edge_bitmask | in min edge (edge with the lowest index in the spanning tree) out |
Definition at line 44 of file Connectivity_encoding.h.
void FEVV::Filters::copy_graph | ( | const FaceListGraphS & | g_s, |
const PMapsContainer & | pmap_s, | ||
FaceListGraphT & | g_t, | ||
PMapsContainer & | pmap_t, | ||
const Parameters & | params = CopyGraphParameters< FaceListGraphS, FaceListGraphT >() |
||
) |
Copy a source mesh into a target mesh. Copy standard properties too.
g_s | the mesh to copy from |
pmaps_s | the source property maps bag |
g_t | the mesh to copy to |
pmaps_t | the target property maps bag |
params | the named parameters |
Definition at line 248 of file copy_graph.hpp.
void FEVV::Filters::copy_graph | ( | const FaceListGraphS & | g_s, |
const PMapsContainer & | pmaps_s, | ||
FaceListGraphT & | g_t, | ||
PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Copy a source mesh into a target mesh. Copy standard properties too.
g_s | the mesh to copy from |
pmaps_s | the source property maps bag |
g_t | the mesh to copy to |
pmaps_t | the target property maps bag |
params | the named parameters |
gt_s | the geometry traits of source mesh |
gt_t | the geometry traits of target mesh |
Definition at line 96 of file copy_graph.hpp.
void FEVV::Filters::copy_graph | ( | const FaceListGraphS & | g_s, |
FaceListGraphT & | g_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Copy a source mesh into a target mesh. Do NOT Copy properties.
g_s | the mesh to copy from |
g_t | the mesh to copy to |
params | the named parameters |
gt_s | the geometry traits of source mesh |
gt_t | the geometry traits of target mesh |
Definition at line 279 of file copy_graph.hpp.
void FEVV::Filters::copy_graph | ( | const FaceListGraphS & | g_s, |
FaceListGraphT & | g_t, | ||
const Parameters & | params = CopyGraphParameters< FaceListGraphS, FaceListGraphT >() |
||
) |
Copy a source mesh into a target mesh. Do NOT copy properties.
g_s | the mesh to copy from |
g_t | the mesh to copy to |
params | the named parameters |
Definition at line 308 of file copy_graph.hpp.
void FEVV::Filters::copy_graph | ( | const FEVV::CGALPointSet & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
FEVV::CGALPointSet & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for copy from CGAL Point Set to CGAL Point Set.
Definition at line 112 of file copy_graph_cgal_point_set.hpp.
void FEVV::Filters::copy_graph | ( | const FEVV::CGALPointSet & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
PointCloudT & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for CGAL Point Set copy from.
Definition at line 43 of file copy_graph_cgal_point_set.hpp.
void FEVV::Filters::copy_graph | ( | const FEVV::PCLPointCloud & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
FEVV::PCLPointCloud & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for PCL Point Cloud (copy from & to).
Definition at line 111 of file copy_graph_pcl.hpp.
void FEVV::Filters::copy_graph | ( | const FEVV::PCLPointCloud & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
PointCloudT & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for PCL Point Cloud (copy from).
Definition at line 43 of file copy_graph_pcl.hpp.
void FEVV::Filters::copy_graph | ( | const PointCloudT & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
FEVV::CGALPointSet & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for CGAL Point Set copy to.
Definition at line 77 of file copy_graph_cgal_point_set.hpp.
void FEVV::Filters::copy_graph | ( | const PointCloudT & | pc_s, |
const FEVV::PMapsContainer & | pmaps_s, | ||
FEVV::PCLPointCloud & | pc_t, | ||
FEVV::PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | gt_t | ||
) |
Overloading of copy_graph() for PCL Point Cloud (copy to).
Definition at line 77 of file copy_graph_pcl.hpp.
void FEVV::Filters::copy_point_cloud | ( | const PointCloudS & | pc_s, |
const PMapsContainer & | pmap_s, | ||
PointCloudT & | pc_t, | ||
PMapsContainer & | pmap_t, | ||
const Parameters & | params = CopyPCParameters< PointCloudS, PointCloudT >() |
||
) |
Copy a source point cloud into a target point cloud. Copy standard properties too.
pc_s | the point cloud to copy from |
pmaps_s | the source property maps bag |
pc_t | the point cloud to copy to |
pmaps_t | the target property maps bag |
Definition at line 210 of file copy_point_cloud.hpp.
void FEVV::Filters::copy_point_cloud | ( | const PointCloudS & | pc_s, |
const PMapsContainer & | pmaps_s, | ||
PointCloudT & | pc_t, | ||
PMapsContainer & | pmaps_t, | ||
const Parameters & | params, | ||
const GeometryTraitsS & | gt_s, | ||
const GeometryTraitsT & | |||
) |
Copy a source point cloud into a target point cloud. Copy standard properties too.
pc_s | the point cloud to copy from |
pmaps_s | the source property maps bag |
pc_t | the point cloud to copy to |
pmaps_t | the target property maps bag |
v2v | vertex to vertex map to populate (nullptr allowed) |
gt_s | the geometry traits of source point cloud |
gt_t | the geometry traits of target point cloud |
Definition at line 77 of file copy_point_cloud.hpp.
double FEVV::Filters::curvature_at_point | ( | const Point & | origin, |
const PointMap & | pm, | ||
const NNIdsVector & | neighbors_ids, | ||
const GeometryTraits & | gt | ||
) |
Compute the curvature at origin point using a set of neighbors given by a list of indices.
origin | : Point to be projected. |
refpoints | : Contains all points from ref points cloud. |
indices | : Index of points in refpoints cloud used to compute the projection. |
proj | : Reference containing the point resulting from the projection. |
H | : Reference containing the mean curvature of the projected point. |
Definition at line 123 of file point_cloud_curvature.hpp.
void FEVV::Filters::curvature_to_color | ( | const PointCloud & | pc, |
const VertexCurvatureMap & | v_curvm, | ||
VertexColorMap & | v_cm | ||
) |
Convert a curvature map to a color map.
pc | the point cloud |
v_curvm | the vertex curvature map |
v_cm | a vertex color map to store the curvature as a color |
Definition at line 76 of file point_cloud_curvature.hpp.
std::string FEVV::Filters::decompression_valence | ( | HalfedgeGraph & | g, |
PointMap * | pm, | ||
VertexColorMap * | v_cm, | ||
const std::string & | input_filename, | ||
bool & | has_color, | ||
bool | do_write_info, | ||
std::vector< HalfedgeGraph * > * | intermediate_meshes, | ||
std::vector< VertexColorMap * > * | intermediate_vertex_color_maps, | ||
int | stop_level, | ||
bool | do_write_intermediate_meshes, | ||
const GeometryTraits & | |||
) |
Uncompress a mesh compressed with Compression Valence algorithm.
Ref: Ho Lee, Guillaume Lavoué and Florent Dupont, Rate-distortion optimization for progressive compression of 3D mesh with color attributes, The Visual Computer, vol. 28, No. 2, pp. 137-153, 2012. https://perso.liris.cnrs.fr/guillaume.lavoue/travaux/revue/VC2011.pdf
g | input mesh |
pm | output point map |
v_cm | output vertex color map |
input_filename | name of the compressed mesh file |
do_write_info | if set to true, write some information about decompression progression in a text file .infos.txt |
intermediate_meshes | if not null, used to store the intermediate meshe corresponding to each compression layer |
intermediate_vertexColorMaps | if not null, used to store the vertex color map of each intermediate mesh |
has_color | output parameter, contains true if the compressed mesh has colors |
do_write_intermediate_meshes | write intermediate meshes to files during decompression progression |
gt | the geometry traits to use |
Definition at line 59 of file decompression_valence.h.
std::string FEVV::Filters::decompression_valence | ( | HalfedgeGraph & | g, |
PointMap * | pm, | ||
VertexColorMap * | v_cm, | ||
const std::string & | input_filename, | ||
bool & | has_color, | ||
bool | do_write_info = false , |
||
std::vector< HalfedgeGraph * > * | intermediate_meshes = nullptr , |
||
std::vector< VertexColorMap * > * | intermediate_vertex_color_maps = nullptr , |
||
int | stop_level = -1 , |
||
bool | do_write_intermediate_meshes = false |
||
) |
Uncompress a mesh compressed with Compression Valence algorithm.
Ref: Ho Lee, Guillaume Lavoué and Florent Dupont, Rate-distortion optimization for progressive compression of 3D mesh with color attributes, The Visual Computer, vol. 28, No. 2, pp. 137-153, 2012. https://perso.liris.cnrs.fr/guillaume.lavoue/travaux/revue/VC2011.pdf
g | input mesh |
pm | output point map |
v_cm | output vertex color map |
input_filename | name of the compressed mesh file |
do_write_info | if set to true, write some information about decompression progression in a text file .infos.txt |
intermediate_meshes | if not null, used to store the intermediate meshe corresponding to each compression layer |
intermediate_vertexColorMaps | if not null, used to store the vertex color map of each intermediate mesh |
has_color | output parameter, contains true if the compressed mesh has colors |
do_write_intermediate_meshes | write intermediate meshes to files during decompression progression |
Definition at line 134 of file decompression_valence.h.
std::vector<typename boost::graph_traits<FaceGraph>::edge_descriptor> FEVV::Filters::edge_selector_for_collapse | ( | const FaceGraph & | g, |
bool | is_g_2_manifold, | ||
bool | forbid_non_satisfying_link_condition, | ||
bool | forbid_non_manifold_edge, | ||
bool | forbid_edge_collapse_creating_non_manifold_split, | ||
bool | forbid_border_edge, | ||
bool | forbid_inner_edge, | ||
bool | forbid_non_triangular_incident_face_to_edge, | ||
bool | forbid_edges_that_are_adjacent_to_collapsed_edges, | ||
bool | forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices, | ||
bool | forbid_edges_that_are_incident_to_opposite_vertices_of_collapsed_edge_vertices, | ||
bool | forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices, | ||
const GeometryTraits & | gt | ||
) |
Function used for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>. |
[in] | g | The FaceGraph instance. |
[in] | is_g_2_manifold | Boolean to avoid costly checks when the input g is 2-manifold. If you do not know, chose false. |
[in] | forbid_non_satisfying_link_condition | Boolean to avoid edge non-satisfaying the link condition. |
[in] | forbid_non_manifold_edge | Boolean to avoid non-manifold edge. |
[in] | forbid_edge_collapse_creating_non_manifold_split | Boolean to avoid edge whose collapse creates a non-manifold vertex split. |
[in] | forbid_border_edge | Boolean to avoid border edge. |
[in] | forbid_inner_edge | Boolean to avoid inner edge. |
[in] | forbid_non_triangular_incident_face_to_edge | Boolean to avoid edge whose incident faces are not triangular. |
[in] | forbid_edges_that_are_adjacent_to_collapsed_edges | Boolean to avoid edge adjacent to already selected edges. |
[in] | forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices | Boolean to avoid edge that is onto the one-ring of selected edges' vertices. |
[in] | forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices | Boolean to avoid edge that is adjacent to edges onto the one-ring of selected edges' vertices. |
[in] | gt | The Geometry Traits object. |
Definition at line 322 of file edge_selector.hpp.
std::vector<typename boost::graph_traits<FaceGraph>::edge_descriptor> FEVV::Filters::edge_selector_for_collapse | ( | const FaceGraph & | g, |
bool | is_g_2_manifold, | ||
bool | forbid_non_satisfying_link_condition, | ||
bool | forbid_non_manifold_edge, | ||
bool | forbid_edge_collapse_creating_non_manifold_split, | ||
bool | forbid_border_edge, | ||
bool | forbid_inner_edge, | ||
bool | forbid_non_triangular_incident_face_to_edge, | ||
bool | forbid_edges_that_are_adjacent_to_collapsed_edges, | ||
bool | forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices, | ||
bool | forbid_edges_that_are_incident_to_opposite_vertices_of_collapsed_edge_vertices, | ||
bool | forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices, | ||
const std::set< typename boost::graph_traits< FaceGraph >::edge_descriptor > & | external_forbidden_edges_to_collapse, | ||
const GeometryTraits & | gt | ||
) |
Function used for cleaning the topology of mesh g. This can be seen as a preprocessing step for some geometry processing algorithms.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>. |
[in] | g | The FaceGraph instance. |
[in] | is_g_2_manifold | Boolean to avoid costly checks when the input g is 2-manifold. If you do not know, chose false. |
[in] | forbid_non_satisfying_link_condition | Boolean to avoid edge non-satisfaying the link condition. |
[in] | forbid_non_manifold_edge | Boolean to avoid non-manifold edge. |
[in] | forbid_edge_collapse_creating_non_manifold_split | Boolean to avoid edge whose collapse creates a non-manifold vertex split. |
[in] | forbid_border_edge | Boolean to avoid border edge. |
[in] | forbid_inner_edge | Boolean to avoid inner edge. |
[in] | forbid_non_triangular_incident_face_to_edge | Boolean to avoid edge whose incident faces are not triangular. |
[in] | forbid_edges_that_are_adjacent_to_collapsed_edges | Boolean to avoid edge adjacent to already selected edges. |
[in] | forbid_edges_that_are_one_ring_edges_of_collapsed_edge_vertices | Boolean to avoid edge that is onto the one-ring of selected edges' vertices. |
[in] | forbid_edges_that_are_incident_to_opposite_vertices_of_collapsed_edge_vertices | Boolean to avoid edge that is incident to opposite vertices of the collapsed edge. |
[in] | forbid_edges_that_are_incident_to_one_ring_of_collapsed_edge_vertices | Boolean to avoid edge that is adjacent to edges onto the one-ring of selected edges' vertices. |
[in] | external_forbidden_edges_to_collapse | To take into account external constraints (e.g. to preserve particular edges). |
[in] | gt | The Geometry Traits object. |
Definition at line 67 of file edge_selector.hpp.
void FEVV::Filters::encode_connectivity_bitmask | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
std::list< Collapse_info< HalfedgeGraph, PointMap > > & | list_memory, | ||
std::list< bool > & | edge_bitmask, | ||
const FEVV::Comparator::Spanning_tree_vertex_edge_comparator< HalfedgeGraph, PointMap, Geometry > & | spanningtree | ||
) |
Encode vertex to split' one-ring edges to expand, for all collapsed edges in the order of the sorted list list_memory.
edge_bitmask | sorted list (according to st) but non-const reference due to Collapse_info updates |
spanningtree | out in computed st (needed to find the min edges) |
Definition at line 105 of file Connectivity_encoding.h.
double FEVV::Filters::fabs | ( | const v_Curv< HalfedgeGraph > & | input | ) |
double FEVV::Filters::fabs_cmdm | ( | const v_Curv_cmdm< HalfedgeGraph > & | input | ) |
void FEVV::Filters::find_vertices_to_forbid | ( | HalfedgeGraph & | g, |
vertex_descriptor | v, | ||
std::set< vertex_descriptor > & | forbidden_vertices | ||
) |
void FEVV::Filters::forbid_edges | ( | HalfedgeGraph & | g, |
vertex_descriptor | v, | ||
std::set< halfedge_descriptor > & | forbidden_edges | ||
) |
void FEVV::Filters::forbid_vertex | ( | HalfedgeGraph & | g, |
vertex_descriptor | v, | ||
std::set< halfedge_descriptor > & | forbidden_edges | ||
) |
void FEVV::Filters::geodes_principal_curvature_per_vert | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
VertexDescriptor | vd, | ||
double | pp_matrix_sum[3][3], | ||
double | radius, | ||
const GeometryTraits & | gt | ||
) |
Definition at line 169 of file curvature.hpp.
void FEVV::Filters::geodes_principal_curvature_per_vert_cmdm | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
VertexDescriptor | vd, | ||
double | pp_matrix_sum[3][3], | ||
double | radius, | ||
const GeometryTraits & | gt | ||
) |
Definition at line 181 of file curvature_cmdm.hpp.
double FEVV::Filters::get_max_bb_size | ( | const HalfedgeGraph & | g, |
PointMap & | pm | ||
) |
Gets the maximum size of the object bounding box. Use the default geometry traits of the mesh.
g | input mesh |
pm | point map |
Definition at line 78 of file get_max_bb_size.hpp.
double FEVV::Filters::get_max_bb_size | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
GeometryTraits & | gt | ||
) |
Gets the maximum size of the object bounding box.
g | input mesh |
pm | point map |
gt | geometry traits |
Definition at line 36 of file get_max_bb_size.hpp.
|
inline |
Measure time since starting time and reset starting time.
Starting | time |
Definition at line 47 of file generic_reader.hpp.
VertexColorMap FEVV::Filters::Get_VertexColorMap | ( | const HalfedgeGraph & | m_poly, |
FEVV::PMapsContainer & | pmaps, | ||
std::vector< double > & | init_grid_L, | ||
std::vector< double > & | grid_L, | ||
std::vector< std::vector< std::pair< double, double > > > & | init_grid_AB | ||
) |
Retrieve the color (RGB values) of each vertex of the mesh and transform it into the working color space LAB2000HL.
m_Poly | The Polyhedron. |
init_grid_L,grid_L,init_grid_AB | Grids used for the color transformation LAB -> LAB2000HL. \Return [out] _LAB2000HL_Vertexcolormap The vertex color map (in LAB2000HL space) of the mesh. |
Definition at line 355 of file cmdm.h.
void FEVV::Filters::homogeneous_transform | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
const Eigen::Matrix4d & | mat | ||
) |
Calculate the homogeneous transformation of the vertices coordinates using the provided 4x4 homogeneous transformation matrix.
[in] | g | The considered mesh |
[in] | pm | The Point Map holding the vertices geometry |
[in] | mat | The 4x4 homogeneous transformation matrix |
[in] | gt | The Geometry Traits used to perfom the geometrical calculations |
Definition at line 92 of file homogeneous_transform.hpp.
void FEVV::Filters::homogeneous_transform | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
const Eigen::Matrix4d & | mat, | ||
const GeometryTraits & | gt | ||
) |
Calculate the homogeneous transformation of the vertices coordinates using the provided 4x4 homogeneous transformation matrix.
[in] | g | The considered mesh |
[in] | pm | The Point Map holding the vertices geometry |
[in] | mat | The 4x4 homogeneous transformation matrix |
[in] | gt | The Geometry Traits used to perfom the geometrical calculations |
Definition at line 38 of file homogeneous_transform.hpp.
|
inline |
Function determining if mesh g is a pure triangular mesh.
FaceGraph | a Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization. |
g | The FaceGraph instance. |
Definition at line 29 of file is_triangle_mesh.hpp.
void FEVV::Filters::just_noticeable_distortion_filter | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
const VertexNormalMap & | v_nm, | ||
const FaceNormalMap & | f_nm, | ||
JNDMap & | jnd_m, | ||
const ScreenParam & | screen, | ||
const UserParam & | user, | ||
const SceneParam & | scene, | ||
const int | lights = 128 , |
||
bool | data_output = false , |
||
bool | use_random = true |
||
) |
Computes the Just Noticeable Distortion metric.
g | The mesh whose JND is computed |
pm | The Point map of g |
v_nm | The vertices normal map of g |
f_nm | The faces normal map of g |
jnd_m | The JND map of g (a map from vertex to double) |
screen | The screen parameters used (included in models/types.h) |
user | The user parameters used (included in models/types.h) |
scene | The scene parameters used (included in models/types.h) |
lights | The number of randomly generated lights around each vertex |
use_random | Should we use a randomness to generate the lights ? |
Definition at line 558 of file just_noticeable_distortion.hpp.
void FEVV::Filters::just_noticeable_distortion_filter | ( | const HalfedgeGraph & | halfedge_graph, |
PointMap & | point_map, | ||
const VertexNormalMap & | vertex_normal_map, | ||
const GeometryTraits & | geometry_traits, | ||
const FaceNormalMap & | face_normal_map, | ||
JNDMap & | jnd_map, | ||
const ScreenParam & | screen, | ||
const UserParam & | user, | ||
const SceneParam & | scene, | ||
const int | nb_light_sources, | ||
bool | data_output = false , |
||
bool | use_random = true |
||
) |
Computes the Just Noticeable Distortion metric.
halfedge_graph | The mesh whose JND is computed |
oint_map | The Point map of g |
vertex_normal_map | The vertices normal map of g |
geometry_traits | The geometry traits of g |
ace_map | The Face map of g |
face_normal_map | The faces normal map of g |
jnd_map | The JND map of g (a map from vertex to double) |
screen | The screen parameters used (included in models/types.h) |
user | The user parameters used (included in models/types.h) |
scene | The scene parameters used (included in models/types.h) |
nb_light_sources | The number of randomly generated lights around each vertex |
use_random | Should we use a randomness to generate the lights ? |
Definition at line 336 of file just_noticeable_distortion.hpp.
void FEVV::Filters::kmax_kmean | ( | const HalfedgeGraph & | mesh, |
CurvatureVertexMap & | curv_vmap, | ||
const double | coef | ||
) |
void FEVV::Filters::kmax_kmean_cmdm | ( | const HalfedgeGraph & | mesh, |
CurvatureVertexMap & | curv_vmap, | ||
const double | coef | ||
) |
|
inline |
Create a RGB LUT based on an HSV range. Default range creates a blue-cyan-green-yellow-red gradient.
color_in_0_255 | if true the RGB values are in [0;255] else they are in [0;1] |
colors_nbr | number of different colors in the LUT |
h1 | 1st bound of the H range |
h2 | 2nd bound of the H range |
Definition at line 41 of file color_mesh.h.
|
inline |
Create and return a 256x256 "no tex" image.
Definition at line 33 of file mesh_from_vector_representation.hpp.
void FEVV::Filters::matching_multires_init | ( | const HalfedgeGraph & | m_poly_degrad, |
MSDM2Map & | msdm2m_degrad, | ||
MSDM2NearestMap & | msdm2nm_degrad, | ||
TagMap & | tag_map, | ||
const PointMap & | pm_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
CGAL::SM_Face_index * | tab_matched_facet | ||
) |
Initialize the matching process.
m_PolyDegrad | The first Polyhedron. | |
m_PolyOriginal | The second Polyhedron. | |
[out] | _TabMatchedFacet | Facets from m_PolyOriginal on which vertices from m_PolyDegrad are projected |
Definition at line 224 of file msdm2.h.
void FEVV::Filters::matching_multires_init_cmdm | ( | const HalfedgeGraph & | m_poly_degrad, |
CMDMMap & | cmdm_degrad, | ||
CMDMNearestMap & | cmdmm_degrad, | ||
TagMap & | tag_map, | ||
const PointMap & | pm_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
CGAL::SM_Face_index * | tab_matched_facet | ||
) |
Initialize the matching process.
m_PolyDegrad | The first Polyhedron. | |
m_PolyOriginal | The second Polyhedron. | |
[out] | _TabMatchedFacet | Facets from m_PolyOriginal on which vertices from m_PolyDegrad are projected |
Definition at line 419 of file cmdm.h.
void FEVV::Filters::matching_multires_update | ( | const HalfedgeGraph & | m_poly_degrad, |
const HalfedgeGraph & | m_poly_orig, | ||
CGALPoint * | tab_pm_orig, | ||
CGALPoint * | tab_cmdmm_degrad, | ||
const CurvatureVertexMap | curv_orig, | ||
const VertexColorMap | vcm_orig, | ||
CMDMCurvatureMatchMap | curvmatch_pmap, | ||
VertexColorMap | colmatch_pmap, | ||
CGAL::SM_Face_index * | tab_matched_facet | ||
) |
Updates the matching process.
m_PolyDegrad | The first Polyhedron. |
_TabMatchedFacet | Facets from m_PolyOriginal on which vertices from m_PolyDegrad are projected |
calculation of the nearest point curvature value using vertices of the Nearest triangle
Definition at line 797 of file cmdm.h.
void FEVV::Filters::matching_multires_update | ( | const HalfedgeGraph & | m_poly_degrad, |
const PointMap & | pm_degr, | ||
const HalfedgeGraph & | m_poly_orig, | ||
const PointMap & | pm_orig, | ||
const CurvatureVertexMap | curv_orig, | ||
MSMD2CurvatureMatchMap | curvmatch_pmap, | ||
CGAL::SM_Face_index * | tab_matched_facet | ||
) |
Updates the matching process.
m_PolyDegrad | The first Polyhedron. |
_TabMatchedFacet | Facets from m_PolyOriginal on which vertices from m_PolyDegrad are projected |
calculation of the nearest point curvature value using vertices of the Nearest triangle
Definition at line 471 of file msdm2.h.
void FEVV::Filters::mesh_from_vector_representation | ( | const HalfedgeGraph & | g, |
const FEVV::PMapsContainer & | pmaps, | ||
unsigned int & | dup_v_nbr, | ||
FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > & | mvr, | ||
MeshFromVectorReprParameters< HalfedgeGraph > const & | params = MeshFromVectorReprParameters< HalfedgeGraph >() |
||
) |
Build the mesh from the given vector representation.
g | the output mesh |
pmaps | the output property maps bag of the mesh |
dup_v_nbr | number of duplicated vertices of the mesh |
mvr | the vector representation structure (input) |
params | the named parameters |
Definition at line 863 of file mesh_from_vector_representation.hpp.
void FEVV::Filters::mesh_from_vector_representation | ( | HalfedgeGraph & | g, |
FEVV::PMapsContainer & | pmaps, | ||
unsigned int & | dup_v_nbr, | ||
FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > & | mvr, | ||
MeshFromVectorReprParameters< HalfedgeGraph > const & | params, | ||
const GeometryTraits & | |||
) |
Build the mesh from the given vector representation.
g | the output mesh |
pmaps | the output property maps bag of the mesh |
dup_v_nbr | number of duplicated vertices of the mesh |
mvr | the vector representation structure (input) |
params | the named parameters |
gt | the geometry traits to use |
Definition at line 142 of file mesh_from_vector_representation.hpp.
void FEVV::Filters::mesh_to_vector_representation | ( | const FaceListGraph & | g, |
const FEVV::PMapsContainer & | pmaps, | ||
FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > & | mvr | ||
) |
Build the vector representation of the mesh.
g | mesh |
pmaps | property maps bag of the mesh |
mvr | the vector representation structure to fill (output) |
Definition at line 293 of file mesh_to_vector_representation.hpp.
void FEVV::Filters::mesh_to_vector_representation | ( | const FaceListGraph & | g, |
const FEVV::PMapsContainer & | pmaps, | ||
FEVV::Types::MVR< coordP_type, coordN_type, coordT_type, coordC_type, index_type > & | mvr, | ||
const GeometryTraits & | |||
) |
Build the vector representation of the mesh.
g | mesh |
pmaps | property maps bag of the mesh |
mvr | the vector representation structure to fill (output) |
gt | the geometry traits to use |
Definition at line 44 of file mesh_to_vector_representation.hpp.
void FEVV::Filters::normalize_vector_map | ( | const Iterator & | begin, |
const Iterator & | end, | ||
PropertyMap & | prop_map, | ||
const GeometryTraits & | gt | ||
) |
Normalize each vector of a property map, one by one. Generic implementation.
begin | Begin iterator of the key of the property map |
end | End iterator of the key of the property map |
prop_map | Property map containing vectors |
Definition at line 32 of file normalize_vector_map.h.
void FEVV::Filters::normalize_vector_map_edges | ( | const HalfedgeGraph & | g, |
PropertyMap & | prop_map | ||
) |
Normalize each vector of the edge property map.
g | Mesh with the property map |
prop_map | Property map of vectors |
Definition at line 95 of file normalize_vector_map.h.
void FEVV::Filters::normalize_vector_map_faces | ( | const HalfedgeGraph & | g, |
PropertyMap & | prop_map | ||
) |
Normalize each vector of the face property map.
g | Mesh with the property map |
prop_map | Property map of vectors |
Definition at line 75 of file normalize_vector_map.h.
void FEVV::Filters::normalize_vector_map_halfedges | ( | const HalfedgeGraph & | g, |
PropertyMap & | prop_map | ||
) |
Normalize each vector of the halfedge property map.
g | Mesh with the property map |
prop_map | Property map of vectors |
Definition at line 115 of file normalize_vector_map.h.
void FEVV::Filters::normalize_vector_map_vertices | ( | const HalfedgeGraph & | g, |
PropertyMap & | prop_map | ||
) |
Normalize each vector of the vertex property map.
g | Mesh with the property map |
prop_map | Property map of vectors |
Definition at line 55 of file normalize_vector_map.h.
void FEVV::Filters::point_cloud_curvature | ( | const PointCloud & | pc, |
const PointMap & | pm, | ||
unsigned int | k, | ||
double | radius, | ||
VertexCurvatureMap & | v_curvm, | ||
VertexColorMap & | v_cm | ||
) |
Compute the curvature for each point of the point cloud. Helper function to simplify the call to the filter.
pc | the point cloud |
pm | the point map of the point cloud |
k | number of nearest neighbors |
v_curvm | a vertex property map to store the curvature value (double) of each vertex |
v_cm | a vertex color map to store the curvature as a color |
Definition at line 276 of file point_cloud_curvature.hpp.
void FEVV::Filters::point_cloud_curvature | ( | const PointCloud & | pc, |
const PointMap & | pm, | ||
unsigned int | k, | ||
double | radius, | ||
VertexCurvatureMap & | v_curvm, | ||
VertexColorMap & | v_cm, | ||
const GeometryTraits & | gt | ||
) |
Compute the curvature for each point of the point cloud using the nearest neighbors.
pc | the point cloud |
pm | the point map of the point cloud |
k | number of nearest neighbors to use for a kNN search ; if k = 0, a radius search is done |
radius | radius to use for the radius search ; ignored if k != 0 |
v_curvm | a vertex property map to store the curvature value (double) of each vertex |
v_cm | a vertex color map to store the curvature as a color |
gt | the geometry traits |
Definition at line 212 of file point_cloud_curvature.hpp.
void FEVV::Filters::preprocess_mesh | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
FEVV::Filters::Uniform_quantization< HalfedgeGraph, PointMap > & | pq, | ||
bool | allow_duplicates = false |
||
) |
Isolated vertices and isolated edges are removed, then vertex positions are quantized, and eventually, vertex duplicates are moved until there is no more vertex position duplicate. This function implements line 1 of Algorithm 1.
[in,out] | g | Halfedge graph that is processed. |
[in,out] | pm | Pointmap associated with g. The input positions are not quantized, while the ouput positions are. |
[in,out] | pq | The Uniform_quantization object to apply a XYZ uniform quantization to points in pm. |
[in] | allow_duplicates | The boolean set to false to move vertex duplicates until there is no more vertex position duplicate. |
Definition at line 59 of file progressive_compression_filter.hpp.
void FEVV::Filters::principal_curvature_per_vert | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
VertexDescriptor | vd, | ||
double | pp_matrix_sum[3][3], | ||
const GeometryTraits & | gt | ||
) |
Definition at line 91 of file curvature.hpp.
void FEVV::Filters::principal_curvature_per_vert_cmdm | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
const FaceNormalMap & | f_nm, | ||
VertexDescriptor | vd, | ||
double | pp_matrix_sum[3][3], | ||
const GeometryTraits & | gt | ||
) |
Definition at line 92 of file curvature_cmdm.hpp.
void FEVV::Filters::print_face_normals | ( | const HalfedgeGraph & | g, |
NormalMap | nm | ||
) |
Print all faces normals.
g | mesh |
nm | normal map of the mesh |
Definition at line 28 of file print_face_normals.hpp.
void FEVV::Filters::print_points | ( | const HalfedgeGraph & | g, |
PointMap | pm | ||
) |
Print all vertices coordinates.
g | mesh |
pm | point map of the mesh |
Definition at line 28 of file print_points.hpp.
double FEVV::Filters::process_CMDM_multires | ( | const HalfedgeGraph & | m_poly_degrad, |
const PointMap & | pm_degrad, | ||
const FaceNormalMap & | fnm_degrad, | ||
FEVV::PMapsContainer & | pmaps_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
const PointMap & | pm_original, | ||
const FaceNormalMap & | fnm_original, | ||
FEVV::PMapsContainer & | pmaps_original, | ||
const int | nb_level, | ||
VertexCMDMMap & | cmdm_pmap, | ||
const double | maxdim, | ||
double & | CMDM_value | ||
) |
double FEVV::Filters::process_CMDM_multires | ( | const HalfedgeGraph & | m_poly_degrad, |
const PointMap & | pm_degrad, | ||
const FaceNormalMap & | fnm_degrad, | ||
FEVV::PMapsContainer & | pmaps_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
const PointMap & | pm_original, | ||
const FaceNormalMap & | fnm_original, | ||
FEVV::PMapsContainer & | pmaps_original, | ||
const int | nb_level, | ||
VertexCMDMMap & | cmdm_pmap, | ||
double & | CMDM_value | ||
) |
Computes the multiscale CMDM metric.
m_PolyDegrad | The first Polyhedron. | |
m_PolyOriginal | The second Polyhedron. | |
NbLevel | Number of scales used | |
maxdim | The max dimension of the Bounding Box Length. | |
[out] | CMDMValue | The computed value of the CMDM metric |
Definition at line 1211 of file cmdm.h.
void FEVV::Filters::process_cmdm_per_vertex | ( | const HalfedgeGraph & | m_degr, |
CGALPoint * | tab_pm_degr, | ||
const TagMap & | tags_pmap, | ||
CGALPoint * | tab_nearest_pmap, | ||
const CurvatureVertexMap & | curv_pmap_degr, | ||
const VertexColorMap & | col_pmap_degr, | ||
const CMDMCurvatureMatchMap & | curvmatch_pmap, | ||
const VertexColorMap & | colmatch_pmap, | ||
const VertexIterator & | p_vertex, | ||
double | radius, | ||
std::vector< CGALPoint > & | tab_point1, | ||
std::vector< CGALPoint > & | tab_point2, | ||
std::vector< double > & | tab_distance1, | ||
std::vector< double > & | tab_distance2, | ||
std::vector< std::array< double, 3 > > & | tab_color1, | ||
std::vector< std::array< double, 3 > > & | tab_color2 | ||
) |
Computes the local neighborhoods.
pVertex | The considered vertex | |
radius | radius of the neighborhood | |
[out] | TabPoint1 | 3D points from the neighborhoodof pVertex regarding the first polyhedron |
[out] | TabPoint2 | 3D points from the neighborhood of pVertex regarding the second polyhedron |
[out] | TabDistance1 | Curvature values from the neighborhood of pVertex regarding the first polyhedron |
[out] | TabDistance2 | Curvature values from the neighborhood of pVertex regarding the second polyhedron |
[out] | TabColor1 | Color values (L,A,B) from the neighborhood of pVertex regarding the first polyhedron |
[out] | TabColor2 | Color values (L,A,B) from the neighborhood of pVertex regarding the second polyhedron |
Definition at line 984 of file cmdm.h.
double FEVV::Filters::process_msdm2_multires | ( | const HalfedgeGraph & | m_poly_degrad, |
const PointMap & | pm_degrad, | ||
const FaceNormalMap & | fnm_degrad, | ||
FEVV::PMapsContainer & | pmaps_degrad, | ||
const GeometryTraits & | gt_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
const PointMap & | pm_original, | ||
const FaceNormalMap & | fnm_original, | ||
FEVV::PMapsContainer & | , | ||
const GeometryTraits & | , | ||
const int | nb_level, | ||
VertexMSDM2Map & | msdm2_pmap, | ||
const double | maxdim, | ||
double & | msdm2_value | ||
) |
double FEVV::Filters::process_msdm2_multires | ( | const HalfedgeGraph & | m_poly_degrad, |
const PointMap & | pm_degrad, | ||
const FaceNormalMap & | fnm_degrad, | ||
FEVV::PMapsContainer & | pmaps_degrad, | ||
const HalfedgeGraph & | m_poly_original, | ||
const PointMap & | pm_original, | ||
const FaceNormalMap & | fnm_original, | ||
FEVV::PMapsContainer & | pmaps_original, | ||
const int | nb_level, | ||
VertexMSDM2Map & | msdm2_pmap, | ||
double & | msdm2_value | ||
) |
Computes the multiscale MSDM2 metric.
m_PolyDegrad | The first Polyhedron. | |
m_PolyOriginal | The second Polyhedron. | |
NbLevel | Number of scales used | |
maxdim | The max dimension of the Bounding Box Length. | |
[out] | MSDM2Value | The computed value of the MSDM2 metric |
Definition at line 742 of file msdm2.h.
void FEVV::Filters::process_msdm2_per_vertex | ( | const HalfedgeGraph & | m_degr, |
const PointMap & | pm_degr, | ||
const TagMap & | tags_pmap, | ||
const CurvatureVertexMap & | curv_pmap, | ||
const MSDM2NearestMap & | nearest_pmap, | ||
const MSMD2CurvatureMatchMap & | curvmatch_pmap, | ||
const GeometryTraits & | , | ||
const HalfedgeGraph & | , | ||
const PointMap & | , | ||
const VertexIterator & | p_vertex, | ||
double | radius, | ||
std::vector< double > & | tab_distance1, | ||
std::vector< double > & | tab_distance2, | ||
std::vector< CGALPoint > & | tab_point1, | ||
std::vector< CGALPoint > & | tab_point2 | ||
) |
Computes the local neighborhoods.
pVertex | The considered vertex | |
radius | radius of the neighborhood | |
[out] | TabDistance1 | Curvature values from the neighborhood of pVertex regarding the first polyhedron |
[out] | TabDistance2 | Curvature values from the neighborhood of pVertex regarding the second polyhedron |
[out] | TabPoint1 | 3D points from the neighborhoodof pVertex regarding the first polyhedron |
[out] | TabPoint2 | 3D points from the neighborhood of pVertex regarding the second polyhedron |
Definition at line 581 of file msdm2.h.
void FEVV::Filters::progressive_compression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
FEVV::Filters::Uniform_quantization< HalfedgeGraph, PointMap > & | pq, | ||
VertexColorMap & | v_cm, | ||
EdgeColorMap & | e_cm, | ||
const GeometryTraits & | gt, | ||
FEVV::Filters::Error_metric< HalfedgeGraph, PointMap > * | EM, | ||
const FEVV::Filters::Kept_position< HalfedgeGraph, PointMap > * | KP, | ||
FEVV::Filters::Predictor< HalfedgeGraph, PointMap > * | predict, | ||
int | nb_q_bits, | ||
int | nb_max_batches, | ||
int | nb_min_vertices, | ||
FEVV::Filters::BATCH_CONDITION | batch_condition, | ||
draco::EncoderBuffer & | buffer, | ||
const std::string & | measure_path, | ||
bool | preprocess = true , |
||
bool | dequantiz = false , |
||
bool | save_preprocess = false , |
||
const std::string & | output_file_path_save_preprocess = "" , |
||
bool | allow_duplicates = false |
||
) |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data into a buffer. This function implements Algorithm 1 (Progressive encoder).
[in,out] | g | Halfedge graph to encode. |
[in,out] | pm | Pointmap associated with g (vertex positions). |
[in,out] | pq | The Uniform_quantization object to apply a XYZ uniform quantization to points in pm. |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the encoding. |
[out] | e_cm | Empty edge color map associated with g, used to debug topological issues during the encoding. |
[in] | gt | The geometry trait object. Needed to encode the base mesh. |
[in,out] | EM | The metric type, mutable because it calls non const methods. |
[in] | KP | The geometric position type. |
[in,out] | predict | The geometric predictor, mutable because it calls non const methods. |
[out] | buffer | Output encoded draco buffer. |
[in] | measure_path | The measure path to save information such as distortion. |
[in] | nb_max_batches | The maximum number of simplification batch to apply. |
[in] | nb_min_vertices | The minimum number of vertices to reach in the base mesh. The obtained coarse mesh will have a number of vertices less or equal to nb_min_vertices, because the condition is checked after a simplification batch has been applied. Note that the nb_max_batches may stop the decimation before the condition on nb_min_vertices is satisfied. Therefore, to make sure the the condition on nb_min_vertices is satisfied, one should set a sufficiently high nb_max_batches. |
[in] | batch_condition | The batch stopping criterion for its edge collapses. |
[in] | preprocess | A boolean set to true to apply preprocesses. |
[in] | dequantiz | A boolean set to true to dequantize coordinates just after writting the compressed mesh into a file. |
[in] | save_preprocess | A boolean set to true to save the preprocessed mesh (usefull for unit tests). Note that when preprocess is false the preprocessed mesh and the input mesh are the same. |
[in] | output_file_path_save_preprocess | A path to save the preprocessed mesh. |
pm | Mesh to encode |
pq | Vertex positions property map |
e_cm | Vertex colors property map (debug) |
gt | Edge colors property map (debug) |
EM | Geometry trait object |
KP | Local metric type |
predict | Geometric position type |
nb_q_bits | Geometric predictor |
nb_max_batches | Number of quantization bits |
buffer | batch stopping criterion for its edge collapses |
measure_path | Output encoded buffer |
dequantiz | true to remove isolated vertices, isolated edges and vertex duplicates (several compression steps cannot handle these configurations) |
save_preprocess | true to dequantize coordinates just after writting the compressed mesh into a file mainly for display purpose |
Definition at line 126 of file progressive_compression_filter.hpp.
void FEVV::Filters::progressive_compression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
VertexColorMap & | v_cm, | ||
EdgeColorMap & | e_cm, | ||
const FEVV::Filters::Parameters & | params, | ||
const std::string & | output_path, | ||
std::string & | binary_path, | ||
int | nb_max_batches, | ||
int | nb_min_vertices, | ||
FEVV::Filters::BATCH_CONDITION | batch_condition, | ||
bool | preprocess = true , |
||
bool | dequantiz = false , |
||
bool | save_preprocess = false , |
||
const std::string & | output_file_path_save_preprocess = "" |
||
) |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data to a binary file. The geometry trait object is set automatically (syntactic sugar).
[in,out] | g | Halfedge graph to encode. |
[in,out] | pm | Pointmap associated with g (vertex positions). |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the encoding. |
[out] | e_cm | Empty edge color map associated with g, used to debug topological issues during the encoding. |
[in] | params | The progressive compression parameters. |
[in] | output_path | The main path to set the measure_path and the binary_path (only when set to "" for the latter). |
[in,out] | binary_path | The path to write the compressed mesh file. If not set by the user (=""), then binary_path is set to output_path+predictor+metric+keptposition+quantization.bin |
[in] | nb_max_batches | The maximum number of simplification batch to apply. |
[in] | nb_min_vertices | The minimum number of vertices to reach in the base mesh. The obtained coarse mesh will have a number of vertices less or equal to nb_min_vertices, because the condition is checked after a simplification batch has been applied. Note that the nb_max_batches may stop the decimation before the condition on nb_min_vertices is satisfied. Therefore, to make sure the the condition on nb_min_vertices is satisfied, one should set a sufficiently high nb_max_batches. |
[in] | batch_condition | The batch stopping criterion for its edge collapses. |
[in] | preprocess | A boolean set to true to apply preprocesses. |
[in] | dequantiz | A boolean set to true to dequantize coordinates just after writting the compressed mesh into a file. |
[in] | save_preprocess | A boolean set to true to save the preprocessed mesh (usefull for unit tests). Note that when preprocess is false the preprocessed mesh and the input mesh are the same. |
[in] | output_file_path_save_preprocess | A path to save the preprocessed mesh. |
pm | input mesh |
v_cm | its vertex position map |
e_cm | its vertex color map (debug) |
params | its edge color map (debug) |
output_path | input progressive compression param |
preprocess | batch stopping criterion for its edge collapses |
Definition at line 639 of file progressive_compression_filter.hpp.
void FEVV::Filters::progressive_compression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
VertexColorMap & | v_cm, | ||
EdgeColorMap & | e_cm, | ||
const GeometryTraits & | gt, | ||
const FEVV::Filters::Parameters & | params, | ||
int | nb_max_batches, | ||
int | nb_min_vertices, | ||
FEVV::Filters::BATCH_CONDITION | batch_condition, | ||
const std::string & | output_path, | ||
std::string & | binary_path, | ||
bool | preprocess = true , |
||
bool | dequantiz = false , |
||
bool | save_preprocess = false , |
||
const std::string & | output_file_path_save_preprocess = "" |
||
) |
Takes a mesh g, applies batches of simplification until either the number of max batches or the minimum number of vertices is reached. After that, it encodes the coarse mesh and the refinement data to a binary file.
[in,out] | g | Halfedge graph to encode. |
[in,out] | pm | Pointmap associated with g (vertex positions). |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the encoding. |
[out] | e_cm | Empty edge color map associated with g, used to debug topological issues during the encoding. |
[in] | gt | The geometry trait object. Needed to encode the base mesh. |
[in] | params | The progressive compression parameters (metric type, position type, prediction type, nb_q_bits, allow_duplicates). |
[in] | nb_max_batches | The maximum number of simplification batch to apply. |
[in] | nb_min_vertices | The minimum number of vertices to reach in the base mesh. The obtained coarse mesh will have a number of vertices less or equal to nb_min_vertices, because the condition is checked after a simplification batch has been applied. Note that the nb_max_batches may stop the decimation before the condition on nb_min_vertices is satisfied. Therefore, to make sure the the condition on nb_min_vertices is satisfied, one should set a sufficiently high nb_max_batches. |
[in] | batch_condition | The batch stopping criterion for its edge collapses. |
[in] | output_path | The main path to set the measure_path and the binary_path (only when set to "" for the latter). |
[in,out] | binary_path | The path to write the compressed mesh file. If not set by the user (=""), then binary_path is set to output_path+predictor+metric+keptposition+quantization.bin |
[in] | preprocess | A boolean set to true to apply preprocesses. |
[in] | dequantiz | A boolean set to true to dequantize coordinates just after writting the compressed mesh into a file. |
[in] | save_preprocess | A boolean set to true to save the preprocessed mesh (usefull for unit tests). Note that when preprocess is false the preprocessed mesh and the input mesh are the same. |
[in] | output_file_path_save_preprocess | A path to save the preprocessed mesh. |
pm | Mesh to encode |
v_cm | Vertex positions property map |
e_cm | Vertex colors property map (debug) |
gt | Edge colors property map (debug) |
params | Geometry trait object |
nb_max_batches | Progressive compression parameters |
output_path | batch stopping criterion for its edge collapses |
binary_path | needed by paths automatically set (e.g. measure_path, binary_path when set to "", etc.) |
preprocess | If the binary path is not set by the user, it will automatically set the path to output_path+predictor+metric+keptposition+quantization.bin |
dequantiz | true to remove isolated vertices, isolated edges and vertex duplicates (several compression steps cannot handle these configurations) |
save_preprocess | true to dequantize coordinates just after writting the compressed mesh into a file mainly for display purpose |
Definition at line 386 of file progressive_compression_filter.hpp.
void FEVV::Filters::progressive_decompression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
VertexColorMap & | v_cm, | ||
const GeometryTraits & | , | ||
draco::DecoderBuffer & | buffer, | ||
bool | dequantize = true , |
||
unsigned int | nb_max_batches = 10000 |
||
) |
Takes a buffer as an input, will decode the compression settings, the coarse mesh and refine the mesh until the end of buffer is reached. This function implements the Algorithm 2 (Progressive decoder).
[out] | g | Empty halfedge graph that is used to reconstruct the decoded mesh topology. |
[out] | pm | Empty pointmap associated with g that is used to reconstruct the decoded mesh geometry (vertex positions). |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the decoding. |
[in] | gt | The geometry trait object. Used to automatically find the GeometryTraits type. |
[in,out] | buffer | The draco buffer to decode. Not a const param because of call to non-const draco methods such as Decode. |
[in] | dequantize | True to dequantize the vertex positions at the end of the decompression, else vertex positions remain quantized, used to test (without dequantization). |
[in] | nb_max_batches | A positive integer value to stop the progressive decompression after having decompressed at maximum nb_max_batches batches. |
Definition at line 67 of file progressive_decompression_filter.hpp.
void FEVV::Filters::progressive_decompression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
VertexColorMap & | v_cm, | ||
const GeometryTraits & | gt, | ||
const std::string & | input_file_path, | ||
bool | dequantize = true , |
||
unsigned int | nb_max_batches = 10000 |
||
) |
Takes a binary file as an input, will decode the compression
settings, the coarse mesh and refine the mesh until the end of file is reached.
[out] | g | Empty halfedge graph that is used to reconstruct the decoded mesh topology. |
[out] | pm | Empty pointmap associated with g that is used to reconstruct the decoded mesh geometry (vertex positions). |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the decoding. |
[in] | gt | The geometry trait object. Used to automatically find the GeometryTraits type. |
[in] | input_file_path | The binary file full name to read and decode. |
[in] | dequantize | True to dequantize the vertex positions at the end of the decompression, else vertex positions remain quantized, used to test (without dequantization). |
[in] | nb_max_batches | A positive integer value to stop the progressive decompression after having decompressed at maximum nb_max_batches batches. |
Definition at line 202 of file progressive_decompression_filter.hpp.
void FEVV::Filters::progressive_decompression_filter | ( | HalfedgeGraph & | g, |
PointMap & | pm, | ||
VertexColorMap & | v_cm, | ||
const std::string & | input_file_path, | ||
bool | dequantize = true , |
||
unsigned int | nb_max_batches = 10000 |
||
) |
Takes a binary file as an input, will decode the compression settings, the coarse mesh and refine the mesh until the end of file is reached. The geometry trait object is set automatically (syntactic sugar).
[out] | g | Empty halfedge graph that is used to reconstruct the decoded mesh topology. |
[out] | pm | Empty pointmap associated with g that is used to reconstruct the decoded mesh geometry (vertex positions). |
[out] | v_cm | Empty vertex color map associated with g, used to debug topological issues during the decoding. |
[in] | input_file_path | The binary file full name to read and decode. |
[in] | dequantize | True to dequantize the vertex positions at the end of the decompression, else vertex positions remain quantized, used to test (without dequantization). |
[in] | nb_max_batches | A positive integer value to stop the progressive decompression after having decompressed at maximum nb_max_batches batches. |
Definition at line 263 of file progressive_decompression_filter.hpp.
|
inline |
Load mesh from file.
filename | name of the input mesh file |
g | mesh object to store the mesh being read |
pmaps | property maps bag to store the properties of the mesh being read |
Definition at line 110 of file cgal_point_set_reader.hpp.
|
inline |
Load mesh from file.
filename | name of the input mesh file |
g | mesh object to store the mesh being read |
pmaps | property maps bag to store the properties of the mesh being read |
Definition at line 196 of file pcl_point_cloud_reader.hpp.
void FEVV::Filters::read_mesh | ( | const std::string & | filename, |
HalfedgeGraph & | g, | ||
PMapsContainer & | pmaps, | ||
bool | only_pts = false |
||
) |
Load mesh from file.
filename | name of the input mesh file |
g | mesh object to store the mesh being read |
pmaps | property maps bag to store the properties of the mesh being read |
Definition at line 279 of file generic_reader.hpp.
void FEVV::Filters::read_mesh | ( | const std::string & | filename, |
HalfedgeGraph & | g, | ||
PMapsContainer & | pmaps, | ||
const GeometryTraits & | gt, | ||
bool | only_pts | ||
) |
Load mesh from file.
filename | name of the input mesh file |
g | mesh object to store the mesh being read |
pmaps | property maps bag to store the properties of the mesh being read |
gt | the geometry traits to use |
Definition at line 73 of file generic_reader.hpp.
void FEVV::Filters::reposition_vertices | ( | const PropertyGraph & | g, |
PointMap | pm, | ||
const NewPointMap & | smoothed_pm | ||
) |
Definition at line 84 of file reposition_vertices.hpp.
void FEVV::Filters::reposition_vertices | ( | const PropertyGraph & | g, |
PointMap | pm, | ||
const NewPointMap & | smoothed_pm, | ||
const GeometryTraits & | |||
) |
Apply new vertex positions to vertex position property map.
PropertyGraph | a Mesh type that provides a Model of the PropertyGraph Concept through a boost::graph_traits<> specialization. |
PointMap | A modifiable point map to manage vertex positions. |
NewPointMap | A modifiable point map to manage vertex' position proposals. |
GeometryTraits | The geometric kernel when available. This is defaulted to FEVV::Geometry_traits<PropertyGraph>. |
g | The PropertyGraph instance from which the vertices will be taken. |
pm | The point map which associate a vertex descriptor with a vertex position. |
smoothed_pm | The point map used to replace the vertex positions in pm. |
gt | The geometry trait object. |
Definition at line 44 of file reposition_vertices.hpp.
|
static |
Remove/resolve similar edges for the given mesh g.
MutableFaceIncidentGraph | a Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization. |
g | The MutableFaceIncidentGraph instance. |
Definition at line 29 of file resolve_similar_edges.hpp.
|
static |
Remove/resolve similar faces for the given mesh g.
MutableFaceIncidentGraph | a Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization. |
g | The MutableFaceIncidentGraph instance. |
take_into_account_face_rientation | A boolean to tell if the similar faces must have the same orientation. |
Definition at line 31 of file resolve_similar_faces.hpp.
void FEVV::Filters::translate | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
typename GeometryTraits::Scalar | offset_x, | ||
typename GeometryTraits::Scalar | offset_y, | ||
typename GeometryTraits::Scalar | offset_z | ||
) |
Translate a mesh.
g | input mesh |
pm | output point map |
offsetX | x translation offset |
offsetY | y translation offset |
offsetZ | z translation offset |
Definition at line 77 of file translation.hpp.
void FEVV::Filters::translate | ( | const HalfedgeGraph & | g, |
PointMap & | pm, | ||
typename GeometryTraits::Scalar | offset_x, | ||
typename GeometryTraits::Scalar | offset_y, | ||
typename GeometryTraits::Scalar | offset_z, | ||
const GeometryTraits & | gt | ||
) |
Translate a mesh.
g | input mesh |
pm | output point map |
offsetX | x translation offset |
offsetY | y translation offset |
offsetZ | z translation offset |
gt | the geometry traits to use |
Definition at line 38 of file translation.hpp.
double FEVV::Filters::triangle_area | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
typename boost::graph_traits< HalfedgeGraph >::face_descriptor | fd, | ||
const GeometryTraits & | gt | ||
) |
Definition at line 63 of file curvature.hpp.
double FEVV::Filters::triangle_area_cmdm | ( | const HalfedgeGraph & | g, |
const PointMap & | pm, | ||
typename boost::graph_traits< HalfedgeGraph >::face_descriptor | fd, | ||
const GeometryTraits & | gt | ||
) |
Definition at line 63 of file curvature_cmdm.hpp.
|
inline |
Write mesh to file.
filename | name of the output mesh file |
g | mesh to write to file |
pmaps | property maps bag of the mesh |
Definition at line 42 of file cgal_point_set_writer.hpp.
|
inline |
Write mesh to file.
filename | name of the output mesh file |
g | mesh to write to file |
pmaps | property maps bag of the mesh |
Definition at line 39 of file pcl_point_cloud_writer.hpp.
void FEVV::Filters::write_mesh | ( | const std::string & | filename, |
HalfedgeGraph & | g, | ||
PMapsContainer & | pmaps | ||
) |
Write mesh to file.
filename | name of the output mesh file |
g | mesh to write to file |
pmaps | property maps bag of the mesh |
Definition at line 174 of file generic_writer.hpp.
void FEVV::Filters::write_mesh | ( | const std::string & | filename, |
HalfedgeGraph & | g, | ||
PMapsContainer & | pmaps, | ||
const GeometryTraits & | gt | ||
) |
Write mesh to file.
filename | name of the output mesh file |
g | mesh to write to file |
pmaps | property maps bag of the mesh |
gt | the geometry traits to use |
Definition at line 48 of file generic_writer.hpp.