Graphite  Version 3
An experimental 3D geometry processing program
OGF::MeshGrobSurfaceCommands Class Reference

Commands that manipulate surface meshes. More...

#include <OGF/mesh/commands/mesh_grob_surface_commands.h>

Inheritance diagram for OGF::MeshGrobSurfaceCommands:
OGF::MeshGrobCommands OGF::Commands OGF::Interface OGF::Object GEO::Counted

Public Types

enum  Parameterizer { LSCM , SpectralLSCM , ABFplusplus }
 

Public Member Functions

 MeshGrobSurfaceCommands ()
 MeshGrobSurfaceCommands constructor.
 
 ~MeshGrobSurfaceCommands () override
 MeshGrobSurfaceCommands destructor.
 
void merge_vertices (double epsilon=0.0)
 Merges vertices that are at the same location or within tolerance. More...
 
void expand_border (double margin=0.05)
 Preprocessing for remesh_feature_sensitive. More...
 
void fill_holes (index_t max_nb_vertices=0)
 Fills the holes of the surface. More...
 
void fix_facets_orientation ()
 Fixes facets orientation based on computed visibility. More...
 
void remove_invisible_facets (double min_visibility=0.005)
 Removes all facets that have visibility smaller than a given threshold. More...
 
void remesh_smooth (const NewMeshGrobName &remesh_name="remesh", unsigned int nb_points=30000, double tri_shape_adapt=1.0, double tri_size_adapt=0.0, bool adjust=true, double adjust_max_edge_distance=0.5, unsigned int normal_iter=3, unsigned int Lloyd_iter=5, unsigned int Newton_iter=30, unsigned int Newton_m=7, unsigned int LFS_samples=10000)
 Remeshes a (smooth) surface. More...
 
void remesh_feature_sensitive (const NewMeshGrobName &surface_name="remesh", unsigned int nb_points=30000, bool refine=false, double max_dist=0.5, double normal_anisotropy=5.0, unsigned int nb_Lloyd_iter=5, unsigned int nb_Newton_iter=30, unsigned int nb_LpCVT_iter=10, unsigned int Newton_m=7, bool RVC_centroids=false)
 Remeshes a surface that has sharp features. More...
 
void remesh_quad_dominant (const NewMeshGrobName &surface_name="remesh", double rel_edge_len=1.0, bool sharp_features=true, bool optimize_parity=false, double max_scaling_corr=1.0)
 Generates a quad-dominant mesh. More...
 
MeshGrobcompute_union (const MeshGrobName &other, const NewMeshGrobName &result="result", bool pre_process=false, bool post_process=false)
 Computes the union between two meshes. More...
 
MeshGrobcompute_intersection (const MeshGrobName &other, const NewMeshGrobName &result="result", bool pre_process=false, bool post_process=false)
 Computes the intersection between two meshes. More...
 
