MeshLib Rust Docs
Loading...
Searching...
No Matches
meshlib::mesh_builder Namespace Reference

Classes

struct  BuildSettings
struct  equalVector3f
struct  MeshPiece
struct  Triangle
struct  UniteCloseParams
struct  VertDuplication
struct  VertexIdentifier
struct  VertInfo
struct  VertSpan
struct  VertTri

Functions

auto from_triangles (t:&meshlib::Triangulation, settings:Option<&meshlib::mesh_builder::BuildSettings >, progressCb:Option<&meshlib::std_function_bool_from_float >) -> meshlib::Owned< meshlib::MeshTopology >
auto from_triangles_duplicating_non_manifold_vertices (t:&mut meshlib::Triangulation, dups:Option<&mut meshlib::std_vector_MR_MeshBuilder_VertDuplication >, settings:Option<&meshlib::mesh_builder::BuildSettings >, betterCont:Option<&meshlib::std_function_bool_from_MR_VertId_MR_VertId_MR_VertId_MR_VertId_MR_VertId >) -> meshlib::Owned< meshlib::MeshTopology >
auto from_point_triples (posTriples:&meshlib::std_vector_std_array_MR_Vector3f_3) -> meshlib::Owned< meshlib::Mesh >
auto from_disjoint_mesh_pieces (t:&meshlib::Triangulation, maxVertId:meshlib::VertId, pieces:&meshlib::std_vector_MR_MeshBuilder_MeshPiece, settings:Option<&meshlib::mesh_builder::BuildSettings >) -> meshlib::Owned< meshlib::MeshTopology >
auto add_triangles_mr_triangulation (res:&mut meshlib::MeshTopology, t:&meshlib::Triangulation, settings:Option<&meshlib::mesh_builder::BuildSettings >) -> usize
void add_triangles_std_vector_mr_vert_id (res:&mut meshlib::MeshTopology, vertTriples:&mut meshlib::std_vector_MR_VertId, createdFaces:Option<&mut meshlib::FaceBitSet >)
auto from_face_soup (verts:&meshlib::std_vector_MR_VertId, faces:&meshlib::Vector_MR_MeshBuilder_VertSpan_MR_FaceId, settings:Option<&meshlib::mesh_builder::BuildSettings >, progressCb:Option<&meshlib::std_function_bool_from_float >) -> meshlib::Owned< meshlib::MeshTopology >
auto compute_triangles_repetitions (t:&meshlib::Triangulation) -> meshlib::Owned< meshlib::std_vector_int >
auto unite_close_vertices_dist (mesh:&mut meshlib::Mesh, closeDist:f32, uniteOnlyBd:Option< bool >, optionalVertOldToNew:Option<&mut meshlib::VertMap >) -> core::ffi::c_int
auto unite_close_vertices (mesh:&mut meshlib::Mesh, params:Option<&meshlib::mesh_builder::UniteCloseParams >) -> core::ffi::c_int
auto duplicate_non_manifold_vertices (t:&mut meshlib::Triangulation, region:Option<&mut meshlib::FaceBitSet >, dups:Option<&mut meshlib::std_vector_MR_MeshBuilder_VertDuplication >, lastValidVert:Option<&meshlib::VertId >, betterCont:Option<&meshlib::std_function_bool_from_MR_VertId_MR_VertId_MR_VertId_MR_VertId_MR_VertId >) -> usize
auto op_less_mr_mesh_builder_vert_tri (l:&meshlib::mesh_builder::VertTri, r:&meshlib::mesh_builder::VertTri) -> bool
auto inspect_vert_neighbourhood (t:&meshlib::Triangulation, begin:Option<&meshlib::mesh_builder::VertTri >, end:Option<&meshlib::mesh_builder::VertTri >) -> meshlib::Owned< meshlib::mesh_builder::VertInfo >

Function Documentation

◆ add_triangles_mr_triangulation()

auto meshlib::mesh_builder::add_triangles_mr_triangulation ( res:&mut meshlib::MeshTopology ,
t:&meshlib::Triangulation ,
settings:Option<&meshlib::mesh_builder::BuildSettings >  ) -> usize

