Graphite
Version 3
An experimental 3D geometry processing program
|
Commands that manipulate surface meshes. More...
#include <OGF/mesh/commands/mesh_grob_surface_commands.h>
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... | |
MeshGrob * | compute_union (const MeshGrobName &other, const NewMeshGrobName &result="result", bool pre_process=false, bool post_process=false) |
Computes the union between two meshes. More... | |
MeshGrob * | compute_intersection (const MeshGrobName &other, const NewMeshGrobName &result="result", bool pre_process=false, bool post_process=false) |
Computes the intersection between two meshes. More... | |
MeshGrob * | compute_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 MeshGrob * | compute_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. | |
MeshGrob * | mesh_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... | |
Interpreter * | interpreter () |
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. | |
Grob * | grob () const |
Gets the Grob. More... | |
SceneGraph * | scene_graph () const |
Gets the SceneGraph. More... | |
Grob * | get_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 MetaClass * | meta_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 Connection * | connect_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... | |
MetaClass * | get_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 | |
A | 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 Object * | id_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... | |
Commands that manipulate surface meshes.
Definition at line 58 of file mesh_grob_surface_commands.h.
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
[in] | surface | the name of the mesh with colors to be baked. can be the current mesh or another one with higher-resolution. |
[in] | color | the name of the attribute with the colors to be baked. |
[in] | size | pixel-size of the generated normal map. |
[in] | image | filename of the generated normal map. |
[in] | nb_dilate | number of dilations |
[in] | attribute | the name of the facet corner attribute that stores texture coordinates. |
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
[in] | surface | the name of the mesh with normals to be baked. can be the current mesh or another one with higher-resolution normals. |
[in] | size | pixel-size of the generated normal map. |
[in] | image | filename of the generated normal map. |
[in] | nb_dilate | number of dilations |
[in] | tex_coord | the name of the facet corner attribute that stores texture coordinates. |
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
[in] | src_surface | the name of the mesh with the texture to be baked. can be the current mesh or another one with higher-resolution normals |
[in] | src_texture | the texture associated with src_surface |
[in] | src_tex_coord | the source facet corner attribute with the texture coordinates |
[in] | size | pixel-size of the generated texture |
[in] | image | filename of the generated texture |
[in] | nb_dilate | number of dilations |
[in] | tex_coord | the name of the facet corner attribute that stores texture coordinates for the generated texture |
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
[in] | other | name of the other mesh |
[in] | result | name of the result mesh \advanced |
[in] | pre_process | triangulate, inputs, remove small edges, make sure there is no intersection |
[in] | post_process | triangulate result, remove small edges, make sure there is no 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
[in] | other | name of the other mesh |
[in] | result | name of the result mesh \advanced |
[in] | pre_process | triangulate, inputs, remove small edges, make sure there is no intersection |
[in] | post_process | triangulate result, remove small edges, make sure there is no intersection |
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
[in] | other | name of the other mesh |
[in] | result | name of the result mesh \advanced |
[in] | pre_process | triangulate, inputs, remove small edges, make sure there is no intersection |
[in] | post_process | triangulate result, remove small edges, make sure there is no intersection |
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
[in] | nb_bins | the higher, the more detailed mesh. |
[in] | remove_deg3_vrtx | if true, remove degree 3 vertices |
[in] | keep_borders | if true, do not decimate vertices on the border |
[in] | repair | if true, repairs the mesh to remove non-manifold edges and borders |
void OGF::MeshGrobSurfaceCommands::expand_border | ( | double | margin = 0.05 | ) |
Preprocessing for remesh_feature_sensitive.
\menu Repair
[in] | margin | margin to be added to borders, in % of bbox diagonal. |
void OGF::MeshGrobSurfaceCommands::fill_holes | ( | index_t | max_nb_vertices = 0 | ) |
Fills the holes of the surface.
\menu Repair
[in] | max_nb_vertices | maximum number of vertices around a hole. |
void OGF::MeshGrobSurfaceCommands::fix_facets_orientation | ( | ) |
Fixes facets orientation based on computed visibility.
\menu Repair
void OGF::MeshGrobSurfaceCommands::get_charts | ( | ) |
Gets the charts attribute from a parameterized mesh.
\menu Atlas/Segmentation
OGF::MeshGrobSurfaceCommands::gom_arg_attribute | ( | operation | , |
handler | , | ||
"combo_box" | |||
) |
Computes a boolean operation between two meshes.
\menu Boolean operations
[in] | other | name of the other mesh |
[in] | result | name of the result mesh |
[in] | operation | one of "A+B", "A*B", "A-B", "B-A" \advanced |
[in] | pre_process | triangulate, inputs, remove small edges, make sure there is no intersection |
[in] | post_process | triangulate result, remove small edges, make sure there is no intersection |
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
[in] | remove_internal_shells | keep only facets on external hull |
[in] | simplify_coplanar_facets | retriangulates planar zones |
[in] | coplanar_angle_tolerance | in degrees |
[in] | interpolate_attributes | interpolate facet corner attributes on generated intersections. Deactivates coplanar facets simplification if set. |
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
[in] | detect_sharp_edges | if true, generate chart boundary on edges with angle is larger than threshold. |
[in] | sharp_edges_threshold | if the angle between the normals of two adjacent facets is larger than this threshold then the edge will be a chart boundary. |
[in] | param | the algorithm used for parameterizing the charts. use ABF for best quality, or LSCM for faster result. |
[in] | verbose | if true, display statistics during atlas generation. |
[in] | pack | one of PACK_TETRIS, PACK_XATLAS |
void OGF::MeshGrobSurfaceCommands::merge_vertices | ( | double | epsilon = 0.0 | ) |
Merges vertices that are at the same location or within tolerance.
\menu Repair
[in] | epsilon | Tolerance for merging vertices, in % of bbox diagonal. |
void OGF::MeshGrobSurfaceCommands::pack_texture_space | ( | ChartPacker | pack = PACK_XATLAS | ) |
Packs charts in texture space.
\menu Atlas/Parameterization
[in] | pack | one of PACK_TETRIS, PACK_XATLAS |
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
[in] | attribute | the name of the attribute that will store texture coordinates. |
[in] | param | one of LSCM, SpectralLSCM, ABFplusplus. |
[in] | verbose | if true, display statistics during atlas generation. |
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
[in] | surface_name | name of the generated mesh. |
[in] | nb_points | desired number of points in the generated mesh. |
[in] | refine | refine border in order to lower Haussdorff distance. |
[in] | max_dist | maximum distance to reference, as a fraction of generated mesh average edge length. \advanced |
[in] | normal_anisotropy | determines how sharp features are taken into account. |
[in] | nb_Lloyd_iter | number of Lloyd iterations for CVT. |
[in] | nb_Newton_iter | number of Newton iterations for CVT. |
[in] | nb_LpCVT_iter | number of feature-sensitive iterations. |
[in] | Newton_m | number of inner Newton iterations for CVT. |
[in] | RVC_centroids | use centroids of restricted Voronoi cells. |
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
[in] | surface_name | name of the generated mesh. |
[in] | rel_edge_len | relative edge length. |
[in] | sharp_features | true for CAD mesh, false otherwise |
[in] | optimize_parity | tentatively optimize parity. |
[in] | max_scaling_corr | maximum scaling correction (use 1.0 to disable). |
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
[in] | remesh_name | name of the generated surface mesh. |
[in] | nb_points | desired number of points in the generated mesh. |
[in] | tri_shape_adapt | adapt triangle shapes (0.0 means no shape adapation, 1.0 for moderate shape adaptation, ...) |
[in] | tri_size_adapt | adapt triangle sizes (0.0 means no size adaptation, 1.0 for moderate size adaptation, ...) |
[in] | adjust | if true, adjust the triangles of the remesh to better approximate the input mesh |
[in] | adjust_max_edge_distance | maximum adjustment, relative to local average edge length \advanced |
[in] | normal_iter | number of normal smoothing iterations (if anisotropy is non-zero). |
[in] | Lloyd_iter | number of Lloyd iterations for CVT. |
[in] | Newton_iter | number of Newton iterations for CVT. |
[in] | Newton_m | number of inner Newton iterations for CVT. |
[in] | LFS_samples | number of samples. used to compute gradation. |
void OGF::MeshGrobSurfaceCommands::remove_charts | ( | ) |
Removes the charts attribute.
\menu Atlas/Segmentation
void OGF::MeshGrobSurfaceCommands::remove_invisible_facets | ( | double | min_visibility = 0.005 | ) |
Removes all facets that have visibility smaller than a given threshold.
\menu Repair
[in] | min_visibility | minimum visibility to keep a facet |
void OGF::MeshGrobSurfaceCommands::segment | ( | MeshSegmenter | segmenter = SEGMENT_GEOMETRIC_VSA_L2 , |
index_t | nb_segments = 10 |
||
) |
Segments a mesh.
\menu Atlas/Segmentation
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
[in] | nb_times | number of times the facets are split. |
void OGF::MeshGrobSurfaceCommands::split_quads | ( | index_t | nb_times = 1 | ) |
Splits all the facets of a mesh into quads.
\menu Subdivision
[in] | nb_times | number of times the facets are split. |
void OGF::MeshGrobSurfaceCommands::split_triangles | ( | index_t | nb_times = 1 | ) |
Splits all the triangles of a simplicial mesh into four triangles.
\menu Subdivision
[in] | nb_times | number of times the triangles are split. |
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
|
inline |
Triangulates all the facets.
\menu Subdivision
Definition at line 399 of file mesh_grob_surface_commands.h.
void OGF::MeshGrobSurfaceCommands::triangulate_center_vertex | ( | ) |
Triangulates all the facets by inserting a vertex in the center of each facet.
\menu Subdivision
void OGF::MeshGrobSurfaceCommands::unglue_charts | ( | ) |
Unglues facet edges adjacent to two different charts.
\menu Atlas/Segmentation
void OGF::MeshGrobSurfaceCommands::unglue_sharp_edges | ( | double | angle_threshold = 90 | ) |
Unglues facet edges based on specified angle.
\menu Atlas/Segmentation
[in] | angle_threshold | unglue facets along edge if angle between adjacent facet is larger than threshold |
double double double double bool OGF::MeshGrobSurfaceCommands::remove_intersections |
Definition at line 97 of file mesh_grob_surface_commands.h.