MeshLib C# Docs
Loading...
Searching...
No Matches

This class represents a mesh, including topology (connectivity) information and point coordinates, as well as some caches to accelerate search algorithms Generated from class MR.Mesh. This is the non-const half of the class. More...

Inheritance diagram for MR.Mesh:

Public Member Functions

unsafe Mesh ()
 Constructs an empty (default-constructed) instance.
unsafe Mesh (MR._ByValue_Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
 Mesh (Const_Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
 Mesh (Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
unsafe MR.Mesh assign (MR._ByValue_Mesh _other)
 Generated from method MR::Mesh::operator=.
unsafe void zeroUnusedPoints ()
 for all points not in topology.getValidVerts() sets coordinates to (0,0,0) Generated from method MR.Mesh.zeroUnusedPoints.
unsafe void transform (in MR.AffineXf3f xf, MR.Const_VertBitSet? region=null)
 applies given transformation to specified vertices if region is nullptr, all valid mesh vertices are used
unsafe MR.VertId addPoint (in MR.Vector3f pos)
 creates new point and assigns given position to it Generated from method MR.Mesh.addPoint.
unsafe MR.EdgeId addSeparateEdgeLoop (MR.Std.Const_Vector_MRVector3f contourPoints)
 append points to mesh and connect them as closed edge loop returns first EdgeId of new edges Generated from method MR.Mesh.addSeparateEdgeLoop.
unsafe MR.EdgeId addSeparateContours (MR.Std.Const_Vector_StdVectorMRVector3f contours, MR.AffineXf3f? xf=null)
 append points to mesh and connect them returns first EdgeId of new edges Generated from method MR.Mesh.addSeparateContours.
unsafe void attachEdgeLoopPart (MR.EdgeId first, MR.EdgeId last, MR.Std.Const_Vector_MRVector3f contourPoints)
 append points to mesh and connect them to given edges making edge loop first point connects with first edge dest last point connects with last edge org note that first and last edge should have no left face Generated from method MR.Mesh.attachEdgeLoopPart.
unsafe MR.EdgeId splitEdge (MR.EdgeId e, in MR.Vector3f newVertPos, MR.FaceBitSet? region=null, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old=null)
 split given edge on two parts: dest(returned-edge) = org(e) - newly created vertex, org(returned-edge) = org(e-before-split), dest(e) = dest(e-before-split)
unsafe MR.EdgeId splitEdge (MR.EdgeId e, MR.FaceBitSet? region=null, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old=null)
 Generated from method MR.Mesh.splitEdge.
unsafe MR.VertId splitFace (MR.FaceId f, in MR.Vector3f newVertPos, MR.FaceBitSet? region=null, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old=null)
 split given triangle on three triangles, introducing new vertex with given coordinates and connecting it to original triangle vertices; if region is given, then it must include (f) and new faces will be added there as well
unsafe MR.VertId splitFace (MR.FaceId f, MR.FaceBitSet? region=null, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old=null)
 Generated from method MR.Mesh.splitFace.
unsafe void addMesh (MR.Const_Mesh from, MR.Const_PartMapping? map=null, bool? rearrangeTriangles=null)
 appends another mesh as separate connected component(s) to this Generated from method MR.Mesh.addMesh. Parameter map defaults to {}. Parameter rearrangeTriangles defaults to false.
unsafe void addMesh (MR.Const_Mesh from, MR.FaceMap? outFmap, MR.VertMap? outVmap=null, MR.WholeEdgeMap? outEmap=null, bool? rearrangeTriangles=null)
 Generated from method MR.Mesh.addMesh. Parameter rearrangeTriangles defaults to false.
unsafe void addMeshPart (MR.Const_MeshPart from, MR.Const_PartMapping map)
 appends whole or part of another mesh as separate connected component(s) to this Generated from method MR.Mesh.addMeshPart.
unsafe void addMeshPart (MR.Const_MeshPart from, bool? flipOrientation=null, MR.Std.Const_Vector_StdVectorMREdgeId? thisContours=null, MR.Std.Const_Vector_StdVectorMREdgeId? fromContours=null, MR.Const_PartMapping? map=null)
 appends whole or part of another mesh to this joining added faces with existed ones along given contours
unsafe void pack (MR.Const_PartMapping? map=null, bool? rearrangeTriangles=null)
 tightly packs all arrays eliminating lone edges and invalid faces, vertices and points Generated from method MR.Mesh.pack. Parameter map defaults to {}. Parameter rearrangeTriangles defaults to false.
unsafe void pack (MR.FaceMap? outFmap, MR.VertMap? outVmap=null, MR.WholeEdgeMap? outEmap=null, bool? rearrangeTriangles=null)
 Generated from method MR.Mesh.pack. Parameter rearrangeTriangles defaults to false.
unsafe void pack (MR.Const_PackMapping map, MR.Std._ByValue_Function_Bool_From_Float? cb=null)
 tightly packs all arrays eliminating lone edges and invalid faces, vertices and points, reorder all faces, vertices and edges according to given maps, each containing old id -> new id mapping Generated from method MR.Mesh.pack. Parameter cb defaults to {}.
unsafe MR.PackMapping packOptimally (bool? preserveAABBTree=null)
 packs tightly and rearranges vertices, triangles and edges to put close in space elements in close indices
unsafe MR.PackMapping packOptimally (bool preserveAABBTree, MR.Std._ByValue_Function_Bool_From_Float cb)
 Generated from method MR.Mesh.packOptimally.
unsafe void deleteFaces (MR.Const_FaceBitSet fs, MR.Const_UndirectedEdgeBitSet? keepEdges=null)
 deletes multiple given faces, also deletes adjacent edges and vertices if they were not shared by remaining faces and not in
unsafe void invalidateCaches (bool? pointsChanged=null)
 invalidates caches (aabb-trees) after any change in mesh geometry or topology
unsafe void updateCaches (MR.Const_VertBitSet changedVerts)
 updates existing caches in case of few vertices were changed insignificantly, and topology remained unchanged; it shall be considered as a faster alternative to invalidateCaches() and following rebuild of trees Generated from method MR.Mesh.updateCaches.
unsafe void shrinkToFit ()
 requests the removal of unused capacity Generated from method MR.Mesh.shrinkToFit.
unsafe void mirror (MR.Const_Plane3f plane)
 reflects the mesh from a given plane Generated from method MR.Mesh.mirror.
Public Member Functions inherited from MR.Const_Mesh
virtual void Dispose ()
unsafe Const_Mesh ()
 Constructs an empty (default-constructed) instance.
unsafe Const_Mesh (MR._ByValue_Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
 Const_Mesh (Const_Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
 Const_Mesh (Mesh _other)
 Generated from constructor MR.Mesh.Mesh.
unsafe MR.Vector3f orgPnt (MR.EdgeId e)
 returns coordinates of the edge origin Generated from method MR.Mesh.orgPnt.
unsafe MR.Vector3f destPnt (MR.EdgeId e)
 returns coordinates of the edge destination Generated from method MR.Mesh.destPnt.
unsafe MR.Vector3f edgeVector (MR.EdgeId e)
 returns vector equal to edge destination point minus edge origin point Generated from method MR.Mesh.edgeVector.
unsafe MR.LineSegm3f edgeSegment (MR.EdgeId e)
 returns line segment of given edge Generated from method MR.Mesh.edgeSegment.
unsafe MR.Vector3f edgePoint (MR.EdgeId e, float f)
 returns a point on the edge: origin point for f=0 and destination point for f=1 Generated from method MR.Mesh.edgePoint.
unsafe MR.Vector3f edgePoint (MR.Const_EdgePoint ep)
 computes coordinates of point given as edge and relative position on it Generated from method MR.Mesh.edgePoint.
unsafe MR.Vector3f edgeCenter (MR.UndirectedEdgeId e)
 computes the center of given edge Generated from method MR.Mesh.edgeCenter.
unsafe void getLeftTriPoints (MR.EdgeId e, ref MR.Vector3f v0, ref MR.Vector3f v1, ref MR.Vector3f v2)
 returns three points of left face of e: v0 = orgPnt( e ), v1 = destPnt( e ) Generated from method MR.Mesh.getLeftTriPoints.
unsafe MR.Std.Array_MRVector3f_3 getLeftTriPoints (MR.EdgeId e)
 returns three points of left face of e: res[0] = orgPnt( e ), res[1] = destPnt( e ) Generated from method MR.Mesh.getLeftTriPoints.
unsafe void getTriPoints (MR.FaceId f, ref MR.Vector3f v0, ref MR.Vector3f v1, ref MR.Vector3f v2)
 returns three points of given face Generated from method MR.Mesh.getTriPoints.
unsafe MR.Std.Array_MRVector3f_3 getTriPoints (MR.FaceId f)
 returns three points of given face Generated from method MR.Mesh.getTriPoints.
unsafe MR.Vector3f triPoint (MR.Const_MeshTriPoint p)
 computes coordinates of point given as face and barycentric representation Generated from method MR.Mesh.triPoint.
unsafe MR.Vector3f triCenter (MR.FaceId f)
 returns the centroid of given triangle Generated from method MR.Mesh.triCenter.
unsafe float triangleAspectRatio (MR.FaceId f)
 returns aspect ratio of given mesh triangle equal to the ratio of the circum-radius to twice its in-radius Generated from method MR.Mesh.triangleAspectRatio.
unsafe float circumcircleDiameterSq (MR.FaceId f)
 returns squared circumcircle diameter of given mesh triangle Generated from method MR.Mesh.circumcircleDiameterSq.
unsafe float circumcircleDiameter (MR.FaceId f)
 returns circumcircle diameter of given mesh triangle Generated from method MR.Mesh.circumcircleDiameter.
unsafe MR.MeshTriPoint toTriPoint (MR.VertId v)
 converts vertex into barycentric representation Generated from method MR.Mesh.toTriPoint.
unsafe MR.MeshTriPoint toTriPoint (MR.FaceId f, in MR.Vector3f p)
 converts face id and 3d point into barycentric representation Generated from method MR.Mesh.toTriPoint.
unsafe MR.MeshTriPoint toTriPoint (MR.Const_PointOnFace p)
 converts face id and 3d point into barycentric representation Generated from method MR.Mesh.toTriPoint.
unsafe MR.EdgePoint toEdgePoint (MR.VertId v)
 converts vertex into edge-point representation Generated from method MR.Mesh.toEdgePoint.
unsafe MR.EdgePoint toEdgePoint (MR.EdgeId e, in MR.Vector3f p)
 converts edge and 3d point into edge-point representation Generated from method MR.Mesh.toEdgePoint.
unsafe MR.VertId getClosestVertex (MR.Const_PointOnFace p)
 returns one of three face vertices, closest to given point Generated from method MR.Mesh.getClosestVertex.
unsafe MR.VertId getClosestVertex (MR.Const_MeshTriPoint p)
 returns one of three face vertices, closest to given point Generated from method MR.Mesh.getClosestVertex.
unsafe MR.UndirectedEdgeId getClosestEdge (MR.Const_PointOnFace p)
 returns one of three face edges, closest to given point Generated from method MR.Mesh.getClosestEdge.
unsafe MR.UndirectedEdgeId getClosestEdge (MR.Const_MeshTriPoint p)
 returns one of three face edges, closest to given point Generated from method MR.Mesh.getClosestEdge.
unsafe float edgeLength (MR.UndirectedEdgeId e)
 returns Euclidean length of the edge Generated from method MR.Mesh.edgeLength.
unsafe MR.UndirectedEdgeScalars edgeLengths ()
 computes and returns the lengths of all edges in the mesh Generated from method MR.Mesh.edgeLengths.
unsafe float edgeLengthSq (MR.UndirectedEdgeId e)
 returns squared Euclidean length of the edge (faster to compute than length) Generated from method MR.Mesh.edgeLengthSq.
unsafe MR.Vector3f leftDirDblArea (MR.EdgeId e)
 computes directed double area of left triangular face of given edge Generated from method MR.Mesh.leftDirDblArea.
unsafe MR.Vector3f dirDblArea (MR.FaceId f)
 computes directed double area for a triangular face from its vertices Generated from method MR.Mesh.dirDblArea.
unsafe float dblArea (MR.FaceId f)
 returns twice the area of given face Generated from method MR.Mesh.dblArea.
unsafe float area (MR.FaceId f)
 returns the area of given face Generated from method MR.Mesh.area.
unsafe double area (MR.Const_FaceBitSet? fs=null)
 computes the area of given face-region (or whole mesh) Generated from method MR.Mesh.area.
unsafe MR.Vector3d dirArea (MR.Const_FaceBitSet? fs=null)
 computes the sum of directed areas for faces from given region (or whole mesh) Generated from method MR.Mesh.dirArea.
unsafe double projArea (in MR.Vector3f dir, MR.Const_FaceBitSet? fs=null)
 computes the sum of absolute projected area of faces from given region (or whole mesh) as visible if look from given direction Generated from method MR.Mesh.projArea.
unsafe double volume (MR.Const_FaceBitSet? region=null)
 returns volume of the object surrounded by given region (or whole mesh if (region) is nullptr); if the region has holes then each hole will be virtually filled by adding triangles for each edge and the hole's geometrical center Generated from method MR.Mesh.volume.
unsafe double holePerimeter (MR.EdgeId e)
 computes the perimeter of the hole specified by one of its edges with no valid left face (left is hole) Generated from method MR.Mesh.holePerimeter.
unsafe MR.Vector3d holeDirArea (MR.EdgeId e)
 computes directed area of the hole specified by one of its edges with no valid left face (left is hole); if the hole is planar then returned vector is orthogonal to the plane pointing outside and its magnitude is equal to hole area Generated from method MR.Mesh.holeDirArea.
unsafe MR.Vector3f leftTangent (MR.EdgeId e)
 computes unit vector that is both orthogonal to given edge and to the normal of its left triangle, the vector is directed inside left triangle Generated from method MR.Mesh.leftTangent.
unsafe MR.Vector3f leftNormal (MR.EdgeId e)
 computes triangular face normal from its vertices Generated from method MR.Mesh.leftNormal.
unsafe MR.Vector3f normal (MR.FaceId f)
 computes triangular face normal from its vertices Generated from method MR.Mesh.normal.
unsafe MR.Plane3f getPlane3f (MR.FaceId f)
 returns the plane containing given triangular face with normal looking outwards Generated from method MR.Mesh.getPlane3f.
unsafe MR.Plane3d getPlane3d (MR.FaceId f)
 Generated from method MR.Mesh.getPlane3d.
unsafe MR.Vector3f dirDblArea (MR.VertId v)
 computes sum of directed double areas of all triangles around given vertex Generated from method MR.Mesh.dirDblArea.
unsafe float dblArea (MR.VertId v)
 computes the length of summed directed double areas of all triangles around given vertex Generated from method MR.Mesh.dblArea.
unsafe MR.Vector3f normal (MR.VertId v)
 computes normal in a vertex using sum of directed areas of neighboring triangles Generated from method MR.Mesh.normal.
unsafe MR.Vector3f normal (MR.Const_MeshTriPoint p)
 computes normal in three vertices of p's triangle, then interpolates them using barycentric coordinates and normalizes again; this is the same normal as in rendering with smooth shading Generated from method MR.Mesh.normal.
unsafe MR.Vector3f pseudonormal (MR.VertId v, MR.Const_FaceBitSet? region=null)
 computes angle-weighted sum of normals of incident faces of given vertex (only (region) faces will be considered); the sum is normalized before returning Generated from method MR.Mesh.pseudonormal.
unsafe MR.Vector3f pseudonormal (MR.UndirectedEdgeId e, MR.Const_FaceBitSet? region=null)
 computes normalized half sum of face normals sharing given edge (only (region) faces will be considered); Generated from method MR.Mesh.pseudonormal.
unsafe MR.Vector3f pseudonormal (MR.Const_MeshTriPoint p, MR.Const_FaceBitSet? region=null)
 returns pseudonormal in corresponding face/edge/vertex for signed distance calculation as suggested in the article "Signed Distance Computation Using the Angle Weighted Pseudonormal" by J. Andreas Baerentzen and Henrik Aanaes, https://backend.orbit.dtu.dk/ws/portalfiles/portal/3977815/B_rentzen.pdf unlike normal( const MeshTriPoint & p ), this is not a smooth function Generated from method MR.Mesh.pseudonormal.
unsafe float signedDistance (in MR.Vector3f pt, MR.Const_MeshProjectionResult proj, MR.Const_FaceBitSet? region=null)
 given a point (pt) in 3D and the closest point to in on mesh (proj),
unsafe float signedDistance (in MR.Vector3f pt)
 given a point (pt) in 3D, computes the closest point on mesh, and
unsafe MR.Std.Optional_Float signedDistance (in MR.Vector3f pt, float maxDistSq, MR.Const_FaceBitSet? region=null)
 given a point (pt) in 3D, computes the closest point on mesh, and
unsafe float calcFastWindingNumber (in MR.Vector3f pt, float? beta=null)
 computes generalized winding number in a point (pt), which is
unsafe bool isOutside (in MR.Vector3f pt, float? windingNumberThreshold=null, float? beta=null)
 computes whether a point (pt) is located outside the object surrounded by this mesh using generalized winding number
unsafe bool isOutsideByProjNorm (in MR.Vector3f pt, MR.Const_MeshProjectionResult proj, MR.Const_FaceBitSet? region=null)
 computes whether a point (pt) is located outside the object surrounded by this mesh using pseudonormal at the closest point to in on mesh (proj); this method works much faster than isOutside but can return wrong sign if the closest point is located on self-intersecting part of the mesh Generated from method MR.Mesh.isOutsideByProjNorm.
unsafe float sumAngles (MR.VertId v, MR.Misc.InOut< bool >? outBoundaryVert=null)
 computes the sum of triangle angles at given vertex; optionally returns whether the vertex is on boundary Generated from method MR.Mesh.sumAngles.
unsafe MR.VertBitSet findSpikeVertices (float minSumAngle, MR.Const_VertBitSet? region=null, MR.Std.Const_Function_Bool_From_Float? cb=null)
 returns vertices where the sum of triangle angles is below given threshold Generated from method MR.Mesh.findSpikeVertices. Parameter cb defaults to {}.
unsafe float dihedralAngleSin (MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes sine of dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface Generated from method MR.Mesh.dihedralAngleSin.
unsafe float dihedralAngleCos (MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes cosine of dihedral angle between them: 1 if both faces are in the same plane, 0 if the surface makes right angle turn at the edge, -1 if the faces overlap one another Generated from method MR.Mesh.dihedralAngleCos.
unsafe float dihedralAngle (MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes the dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface; please consider the usage of faster dihedralAngleSin(e) and dihedralAngleCos(e) Generated from method MR.Mesh.dihedralAngle.
unsafe float discreteMeanCurvature (MR.VertId v)
 computes discrete mean curvature in given vertex, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface Generated from method MR.Mesh.discreteMeanCurvature.
unsafe float discreteMeanCurvature (MR.UndirectedEdgeId e)
 computes discrete mean curvature in given edge, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface Generated from method MR.Mesh.discreteMeanCurvature.
unsafe float discreteGaussianCurvature (MR.VertId v, MR.Misc.InOut< bool >? outBoundaryVert=null)
 computes discrete Gaussian curvature (or angle defect) at given vertex, which 0 in inner vertices on planar mesh parts and reaches 2*pi on needle's tip, see http://math.uchicago.edu/~may/REU2015/REUPapers/Upadhyay.pdf optionally returns whether the vertex is on boundary Generated from method MR.Mesh.discreteGaussianCurvature.
unsafe MR.UndirectedEdgeBitSet findCreaseEdges (float angleFromPlanar)
 finds all mesh edges where dihedral angle is distinct from planar PI angle on at least given value Generated from method MR.Mesh.findCreaseEdges.
unsafe float leftCotan (MR.EdgeId e)
 computes cotangent of the angle in the left( e ) triangle opposite to e, and returns 0 if left face does not exist Generated from method MR.Mesh.leftCotan.
unsafe float cotan (MR.UndirectedEdgeId ue)
 computes sum of cotangents of the angle in the left and right triangles opposite to given edge, consider cotangents zero for not existing triangles Generated from method MR.Mesh.cotan.
unsafe MR.QuadraticForm3f quadraticForm (MR.VertId v, bool angleWeigted, MR.Const_FaceBitSet? region=null, MR.Const_UndirectedEdgeBitSet? creases=null)
 computes quadratic form in the vertex as the sum of squared distances from 1) planes of adjacent triangles, with the weight equal to the angle of adjacent triangle at this vertex divided on PI in case of angleWeigted=true; 2) lines of adjacent boundary and crease edges Generated from method MR.Mesh.quadraticForm.
unsafe MR.Box3f getBoundingBox ()
 returns the bounding box containing all valid vertices (implemented via getAABBTree()) this bounding box is insignificantly bigger that minimal box due to AABB algorithms precision Generated from method MR.Mesh.getBoundingBox.
unsafe MR.Box3f computeBoundingBox (MR.AffineXf3f? toWorld=null)
 passes through all valid vertices and finds the minimal bounding box containing all of them; if toWorld transformation is given then returns minimal bounding box in world space Generated from method MR.Mesh.computeBoundingBox.
unsafe MR.Box3f computeBoundingBox (MR.Const_FaceBitSet? region, MR.AffineXf3f? toWorld=null)
 passes through all given faces (or whole mesh if region == null) and finds the minimal bounding box containing all of them if toWorld transformation is given then returns minimal bounding box in world space Generated from method MR.Mesh.computeBoundingBox.
unsafe float averageEdgeLength ()
 computes average length of an edge in this mesh Generated from method MR.Mesh.averageEdgeLength.
unsafe MR.Vector3f findCenterFromPoints ()
 computes average position of all valid mesh vertices Generated from method MR.Mesh.findCenterFromPoints.
unsafe MR.Vector3f findCenterFromFaces ()
 computes center of mass considering that density of all triangles is the same Generated from method MR.Mesh.findCenterFromFaces.
unsafe MR.Vector3f findCenterFromBBox ()
 computes bounding box and returns its center Generated from method MR.Mesh.findCenterFromBBox.
unsafe MR.Mesh cloneRegion (MR.Const_FaceBitSet region, bool? flipOrientation=null, MR.Const_PartMapping? map=null)
 creates new mesh from given triangles of this mesh Generated from method MR.Mesh.cloneRegion. Parameter flipOrientation defaults to false. Parameter map defaults to {}.
unsafe bool projectPoint (in MR.Vector3f point, MR.PointOnFace res, float? maxDistSq=null, MR.Const_FaceBitSet? region=null, MR.AffineXf3f? xf=null)
 finds the closest mesh point on this mesh (or its region) to given point;
unsafe bool projectPoint (in MR.Vector3f point, MR.MeshProjectionResult res, float? maxDistSq=null, MR.Const_FaceBitSet? region=null, MR.AffineXf3f? xf=null)
 finds the closest mesh point on this mesh (or its region) to given point;
unsafe bool findClosestPoint (in MR.Vector3f point, MR.MeshProjectionResult res, float? maxDistSq=null, MR.Const_FaceBitSet? region=null, MR.AffineXf3f? xf=null)
 Generated from method MR.Mesh.findClosestPoint. Parameter maxDistSq defaults to 3.40282347e38f.
unsafe MR.MeshProjectionResult projectPoint (in MR.Vector3f point, float? maxDistSq=null, MR.Const_FaceBitSet? region=null, MR.AffineXf3f? xf=null)
 finds the closest mesh point on this mesh (or its region) to given point;
unsafe MR.MeshProjectionResult findClosestPoint (in MR.Vector3f point, float? maxDistSq=null, MR.Const_FaceBitSet? region=null, MR.AffineXf3f? xf=null)
 Generated from method MR.Mesh.findClosestPoint. Parameter maxDistSq defaults to 3.40282347e38f.
unsafe MR.Const_AABBTree getAABBTree ()
 returns cached aabb-tree for this mesh, creating it if it did not exist in a thread-safe manner Generated from method MR.Mesh.getAABBTree.
unsafe MR.? Const_AABBTree getAABBTreeNotCreate ()
 returns cached aabb-tree for this mesh, but does not create it if it did not exist Generated from method MR.Mesh.getAABBTreeNotCreate.
unsafe MR.Const_AABBTreePoints getAABBTreePoints ()
 returns cached aabb-tree for points of this mesh, creating it if it did not exist in a thread-safe manner Generated from method MR.Mesh.getAABBTreePoints.
unsafe MR.? Const_AABBTreePoints getAABBTreePointsNotCreate ()
 returns cached aabb-tree for points of this mesh, but does not create it if it did not exist Generated from method MR.Mesh.getAABBTreePointsNotCreate.
unsafe MR.Const_Dipoles getDipoles ()
 returns cached dipoles of aabb-tree nodes for this mesh, creating it if it did not exist in a thread-safe manner Generated from method MR.Mesh.getDipoles.
unsafe MR.? Const_Dipoles getDipolesNotCreate ()
 returns cached dipoles of aabb-tree nodes for this mesh, but does not create it if it did not exist Generated from method MR.Mesh.getDipolesNotCreate.
unsafe ulong heapBytes ()
 Generated from method MR.Mesh.heapBytes.
bool Equals (MR.Const_Mesh? b)
override bool Equals (object? other)

Properties

new unsafe MR.MeshTopology topology [get, protected set]
new unsafe MR.VertCoords points [get, protected set]
Properties inherited from MR.Const_Mesh
unsafe MR.Const_MeshTopology topology [get, protected set]
unsafe MR.Const_VertCoords points [get, protected set]

Additional Inherited Members

Static Public Member Functions inherited from MR.Const_Mesh
static unsafe MR.Mesh fromTriangles (MR._ByValue_VertCoords vertexCoordinates, MR.Const_Triangulation t, MR.MeshBuilder.Const_BuildSettings? settings=null, MR.Std._ByValue_Function_Bool_From_Float? cb=null)
 construct mesh from vertex coordinates and a set of triangles with given ids Generated from method MR.Mesh.fromTriangles. Parameter settings defaults to {}. Parameter cb defaults to {}.
static unsafe MR.Mesh fromTriMesh (MR.Misc._Moved< MR.TriMesh > triMesh, MR.MeshBuilder.Const_BuildSettings? settings=null, MR.Std._ByValue_Function_Bool_From_Float? cb=null)
 construct mesh from TriMesh representation Generated from method MR.Mesh.fromTriMesh. Parameter settings defaults to {}. Parameter cb defaults to {}.
static unsafe MR.Mesh fromTrianglesDuplicatingNonManifoldVertices (MR._ByValue_VertCoords vertexCoordinates, MR.Triangulation t, MR.Std.Vector_MRMeshBuilderVertDuplication? dups=null, MR.MeshBuilder.Const_BuildSettings? settings=null)
 construct mesh from vertex coordinates and a set of triangles with given ids; unlike simple fromTriangles() it tries to resolve non-manifold vertices by creating duplicate vertices Generated from method MR.Mesh.fromTrianglesDuplicatingNonManifoldVertices. Parameter settings defaults to {}.
static unsafe MR.Mesh fromFaceSoup (MR._ByValue_VertCoords vertexCoordinates, MR.Std.Const_Vector_MRVertId verts, MR.Const_Vector_MRMeshBuilderVertSpan_MRFaceId faces, MR.MeshBuilder.Const_BuildSettings? settings=null, MR.Std._ByValue_Function_Bool_From_Float? cb=null)
 construct mesh from vertex coordinates and construct mesh topology from face soup, where each face can have arbitrary degree (not only triangles); all non-triangular faces will be automatically subdivided on triangles Generated from method MR.Mesh.fromFaceSoup. Parameter settings defaults to {}. Parameter cb defaults to {}.
static unsafe MR.Mesh fromPointTriples (MR.Std.Const_Vector_StdArrayMRVector3f3 posTriples, bool duplicateNonManifoldVertices)
 construct mesh from point triples;
static unsafe bool operator== (MR.Const_Mesh _this, MR.Const_Mesh b)
 compare that two meshes are exactly the same Generated from method MR::Mesh::operator==.
static unsafe bool operator!= (MR.Const_Mesh _this, MR.Const_Mesh b)
Protected Member Functions inherited from MR.Const_Mesh
virtual unsafe void Dispose (bool disposing)

Detailed Description

This class represents a mesh, including topology (connectivity) information and point coordinates, as well as some caches to accelerate search algorithms Generated from class MR.Mesh. This is the non-const half of the class.

Constructor & Destructor Documentation

◆ Mesh() [1/4]

unsafe MR.Mesh.Mesh ( )
inline

Constructs an empty (default-constructed) instance.

◆ Mesh() [2/4]

unsafe MR.Mesh.Mesh ( MR._ByValue_Mesh _other)
inline

Generated from constructor MR.Mesh.Mesh.

◆ Mesh() [3/4]

MR.Mesh.Mesh ( Const_Mesh _other)
inline

Generated from constructor MR.Mesh.Mesh.

◆ Mesh() [4/4]

MR.Mesh.Mesh ( Mesh _other)
inline

Generated from constructor MR.Mesh.Mesh.

Member Function Documentation

◆ addMesh() [1/2]

unsafe void MR.Mesh.addMesh ( MR.Const_Mesh from,
MR.Const_PartMapping? map = null,
bool? rearrangeTriangles = null )
inline

appends another mesh as separate connected component(s) to this Generated from method MR.Mesh.addMesh. Parameter map defaults to {}. Parameter rearrangeTriangles defaults to false.

◆ addMesh() [2/2]

unsafe void MR.Mesh.addMesh ( MR.Const_Mesh from,
MR.FaceMap? outFmap,
MR.VertMap? outVmap = null,
MR.WholeEdgeMap? outEmap = null,
bool? rearrangeTriangles = null )
inline

Generated from method MR.Mesh.addMesh. Parameter rearrangeTriangles defaults to false.

◆ addMeshPart() [1/2]

unsafe void MR.Mesh.addMeshPart ( MR.Const_MeshPart from,
bool? flipOrientation = null,
MR.Std.Const_Vector_StdVectorMREdgeId? thisContours = null,
MR.Std.Const_Vector_StdVectorMREdgeId? fromContours = null,
MR.Const_PartMapping? map = null )
inline

appends whole or part of another mesh to this joining added faces with existed ones along given contours

Parameters
flipOrientationtrue means that every (from) triangle is inverted before adding Generated from method MR.Mesh.addMeshPart. Parameter flipOrientation defaults to false. Parameter thisContours defaults to {}. Parameter fromContours defaults to {}. Parameter map defaults to {}.

◆ addMeshPart() [2/2]

unsafe void MR.Mesh.addMeshPart ( MR.Const_MeshPart from,
MR.Const_PartMapping map )
inline

appends whole or part of another mesh as separate connected component(s) to this Generated from method MR.Mesh.addMeshPart.

◆ addPoint()

unsafe MR.VertId MR.Mesh.addPoint ( in MR.Vector3f pos)
inline

creates new point and assigns given position to it Generated from method MR.Mesh.addPoint.

◆ addSeparateContours()

unsafe MR.EdgeId MR.Mesh.addSeparateContours ( MR.Std.Const_Vector_StdVectorMRVector3f contours,
MR.AffineXf3f? xf = null )
inline

append points to mesh and connect them returns first EdgeId of new edges Generated from method MR.Mesh.addSeparateContours.

◆ addSeparateEdgeLoop()

unsafe MR.EdgeId MR.Mesh.addSeparateEdgeLoop ( MR.Std.Const_Vector_MRVector3f contourPoints)
inline

append points to mesh and connect them as closed edge loop returns first EdgeId of new edges Generated from method MR.Mesh.addSeparateEdgeLoop.

◆ assign()

unsafe MR.Mesh MR.Mesh.assign ( MR._ByValue_Mesh _other)
inline

Generated from method MR::Mesh::operator=.

◆ attachEdgeLoopPart()

unsafe void MR.Mesh.attachEdgeLoopPart ( MR.EdgeId first,
MR.EdgeId last,
MR.Std.Const_Vector_MRVector3f contourPoints )
inline

append points to mesh and connect them to given edges making edge loop first point connects with first edge dest last point connects with last edge org note that first and last edge should have no left face Generated from method MR.Mesh.attachEdgeLoopPart.

◆ deleteFaces()

unsafe void MR.Mesh.deleteFaces ( MR.Const_FaceBitSet fs,
MR.Const_UndirectedEdgeBitSet? keepEdges = null )
inline

deletes multiple given faces, also deletes adjacent edges and vertices if they were not shared by remaining faces and not in

Parameters
keepEdgesGenerated from method MR.Mesh.deleteFaces.

◆ invalidateCaches()

unsafe void MR.Mesh.invalidateCaches ( bool? pointsChanged = null)
inline

invalidates caches (aabb-trees) after any change in mesh geometry or topology

Parameters
pointsChangedspecifies whether points have changed (otherwise only topology has changed) Generated from method MR.Mesh.invalidateCaches. Parameter pointsChanged defaults to true.

◆ mirror()

unsafe void MR.Mesh.mirror ( MR.Const_Plane3f plane)
inline

reflects the mesh from a given plane Generated from method MR.Mesh.mirror.

◆ pack() [1/3]

unsafe void MR.Mesh.pack ( MR.Const_PackMapping map,
MR.Std._ByValue_Function_Bool_From_Float? cb = null )
inline

tightly packs all arrays eliminating lone edges and invalid faces, vertices and points, reorder all faces, vertices and edges according to given maps, each containing old id -> new id mapping Generated from method MR.Mesh.pack. Parameter cb defaults to {}.

◆ pack() [2/3]

unsafe void MR.Mesh.pack ( MR.Const_PartMapping? map = null,
bool? rearrangeTriangles = null )
inline

tightly packs all arrays eliminating lone edges and invalid faces, vertices and points Generated from method MR.Mesh.pack. Parameter map defaults to {}. Parameter rearrangeTriangles defaults to false.

◆ pack() [3/3]

unsafe void MR.Mesh.pack ( MR.FaceMap? outFmap,
MR.VertMap? outVmap = null,
MR.WholeEdgeMap? outEmap = null,
bool? rearrangeTriangles = null )
inline

Generated from method MR.Mesh.pack. Parameter rearrangeTriangles defaults to false.

◆ packOptimally() [1/2]

unsafe MR.PackMapping MR.Mesh.packOptimally ( bool preserveAABBTree,
MR.Std._ByValue_Function_Bool_From_Float cb )
inline

Generated from method MR.Mesh.packOptimally.

◆ packOptimally() [2/2]

unsafe MR.PackMapping MR.Mesh.packOptimally ( bool? preserveAABBTree = null)
inline

packs tightly and rearranges vertices, triangles and edges to put close in space elements in close indices

Parameters
preserveAABBTreewhether to keep valid mesh's AABB tree after return (it will take longer to compute and it will occupy more memory) Generated from method MR.Mesh.packOptimally. Parameter preserveAABBTree defaults to true.

◆ shrinkToFit()

unsafe void MR.Mesh.shrinkToFit ( )
inline

requests the removal of unused capacity Generated from method MR.Mesh.shrinkToFit.

◆ splitEdge() [1/2]

unsafe MR.EdgeId MR.Mesh.splitEdge ( MR.EdgeId e,
in MR.Vector3f newVertPos,
MR.FaceBitSet? region = null,
MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old = null )
inline

split given edge on two parts: dest(returned-edge) = org(e) - newly created vertex, org(returned-edge) = org(e-before-split), dest(e) = dest(e-before-split)

left and right faces of given edge if valid are also subdivided on two parts each; the split edge will keep both face IDs and their degrees, and the new edge will have new face IDs and new faces are triangular; if left or right faces of the original edge were in the region, then include new parts of these faces in the region

Parameters
new2Oldreceive mapping from newly appeared triangle to its original triangle (part to full) Generated from method MR.Mesh.splitEdge.

◆ splitEdge() [2/2]

unsafe MR.EdgeId MR.Mesh.splitEdge ( MR.EdgeId e,
MR.FaceBitSet? region = null,
MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old = null )
inline

Generated from method MR.Mesh.splitEdge.

◆ splitFace() [1/2]

unsafe MR.VertId MR.Mesh.splitFace ( MR.FaceId f,
in MR.Vector3f newVertPos,
MR.FaceBitSet? region = null,
MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old = null )
inline

split given triangle on three triangles, introducing new vertex with given coordinates and connecting it to original triangle vertices; if region is given, then it must include (f) and new faces will be added there as well

Parameters
new2Oldreceive mapping from newly appeared triangle to its original triangle (part to full) Generated from method MR.Mesh.splitFace.

◆ splitFace() [2/2]

unsafe MR.VertId MR.Mesh.splitFace ( MR.FaceId f,
MR.FaceBitSet? region = null,
MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old = null )
inline

Generated from method MR.Mesh.splitFace.

◆ transform()

unsafe void MR.Mesh.transform ( in MR.AffineXf3f xf,
MR.Const_VertBitSet? region = null )
inline

applies given transformation to specified vertices if region is nullptr, all valid mesh vertices are used

Generated from method MR.Mesh.transform.

◆ updateCaches()

unsafe void MR.Mesh.updateCaches ( MR.Const_VertBitSet changedVerts)
inline

updates existing caches in case of few vertices were changed insignificantly, and topology remained unchanged; it shall be considered as a faster alternative to invalidateCaches() and following rebuild of trees Generated from method MR.Mesh.updateCaches.

◆ zeroUnusedPoints()

unsafe void MR.Mesh.zeroUnusedPoints ( )
inline

for all points not in topology.getValidVerts() sets coordinates to (0,0,0) Generated from method MR.Mesh.zeroUnusedPoints.

Property Documentation

◆ points

new unsafe MR.VertCoords MR.Mesh.points
getprotected set

◆ topology

new unsafe MR.MeshTopology MR.Mesh.topology
getprotected set

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