adds triangles in the existing topology, given face indecies must be free; settings.region on output contain the remaining triangles that could not be added into the topology right now, but may be added later when other triangles appear in the mesh

Returns
the total number of triangles added in the topology Generated from function MR::MeshBuilder::addTriangles.

Calls MR_MeshBuilder_addTriangles_MR_Triangulation().

◆ add_triangles_std_vector_mr_vert_id()

void meshlib::mesh_builder::add_triangles_std_vector_mr_vert_id ( res:&mut meshlib::MeshTopology ,
vertTriples:&mut meshlib::std_vector_MR_VertId ,
createdFaces:Option<&mut meshlib::FaceBitSet >  )

adds triangles in the existing topology, auto selecting face ids for them; vertTriples on output contain the remaining triangles that could not be added into the topology right now, but may be added later when other triangles appear in the mesh Generated from function MR::MeshBuilder::addTriangles.

Calls MR_MeshBuilder_addTriangles_std_vector_MR_VertId().

◆ compute_triangles_repetitions()

auto meshlib::mesh_builder::compute_triangles_repetitions ( t:&meshlib::Triangulation ) -> meshlib::Owned< meshlib::std_vector_int >

computes the histogram of triangle repetitions in given triangulation, ignoring vertex order in each triangle: res[0] is the number of triangles without duplicates, res[1] is the number of distinct triangles present in two copies, res[2] is the number of distinct triangles present in three copies, etc. Generated from function MR::MeshBuilder::computeTrianglesRepetitions.

Calls MR_MeshBuilder_computeTrianglesRepetitions().

◆ duplicate_non_manifold_vertices()

auto meshlib::mesh_builder::duplicate_non_manifold_vertices ( t:&mut meshlib::Triangulation ,
region:Option<&mut meshlib::FaceBitSet > ,
dups:Option<&mut meshlib::std_vector_MR_MeshBuilder_VertDuplication > ,
lastValidVert:Option<&meshlib::VertId > ,
betterCont:Option<&meshlib::std_function_bool_from_MR_VertId_MR_VertId_MR_VertId_MR_VertId_MR_VertId >  ) -> usize

resolve non-manifold vertices by creating duplicate vertices in the triangulation (which is modified) lastValidVert is needed if region or t does not contain full mesh, then first duplicated vertex will have lastValidVert+1 index dups (if given) contents will be ignored and overridden; it receives the duplications in creation order with consecutive dupVert ids starting from lastValidVert+1 betterCont (if given) selects the best triangle among several possible path continuations return number of duplicated vertices Generated from function MR::MeshBuilder::duplicateNonManifoldVertices.

Calls MR_MeshBuilder_duplicateNonManifoldVertices().

◆ from_disjoint_mesh_pieces()

auto meshlib::mesh_builder::from_disjoint_mesh_pieces ( t:&meshlib::Triangulation ,
maxVertId:meshlib::VertId ,
pieces:&meshlib::std_vector_MR_MeshBuilder_MeshPiece ,
settings:Option<&meshlib::mesh_builder::BuildSettings >  ) -> meshlib::Owned< meshlib::MeshTopology >

construct mesh topology in parallel from given disjoint mesh pieces (which do not have any shared vertex) and some additional triangles (in settings) that join the pieces Generated from function MR::MeshBuilder::fromDisjointMeshPieces.

Calls MR_MeshBuilder_fromDisjointMeshPieces().

◆ from_face_soup()

construct mesh topology from face soup, where each face can have arbitrary degree (not only triangles) Generated from function MR::MeshBuilder::fromFaceSoup.

Calls MR_MeshBuilder_fromFaceSoup().

◆ from_point_triples()

auto meshlib::mesh_builder::from_point_triples ( posTriples:&meshlib::std_vector_std_array_MR_Vector3f_3 ) -> meshlib::Owned< meshlib::Mesh >

construct mesh from point triples; all coinciding points are given the same VertId in the result Generated from function MR::MeshBuilder::fromPointTriples.

Calls MR_MeshBuilder_fromPointTriples().