MeshGrobcompute_difference (const MeshGrobName &other, const NewMeshGrobName &result="result", bool pre_process=false, bool post_process=false)
 Computes the difference between two meshes. More...
 
 gom_arg_attribute (operation, handler, "combo_box") gom_arg_attribute(operation
 Computes a boolean operation between two meshes. More...
 
B A MeshGrobcompute_boolean_operation (const MeshGrobName &other, const NewMeshGrobName &result="result", const std::string &operation="A+B", bool pre_process=false, bool post_process=false)
 
void intersect (bool remove_internal_shells=true, bool simplify_coplanar_facets=true, double coplanar_angle_tolerance=0.001, bool interpolate_attributes=false)
 Computes intersections in a surface mesh. More...
 
void decimate (index_t nb_bins=100, bool remove_deg3_vrtx=true, bool keep_borders=true, bool repair=true)
 Simplifies a surface using vertex clustering. More...
 
void split_triangles (index_t nb_times=1)
 Splits all the triangles of a simplicial mesh into four triangles. More...
 
void split_quads (index_t nb_times=1)
 Splits all the facets of a mesh into quads. More...
 
void split_catmull_clark (index_t nb_times=1)
 Splits all the facets of a mesh into quads using Catmull-Clark subdivision. More...
 
void tessellate_facets (index_t max_vertices_per_facet=4)
 Subdivides the facets until they have less than the specified number of vertices. More...
 
void triangulate ()
 Triangulates all the facets. More...
 
void triangulate_center_vertex ()
 Triangulates all the facets by inserting a vertex in the center of each facet. More...
 
void smooth ()
 Smooths the mesh by optimizing the vertices that are not selected. Selected vertices are locked.
 
void segment (MeshSegmenter segmenter=SEGMENT_GEOMETRIC_VSA_L2, index_t nb_segments=10)
 Segments a mesh. More...
 
void get_charts ()
 Gets the charts attribute from a parameterized mesh. More...
 
void remove_charts ()
 Removes the charts attribute. More...
 
void unglue_sharp_edges (double angle_threshold=90)
 Unglues facet edges based on specified angle. More...
 
void unglue_charts ()
 Unglues facet edges adjacent to two different charts. More...
 
void make_texture_atlas (bool detect_sharp_edges=false, double sharp_edges_threshold=45.0, ChartParameterizer param=PARAM_ABF, ChartPacker pack=PACK_XATLAS, bool verbose=false)
 Computes texture coordinates of a surface. More...
 
void pack_texture_space (ChartPacker pack=PACK_XATLAS)
 Packs charts in texture space. More...
 
void parameterize_chart (const std::string &attribute="tex_coord", ChartParameterizer param=PARAM_LSCM, bool verbose=false)
 Computes texture coordinates of a single unfoldable surface. More...
 
void bake_normals (const MeshGrobName &surface, index_t size=1024, const NewImageFileName &image="normals.png", index_t nb_dilate=2, const std::string &tex_coord="tex_coord")
 Bakes normals from a surface to the texture atlas. More...
 
void bake_colors (const MeshGrobName &surface, const std::string &color="color", index_t size=1024, const NewImageFileName &image="colors.png", index_t nb_dilate=2, const std::string &attribute="tex_coord")
 Bakes colors from a surface to the texture atlas. More...
 
void bake_texture (const MeshGrobName &src_surface, const ImageFileName &src_texture, const std::string &src_tex_coord="tex_coord", index_t size=1024, const NewImageFileName &image="texture.png", index_t nb_dilate=2, const std::string &tex_coord="tex_coord")
 Bakes texture from a textured surface to an atlas. More...
 
- Public Member Functions inherited from OGF::MeshGrobCommands
 MeshGrobCommands ()
 MeshGrobCommands constructor.
 
 ~MeshGrobCommands () override
 MeshGrobCommands destructor.
 
MeshGrobmesh_grob () const
 Gets the MeshGrob. More...
 
- Public Member Functions inherited from OGF::Commands
 Commands ()
 Commands constructor.
 
 ~Commands () override
 Commands destructor.
 
bool invoke_method (const std::string &method_name, const ArgList &args, Any &ret_val) override
 Invokes a method by method name and argument list, and gets the return value. More...
 
Interpreterinterpreter ()
 Gets the main Interpreter. More...
 
void set_chrono (bool value)
 Sets whether timings are reported. More...
 
- Public Member Functions inherited from OGF::Interface
 Interface ()
 Interface constructor.
 
 ~Interface () override
 Interface destructor.
 
Grobgrob () const
 Gets the Grob. More...
 
SceneGraphscene_graph () const
 Gets the SceneGraph. More...
 
Grobget_grob () const
 Gets the current Grob. More...
 
- Public Member Functions inherited from OGF::Object
 Object (bool transient=false)
 Object constructor. More...
 
virtual ~Object ()
 Object destructor.
 
virtual MetaClassmeta_class () const
 Gets the meta class. More...
 
virtual void set_meta_class (MetaClass *mclass)
 Sets the meta class. More...
 
unsigned int id () const
 Gets the identifier of this object. More...
 
std::string string_id () const
 Gets the unique string identifier. More...
 
bool has_method (const std::string &method_name) const
 Tests whether a method is defined. More...
 
bool invoke_method (const std::string &method_name, const ArgList &args)
 Invokes a method by method name and argument list. More...
 
bool invoke_method (const std::string &method_name)
 Invokes a method by method name. More...
 
bool has_property (const std::string &prop_name) const
 Tests whether a property is defined. More...
 
virtual bool get_property (const std::string &prop_name, std::string &prop_value) const
 Gets a property. More...
 
virtual Connectionconnect_signal_to_slot (const std::string &signal_name, Object *to, const std::string &slot_name)
 Connects a signal with a slot of another object. More...
 
virtual void add_connection (Connection *connection)
 Adds a connection to this object. More...
 
virtual void remove_connection (Connection *connection)
 Removes a connection to this object. More...
 
virtual void get_element (index_t i, Any &value) const
 Gets an element by index. More...
 
virtual void set_element (index_t i, const Any &value)
 Sets an element by index. More...
 
virtual void search (const std::string &needle, const std::string &path="")
 Displays the names of all objects that contain a substring. More...
 
bool get_signals_enabled () const
 Tests wheter signals are enabled. More...
 
void set_signals_enabled (bool value)
 Enables or disables signals. More...
 
bool get_slots_enabled () const
 Tests wheter slots are enabled. More...
 
void set_slots_enabled (bool value)
 Enables or disables slots. More...
 
MetaClassget_meta_class () const
 Gets the meta class. More...
 
std::string get_string_id () const
 Gets the unique string identifier. More...
 
virtual std::string get_doc () const
 Gets the documentation. More...
 
virtual Sign compare (const Object *other) const
 Compares this object with another one. More...
 
virtual bool is_a (const MetaType *type) const
 Tests whether this object inherits a given type. More...
 
void disconnect ()
 Removes all connections from signals of this objects. More...
 
void enable_signals ()
 Enables signals.
 
void disable_signals ()
 Disables signals.
 
void enable_slots ()
 Enables slots.
 
void disable_slots ()
 Disables slots.
 
void set_properties (const ArgList &args)
 Sets several properties in a single call. More...
 
virtual bool set_property (const std::string &name, const std::string &value)
 Sets an individual property. More...
 
void help () const
 Displays some help about this object. More...
 
virtual bool set_property (const std::string &name, const Any &value)
 Sets an individual property. More...
 
virtual bool get_property (const std::string &prop_name, Any &prop_value) const
 Gets a property. More...
 
- Public Member Functions inherited from GEO::Counted
void ref () const
 Increments the reference count. More...
 
void unref () const
 Decrements the reference count. More...
 
bool is_shared () const
 Check if the object is shared. More...
 
int nb_refs () const
 Gets the number of references that point to this object. More...
 

Public Attributes

 __pad0__: void repair_surface( double epsilon = 1e-6
 
double min_comp_area = 0.03
 
double double max_hole_area = 1e-3
 
double double double max_hole_edges = 2000
 
double double double double max_degree3_dist = 0.0
 
double double double double bool remove_intersections
 
 values
 
B
 
A * B
 
- Public Attributes inherited from OGF::Commands
 __pad0__: bool get_chrono() const { return chrono_
 
- Public Attributes inherited from OGF::Interface
 __pad0__: virtual void set_grob(Grob* value)
 
- Public Attributes inherited from OGF::Object
 __pad0__: virtual index_t get_nb_elements() const
 
 __pad1__: bool equals(const Object* other) const
 

Additional Inherited Members

- Static Public Member Functions inherited from OGF::Commands
static bool command_is_running ()
 Tests whether a command is currently running. More...
 
- Static Public Member Functions inherited from OGF::Object
static Objectid_to_object (unsigned int id)
 Gets an object from a unique object id. More...
 
- Static Public Member Functions inherited from GEO::Counted
static void ref (const Counted *counted)
 Increments the reference count. More...
 
static void unref (const Counted *counted)
 Decrements the reference count. More...
 
- Protected Member Functions inherited from OGF::MeshGrobCommands
virtual void hide_attribute ()
 Hides an attribute shown by show_attribute().
 
virtual void show_attribute (const std::string &attribute_name, MeshGrob *M=nullptr)
 Shows an attribute. More...
 
virtual void show_charts (const std::string &attribute="chart")
 Shows the charts, stored in the "chart" facet attribute.
 
virtual void show_mesh (MeshGrob *M=nullptr)
 Shows the mesh. More...
 
virtual void set_vertices_visibility (bool visible)
 Shows or hides the vertices in the current shader. More...
 
void show_vertices ()
 Shows the vertices in the current shader.
 
void hide_vertices ()
 Hides the vertices in the current shader.
 
virtual void show_UV (const std::string &UV_attribute_name="facet_corners.tex_coord", MeshGrob *M=nullptr)
 Shows the parameterization of a mesh. More...
 
virtual void show_colors (const std::string &attribute="vertices.colors", MeshGrob *M=nullptr)
 Shows the colors of a mesh. More...
 
- Protected Member Functions inherited from OGF::Object
virtual bool emit_signal (const std::string &signal_name, const ArgList &args, bool called_from_slot=false)
 Emits a signal and calls the slots it is connected to. More...
 
- Protected Member Functions inherited from GEO::Counted
 Counted ()
 Creates a reference counted object. More...
 
virtual ~Counted ()
 Destroys a reference counted object. More...
 

Detailed Description

Commands that manipulate surface meshes.

Definition at line 58 of file mesh_grob_surface_commands.h.

Member Function Documentation

◆ bake_colors()

void OGF::MeshGrobSurfaceCommands::bake_colors ( const MeshGrobName surface,
const std::string &  color = "color",
index_t  size = 1024,
const NewImageFileName image = "colors.png",
index_t  nb_dilate = 2,
const std::string &  attribute = "tex_coord" 
)

Bakes colors from a surface to the texture atlas.

\menu Atlas/Baking

Parameters
[in]surfacethe name of the mesh with colors to be baked. can be the current mesh or another one with higher-resolution.
[in]colorthe name of the attribute with the colors to be baked.
[in]sizepixel-size of the generated normal map.
[in]imagefilename of the generated normal map.
[in]nb_dilatenumber of dilations
[in]attributethe name of the facet corner attribute that stores texture coordinates.

◆ bake_normals()

void OGF::MeshGrobSurfaceCommands::bake_normals ( const MeshGrobName surface,
index_t  size = 1024,
const NewImageFileName image = "normals.png",
index_t  nb_dilate = 2,
const std::string &  tex_coord = "tex_coord" 
)

Bakes normals from a surface to the texture atlas.

\menu Atlas/Baking

Parameters
[in]surfacethe name of the mesh with normals to be baked. can be the current mesh or another one with higher-resolution normals.
[in]sizepixel-size of the generated normal map.
[in]imagefilename of the generated normal map.
[in]nb_dilatenumber of dilations
[in]tex_coordthe name of the facet corner attribute that stores texture coordinates.

◆ bake_texture()

void OGF::MeshGrobSurfaceCommands::bake_texture ( const MeshGrobName src_surface,
const ImageFileName src_texture,
const std::string &  src_tex_coord = "tex_coord",
index_t  size = 1024,
const NewImageFileName image = "texture.png",
index_t  nb_dilate = 2,
const std::string &  tex_coord = "tex_coord" 
)

Bakes texture from a textured surface to an atlas.

\menu Atlas/Baking

Parameters
[in]src_surfacethe name of the mesh with the texture to be baked. can be the current mesh or another one with higher-resolution normals
[in]src_texturethe texture associated with src_surface
[in]src_tex_coordthe source facet corner attribute with the texture coordinates
[in]sizepixel-size of the generated texture
[in]imagefilename of the generated texture
[in]nb_dilatenumber of dilations
[in]tex_coordthe name of the facet corner attribute that stores texture coordinates for the generated texture

◆ compute_difference()

MeshGrob* OGF::MeshGrobSurfaceCommands::compute_difference ( const MeshGrobName other,
const NewMeshGrobName result = "result",
bool  pre_process = false,
bool  post_process = false 
)

Computes the difference between two meshes.

\menu Boolean operations

Parameters
[in]othername of the other mesh
[in]resultname of the result mesh \advanced
[in]pre_processtriangulate, inputs, remove small edges, make sure there is no intersection
[in]post_processtriangulate result, remove small edges, make sure there is no intersection

◆ compute_intersection()

MeshGrob* OGF::MeshGrobSurfaceCommands::compute_intersection ( const MeshGrobName other,
const NewMeshGrobName result = "result",
bool  pre_process = false,
bool  post_process = false 
)

Computes the intersection between two meshes.

\menu Boolean operations

Parameters
[in]othername of the other mesh
[in]resultname of the result mesh \advanced
[in]pre_processtriangulate, inputs, remove small edges, make sure there is no intersection
[in]post_processtriangulate result, remove small edges, make sure there is no intersection

◆ compute_union()

MeshGrob* OGF::MeshGrobSurfaceCommands::compute_union ( const MeshGrobName other,
const NewMeshGrobName result = "result",
bool  pre_process = false,
bool  post_process = false 
)

Computes the union between two meshes.

\menu Boolean operations

Parameters
[in]othername of the other mesh
[in]resultname of the result mesh \advanced
[in]pre_processtriangulate, inputs, remove small edges, make sure there is no intersection
[in]post_processtriangulate result, remove small edges, make sure there is no intersection

◆ decimate()

void OGF::MeshGrobSurfaceCommands::decimate ( index_t  nb_bins = 100,
bool  remove_deg3_vrtx = true,
bool  keep_borders = true,
bool  repair = true 
)

Simplifies a surface using vertex clustering.

\menu Remesh

Parameters
[in]nb_binsthe higher, the more detailed mesh.
[in]remove_deg3_vrtxif true, remove degree 3 vertices
[in]keep_bordersif true, do not decimate vertices on the border
[in]repairif true, repairs the mesh to remove non-manifold edges and borders

◆ expand_border()

void OGF::MeshGrobSurfaceCommands::expand_border ( double  margin = 0.05)

Preprocessing for remesh_feature_sensitive.

\menu Repair

Parameters
[in]marginmargin to be added to borders, in % of bbox diagonal.

◆ fill_holes()

void OGF::MeshGrobSurfaceCommands::fill_holes ( index_t  max_nb_vertices = 0)

Fills the holes of the surface.

\menu Repair

Parameters
[in]max_nb_verticesmaximum number of vertices around a hole.

◆ fix_facets_orientation()

void OGF::MeshGrobSurfaceCommands::fix_facets_orientation ( )

Fixes facets orientation based on computed visibility.

\menu Repair

◆ get_charts()

void OGF::MeshGrobSurfaceCommands::get_charts ( )

Gets the charts attribute from a parameterized mesh.

\menu Atlas/Segmentation

◆ gom_arg_attribute()

OGF::MeshGrobSurfaceCommands::gom_arg_attribute ( operation  ,
handler  ,
"combo_box"   
)

Computes a boolean operation between two meshes.

\menu Boolean operations

Parameters
[in]othername of the other mesh
[in]resultname of the result mesh
[in]operationone of "A+B", "A*B", "A-B", "B-A" \advanced
[in]pre_processtriangulate, inputs, remove small edges, make sure there is no intersection
[in]post_processtriangulate result, remove small edges, make sure there is no intersection

◆ intersect()

void OGF::MeshGrobSurfaceCommands::intersect ( bool  remove_internal_shells = true,
bool  simplify_coplanar_facets = true,
double  coplanar_angle_tolerance = 0.001,
bool  interpolate_attributes = false 
)

Computes intersections in a surface mesh.

\menu Boolean operations

Parameters
[in]remove_internal_shellskeep only facets on external hull
[in]simplify_coplanar_facetsretriangulates planar zones
[in]coplanar_angle_tolerancein degrees
[in]interpolate_attributesinterpolate facet corner attributes on generated intersections. Deactivates coplanar facets simplification if set.

◆ make_texture_atlas()

void OGF::MeshGrobSurfaceCommands::make_texture_atlas ( bool  detect_sharp_edges = false,
double  sharp_edges_threshold = 45.0,
ChartParameterizer  param = PARAM_ABF,
ChartPacker  pack = PACK_XATLAS,
bool  verbose = false 
)

Computes texture coordinates of a surface.

\menu Atlas/Parameterization

Parameters
[in]detect_sharp_edgesif true, generate chart boundary on edges with angle is larger than threshold.
[in]sharp_edges_thresholdif the angle between the normals of two adjacent facets is larger than this threshold then the edge will be a chart boundary.
[in]paramthe algorithm used for parameterizing the charts. use ABF for best quality, or LSCM for faster result.
[in]verboseif true, display statistics during atlas generation.
[in]packone of PACK_TETRIS, PACK_XATLAS

◆ merge_vertices()

void OGF::MeshGrobSurfaceCommands::merge_vertices ( double  epsilon = 0.0)

Merges vertices that are at the same location or within tolerance.

\menu Repair

Parameters
[in]epsilonTolerance for merging vertices, in % of bbox diagonal.

◆ pack_texture_space()

void OGF::MeshGrobSurfaceCommands::pack_texture_space ( ChartPacker  pack = PACK_XATLAS)

Packs charts in texture space.

\menu Atlas/Parameterization

Parameters
[in]packone of PACK_TETRIS, PACK_XATLAS

◆ parameterize_chart()

void OGF::MeshGrobSurfaceCommands::parameterize_chart ( const std::string &  attribute = "tex_coord",
ChartParameterizer  param = PARAM_LSCM,
bool  verbose = false 
)

Computes texture coordinates of a single unfoldable surface.

\menu Atlas/Parameterization

Parameters
[in]attributethe name of the attribute that will store texture coordinates.
[in]paramone of LSCM, SpectralLSCM, ABFplusplus.
[in]verboseif true, display statistics during atlas generation.

◆ remesh_feature_sensitive()

void OGF::MeshGrobSurfaceCommands::remesh_feature_sensitive ( const NewMeshGrobName surface_name = "remesh",
unsigned int  nb_points = 30000,
bool  refine = false,
double  max_dist = 0.5,
double  normal_anisotropy = 5.0,
unsigned int  nb_Lloyd_iter = 5,
unsigned int  nb_Newton_iter = 30,
unsigned int  nb_LpCVT_iter = 10,
unsigned int  Newton_m = 7,
bool  RVC_centroids = false 
)

Remeshes a surface that has sharp features.

\menu Remesh

Parameters
[in]surface_namename of the generated mesh.
[in]nb_pointsdesired number of points in the generated mesh.
[in]refinerefine border in order to lower Haussdorff distance.
[in]max_distmaximum distance to reference, as a fraction of generated mesh average edge length. \advanced
[in]normal_anisotropydetermines how sharp features are taken into account.
[in]nb_Lloyd_iternumber of Lloyd iterations for CVT.
[in]nb_Newton_iternumber of Newton iterations for CVT.
[in]nb_LpCVT_iternumber of feature-sensitive iterations.
[in]Newton_mnumber of inner Newton iterations for CVT.
[in]RVC_centroidsuse centroids of restricted Voronoi cells.

◆ remesh_quad_dominant()

void OGF::MeshGrobSurfaceCommands::remesh_quad_dominant ( const NewMeshGrobName surface_name = "remesh",
double  rel_edge_len = 1.0,
bool  sharp_features = true,
bool  optimize_parity = false,
double  max_scaling_corr = 1.0 
)

Generates a quad-dominant mesh.

\menu Remesh

Parameters
[in]surface_namename of the generated mesh.
[in]rel_edge_lenrelative edge length.
[in]sharp_featurestrue for CAD mesh, false otherwise
[in]optimize_paritytentatively optimize parity.
[in]max_scaling_corrmaximum scaling correction (use 1.0 to disable).

◆ remesh_smooth()

void OGF::MeshGrobSurfaceCommands::remesh_smooth ( const NewMeshGrobName remesh_name = "remesh",
unsigned int  nb_points = 30000,
double  tri_shape_adapt = 1.0,
double  tri_size_adapt = 0.0,
bool  adjust = true,
double  adjust_max_edge_distance = 0.5,
unsigned int  normal_iter = 3,
unsigned int  Lloyd_iter = 5,
unsigned int  Newton_iter = 30,
unsigned int  Newton_m = 7,
unsigned int  LFS_samples = 10000 
)

Remeshes a (smooth) surface.

\menu Remesh

Parameters
[in]remesh_namename of the generated surface mesh.
[in]nb_pointsdesired number of points in the generated mesh.
[in]tri_shape_adaptadapt triangle shapes (0.0 means no shape adapation, 1.0 for moderate shape adaptation, ...)
[in]tri_size_adaptadapt triangle sizes (0.0 means no size adaptation, 1.0 for moderate size adaptation, ...)
[in]adjustif true, adjust the triangles of the remesh to better approximate the input mesh
[in]adjust_max_edge_distancemaximum adjustment, relative to local average edge length \advanced
[in]normal_iternumber of normal smoothing iterations (if anisotropy is non-zero).
[in]Lloyd_iternumber of Lloyd iterations for CVT.
[in]Newton_iternumber of Newton iterations for CVT.
[in]Newton_mnumber of inner Newton iterations for CVT.
[in]LFS_samplesnumber of samples. used to compute gradation.

◆ remove_charts()

void OGF::MeshGrobSurfaceCommands::remove_charts ( )

Removes the charts attribute.

\menu Atlas/Segmentation

◆ remove_invisible_facets()

void OGF::MeshGrobSurfaceCommands::remove_invisible_facets ( double  min_visibility = 0.005)

Removes all facets that have visibility smaller than a given threshold.

\menu Repair

Parameters
[in]min_visibilityminimum visibility to keep a facet

◆ segment()

void OGF::MeshGrobSurfaceCommands::segment ( MeshSegmenter  segmenter = SEGMENT_GEOMETRIC_VSA_L2,
index_t  nb_segments = 10 
)

Segments a mesh.

\menu Atlas/Segmentation

◆ split_catmull_clark()

void OGF::MeshGrobSurfaceCommands::split_catmull_clark ( index_t  nb_times = 1)

Splits all the facets of a mesh into quads using Catmull-Clark subdivision.

\menu Subdivision

Parameters
[in]nb_timesnumber of times the facets are split.

◆ split_quads()

void OGF::MeshGrobSurfaceCommands::split_quads ( index_t  nb_times = 1)

Splits all the facets of a mesh into quads.

\menu Subdivision

Parameters
[in]nb_timesnumber of times the facets are split.

◆ split_triangles()

void OGF::MeshGrobSurfaceCommands::split_triangles ( index_t  nb_times = 1)

Splits all the triangles of a simplicial mesh into four triangles.

\menu Subdivision

Parameters
[in]nb_timesnumber of times the triangles are split.

◆ tessellate_facets()

void OGF::MeshGrobSurfaceCommands::tessellate_facets ( index_t  max_vertices_per_facet = 4)

Subdivides the facets until they have less than the specified number of vertices.

\menu Subdivision

◆ triangulate()

void OGF::MeshGrobSurfaceCommands::triangulate ( )
inline

Triangulates all the facets.

\menu Subdivision

Definition at line 399 of file mesh_grob_surface_commands.h.

◆ triangulate_center_vertex()

void OGF::MeshGrobSurfaceCommands::triangulate_center_vertex ( )

Triangulates all the facets by inserting a vertex in the center of each facet.

\menu Subdivision

◆ unglue_charts()

void OGF::MeshGrobSurfaceCommands::unglue_charts ( )

Unglues facet edges adjacent to two different charts.

\menu Atlas/Segmentation

◆ unglue_sharp_edges()

void OGF::MeshGrobSurfaceCommands::unglue_sharp_edges ( double  angle_threshold = 90)

Unglues facet edges based on specified angle.

\menu Atlas/Segmentation

Parameters
[in]angle_thresholdunglue facets along edge if angle between adjacent facet is larger than threshold

Member Data Documentation

◆ remove_intersections

double double double double bool OGF::MeshGrobSurfaceCommands::remove_intersections
Initial value:
= false
)

Definition at line 97 of file mesh_grob_surface_commands.h.


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