◆ from_triangles()

auto meshlib::mesh_builder::from_triangles ( t:&meshlib::Triangulation ,
settings:Option<&meshlib::mesh_builder::BuildSettings > ,
progressCb:Option<&meshlib::std_function_bool_from_float >  ) -> meshlib::Owned< meshlib::MeshTopology >

construct mesh topology from a set of triangles with given ids; if skippedTris is given then it receives all input triangles not added in the resulting topology Generated from function MR::MeshBuilder::fromTriangles.

Calls MR_MeshBuilder_fromTriangles().

◆ from_triangles_duplicating_non_manifold_vertices()

auto meshlib::mesh_builder::from_triangles_duplicating_non_manifold_vertices ( t:&mut meshlib::Triangulation ,
dups:Option<&mut meshlib::std_vector_MR_MeshBuilder_VertDuplication > ,
settings:Option<&meshlib::mesh_builder::BuildSettings > ,
betterCont:Option<&meshlib::std_function_bool_from_MR_VertId_MR_VertId_MR_VertId_MR_VertId_MR_VertId >  ) -> meshlib::Owned< meshlib::MeshTopology >

construct mesh topology from a set of triangles with given ids; unlike simple fromTriangles() it tries to resolve non-manifold vertices by creating duplicate vertices; triangulation is modified to introduce duplicates; betterCont (if given) selects the best triangle among several possible continuations during the duplication Generated from function MR::MeshBuilder::fromTrianglesDuplicatingNonManifoldVertices.

Calls MR_MeshBuilder_fromTrianglesDuplicatingNonManifoldVertices().

◆ inspect_vert_neighbourhood()

auto meshlib::mesh_builder::inspect_vert_neighbourhood ( t:&meshlib::Triangulation ,
begin:Option<&meshlib::mesh_builder::VertTri > ,
end:Option<&meshlib::mesh_builder::VertTri >  ) -> meshlib::Owned< meshlib::mesh_builder::VertInfo >

computes VertInfo of one vertex given all its incident triangles in [begin, end), all referencing the same vertex; allocates temporary hash maps on every call, so prefer batch processing over calling it per vertex of a large mesh Generated from function MR::MeshBuilder::inspectVertNeighbourhood.

Calls MR_MeshBuilder_inspectVertNeighbourhood().

◆ op_less_mr_mesh_builder_vert_tri()

auto meshlib::mesh_builder::op_less_mr_mesh_builder_vert_tri ( l:&meshlib::mesh_builder::VertTri ,
r:&meshlib::mesh_builder::VertTri  ) -> bool

Generated from function MR::MeshBuilder::operator<.

Calls MR_less_MR_MeshBuilder_VertTri().

◆ unite_close_vertices()

auto meshlib::mesh_builder::unite_close_vertices ( mesh:&mut meshlib::Mesh ,
params:Option<&meshlib::mesh_builder::UniteCloseParams >  ) -> core::ffi::c_int

the function finds groups of mesh vertices located closer to each other than params.closeDist, and unites such vertices in one; then the mesh is rebuilt from the remaining triangles

Returns
the number of vertices united, 0 means no change in the mesh Generated from function MR::MeshBuilder::uniteCloseVertices.

Calls MR_MeshBuilder_uniteCloseVertices().

◆ unite_close_vertices_dist()

auto meshlib::mesh_builder::unite_close_vertices_dist ( mesh:&mut meshlib::Mesh ,
closeDist:f32 ,
uniteOnlyBd:Option< bool > ,
optionalVertOldToNew:Option<&mut meshlib::VertMap >  ) -> core::ffi::c_int

the function finds groups of mesh vertices located closer to each other than closeDist, and unites such vertices in one; then the mesh is rebuilt from the remaining triangles

Parameters
optionalVertOldToNewis the mapping of vertices: before -> after
uniteOnlyBdif true then only boundary vertices can be united, all internal vertices (even close ones) will remain
Returns
the number of vertices united, 0 means no change in the mesh Generated from function MR::MeshBuilder::uniteCloseVertices.

Calls MR_MeshBuilder_uniteCloseVertices_dist().