None mrmeshpy.accumulateFaceCenters | ( | PointAccumulator | accum, |
MeshPart | mp, | ||
AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all mesh face centers with the weight equal to face area
None mrmeshpy.accumulateLineCenters | ( | PointAccumulator | accum, |
Polyline3 | pl, | ||
AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all line centers with the weight equal to the length line
None mrmeshpy.accumulatePoints | ( | PointAccumulator | accum, |
PointCloud | pc, | ||
AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all points from the cloud with weight 1
None mrmeshpy.accumulatePoints | ( | PointAccumulator | accum, |
std_vector_Vector3_float | points, | ||
AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all given points
None mrmeshpy.accumulateWeighedPoints | ( | PointAccumulator | accum, |
std_vector_Vector3_float | points, | ||
std_vector_float | weights, | ||
AffineXf3f | xf = None ) |
Adds in existing PointAccumulator all given weighed points
None mrmeshpy.addBaseToPlanarMesh | ( | Mesh | mesh, |
float | zOffset ) |
given a planar mesh with boundary on input located in plane XY, packs and extends it along Z on zOffset (along -Z if zOffset is negative) to make a volumetric closed mesh
None mrmeshpy.addLeftBand | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | loop, | ||
FaceBitSet | addHere ) |
adds all faces incident to loop vertices and located to the left from the loop to given FaceBitSet
None mrmeshpy.addNoise | ( | Mesh | mesh, |
VertBitSet | region = None, | ||
NoiseSettings | settings = '{}' ) |
None mrmeshpy.addNoise | ( | VertCoords | points, |
VertBitSet | validVerts, | ||
NoiseSettings | settings ) |
Adds noise to the points, using a normal distribution
Mesh mrmeshpy.alignTextToMesh | ( | Mesh | mesh, |
TextMeshAlignParams | params ) |
Creates symbol mesh and aligns it to given surface
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
computes minimal angle in [0,pi] between two vectors; the function is symmetric: angle( a, b ) == angle( b, a )
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_Object | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectDistanceMap | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectLines | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectLinesHolder | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectMesh | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectMeshHolder | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectPoints | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectPointsHolder | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_ObjectVoxels | res, | ||
ObjectSelectivityType | type ) |
None mrmeshpy.appendObjectFromTreeRecursive | ( | Object | obj, |
std_vector_std_shared_ptr_VisualObject | res, | ||
ObjectSelectivityType | type ) |
Vector3d mrmeshpy.applyDouble | ( | AffineXf3d | xf, |
Vector3f | p ) |
converts given point in double precision and applies given transformation to it
converts given normal in double precision and applies given matrix to it
Vector3f mrmeshpy.applyFloat | ( | AffineXf3d | xf, |
Vector3f | p ) |
returns the point as is or after application of given transform to it in double precision
returns the normal as is or after application of given matrix to it in double precision
Object mrmeshpy.asSelectivityType_Object | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectDistanceMap mrmeshpy.asSelectivityType_ObjectDistanceMap | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectLines mrmeshpy.asSelectivityType_ObjectLines | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectLinesHolder mrmeshpy.asSelectivityType_ObjectLinesHolder | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectMesh mrmeshpy.asSelectivityType_ObjectMesh | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectMeshHolder mrmeshpy.asSelectivityType_ObjectMeshHolder | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectPoints mrmeshpy.asSelectivityType_ObjectPoints | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectPointsHolder mrmeshpy.asSelectivityType_ObjectPointsHolder | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
ObjectVoxels mrmeshpy.asSelectivityType_ObjectVoxels | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
VisualObject mrmeshpy.asSelectivityType_VisualObject | ( | Object | obj, |
ObjectSelectivityType | type ) |
if input object is of given type then returns another pointer on it
str mrmeshpy.asString | ( | SignDetectionMode | m | ) |
returns string representation of enum values
str mrmeshpy.asString | ( | str | s | ) |
str mrmeshpy.asU8String | ( | str | s | ) |
bool mrmeshpy.autoOrientLocalTriangulations | ( | PointCloud | pointCloud, |
AllLocalTriangulations | triangs, | ||
VertBitSet | region, | ||
func_bool_from_float | progress = '{}', | ||
Triangulation | outRep3 = None, | ||
Triangulation | outRep2 = None ) |
orient neighbors around each point in \\param region so there will be as many triangles with same (and not opposite) orientation as possible
RingIterator_NextEdgeSameOrigin mrmeshpy.begin | ( | IteratorRange_RingIterator_NextEdgeSameOrigin | range | ) |
ViewportIterator mrmeshpy.begin | ( | ViewportMask | mask | ) |
given quadrangle ABCD, selects how to best triangulate it: false = by introducing BD diagonal and splitting ABCD on triangles ABD and DBC, true = by introducing AC diagonal and splitting ABCD on triangles ABC and ACD
Blend two colors together \\note This operation is not commutative
BooleanResult mrmeshpy.boolean | ( | Mesh | meshA, |
Mesh | meshB, | ||
BooleanOperation | operation, | ||
AffineXf3f | rigidB2A, | ||
BooleanResultMapper | mapper = None, | ||
func_bool_from_float | cb = '{}' ) |
\\brief Performs CSG operation on two meshes \\ingroup BooleanGroup Makes new mesh - result of boolean operation on mesh `A` and mesh `B` \\param meshA Input mesh `A` \\param meshB Input mesh `B` \\param operation CSG operation to perform \\param rigidB2A Transform from mesh `B` space to mesh `A` space \\param mapper Optional output structure to map mesh `A` and mesh `B` topology to result mesh topology \\note Input meshes should have no self-intersections in intersecting zone \\note If meshes are not closed in intersecting zone some boolean operations are not allowed (as far as input meshes interior and exterior cannot be determined)
BooleanResult mrmeshpy.boolean | ( | Mesh | meshA, |
Mesh | meshB, | ||
BooleanOperation | operation, | ||
BooleanParameters | params = '{}' ) |
Id_EdgeTag mrmeshpy.buildBottom | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
Vector3f | dir, | ||
float | holeExtension, | ||
FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located in lowest point of the hole -dir*holeExtension and 2 * number_of_hole_edge triangles; \\return the edge of new hole opposite to input edge (a)
None mrmeshpy.buildCylinderBetweenTwoHoles | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
Id_EdgeTag | b, | ||
StitchHolesParams | params = '{}' ) |
\\brief Stitches two holes in Mesh\\n Build cylindrical patch to fill space between two holes represented by one of their edges each,\\n default metric: ComplexStitchMetric \\image html fill/before_stitch.png "Before" width = 250cm \\image html fill/stitch.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/stitch_smooth.png "Stitch with smooth" width = 250cm \\param mesh mesh with hole \\param a EdgeId which represents 1st hole (should not have valid left FaceId) \\param b EdgeId which represents 2nd hole (should not have valid left FaceId) \\param params parameters of holes stitching \\sa \\ref fillHole \\sa \\ref StitchHolesParams
bool mrmeshpy.buildCylinderBetweenTwoHoles | ( | Mesh | mesh, |
StitchHolesParams | params = '{}' ) |
this version finds holes in the mesh by itself and returns false if they are not found
std_vector_Id_EdgeTag mrmeshpy.buildShortestPath | ( | Mesh | mesh, |
VertId | start, | ||
VertBitSet | finish, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
builds shortest path in euclidean metric from start to finish vertices; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildShortestPath | ( | Mesh | mesh, |
VertId | start, | ||
VertId | finish, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using Dijkstra algorithm; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildShortestPathAStar | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
MeshTriPoint | finish, | ||
VertId | outPathStart = None, | ||
VertId | outPathFinish = None, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
finds the path from a vertex in start-triangle to a vertex in finish-triangle, so that the length start-first_vertex-...-last_vertex-finish is shortest in euclidean metric; using A* modification of Dijkstra algorithm, which is faster for near linear path; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildShortestPathAStar | ( | Mesh | mesh, |
VertId | start, | ||
VertId | finish, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using A* modification of Dijkstra algorithm, which is faster for near linear path; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildShortestPathBiDir | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
MeshTriPoint | finish, | ||
VertId | outPathStart = None, | ||
VertId | outPathFinish = None, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
finds the path from a vertex in start-triangle to a vertex in finish-triangle, so that the length start-first_vertex-...-last_vertex-finish is shortest in euclidean metric; using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildShortestPathBiDir | ( | Mesh | mesh, |
VertId | start, | ||
VertId | finish, | ||
float | maxPathLen = 3.4028234663852886e+38 ) |
finds the shortest path in euclidean metric from start to finish vertices using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPath | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
VertId | start, | ||
VertBitSet | finish, | ||
float | maxPathMetric = 3.4028234663852886e+38 ) |
builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPath | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
VertId | start, | ||
VertId | finish, | ||
float | maxPathMetric = 3.4028234663852886e+38 ) |
builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
std_vector_unsigned_long_long mrmeshpy.buildSmallestMetricPath | ( | VdbVolume | voxels, |
func_float_from_unsigned_long_long_unsigned_long_long | metric, | ||
int | start, | ||
int | finish, | ||
func_bool_from_float | cb = '{}' ) |
builds shortest path in given metric from start to finish voxels; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPathBiDir | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
TerminalVertex | starts, | ||
int | numStarts, | ||
TerminalVertex | finishes, | ||
int | numFinishes, | ||
VertId | outPathStart = None, | ||
VertId | outPathFinish = None, | ||
float | maxPathMetric = 3.4028234663852886e+38 ) |
finds the smallest metric path from one of start vertices to one of the finish vertices, using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both starts and finishes, which is faster for long paths; if no path can be found then empty path is returned
std_vector_Id_EdgeTag mrmeshpy.buildSmallestMetricPathBiDir | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
VertId | start, | ||
VertId | finish, | ||
float | maxPathMetric = 3.4028234663852886e+38 ) |
finds the smallest metric path from start vertex to finish vertex, using bidirectional modification of Dijkstra algorithm, constructing the path simultaneously from both start and finish, which is faster for long paths; if no path can be found then empty path is returned
AllLocalTriangulations mrmeshpy.buildUnitedLocalTriangulations | ( | PointCloud | cloud, |
TriangulationHelpers.Settings | settings, | ||
func_bool_from_float | progress = '{}' ) |
/ computes local triangulations of all points in the cloud united in one struct
str mrmeshpy.bytesString | ( | int | size | ) |
converts given size in string: [0,1024) -> nnn bytes [1024,1024*1024) -> nnn.nn Kb [1024*1024,1024*1024*1024) -> nnn.nn Mb ...
VertColors mrmeshpy.calcAvgColors | ( | PointCloud | cloud, |
VertColors | colors, | ||
VertCoords | tgtPoints, | ||
VertBitSet | tgtVerts, | ||
float | sigma, | ||
func_bool_from_float | cb = '{}' ) |
given \\param cloud a point cloud \\param colors colors of each point in the cloud \\param tgtPoints some target points \\param tgtVerts mask of valid target points \\param sigma the distance of highest influence of a point \\param cb progress callback computes the colors in valid target points by averaging the colors from the point cloud
float mrmeshpy.calcCombinedFillMetric | ( | Mesh | mesh, |
FaceBitSet | filledRegion, | ||
FillHoleMetric | metric ) |
Computes combined metric after filling a hole
int mrmeshpy.calcDamerauLevenshteinDistance | ( | str | stringA, |
str | stringB, | ||
bool | caseSensitive = True, | ||
int_output | outLeftRightAddition = None ) |
Calculates Damerau-Levenshtein distance between to strings \\param outLeftRightAddition if provided return amount of insertions to the left and to the right \\ingroup BasicGroup
calculates dipoles for given mesh and AABB-tree
FaceScalars mrmeshpy.calcFaceDistances | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
FaceBitSet | starts, | ||
FaceDistancesSettings | settings = '{}' ) |
computes and returns the distance of traveling from one of start faces to all other reachable faces on the mesh; all unreachable faces will get FLT_MAX value; \\param starts all start faces will get value 0 in the result; \\param metric metric(e) says the distance of traveling from left(e) to right(e)
float mrmeshpy.calcFastWindingNumber | ( | Dipoles | dipoles, |
AABBTree | tree, | ||
Mesh | mesh, | ||
Vector3f | q, | ||
float | beta, | ||
FaceId | skipFace ) |
compute approximate winding number at \\param q; \\param beta determines the precision of the approximation: the more the better, recommended value 2 or more; if distance from q to the center of some triangle group is more than beta times the distance from the center to most distance triangle in the group then we use approximate formula \\param skipFace this triangle (if it is close to \\param q) will be skipped from summation
float mrmeshpy.calcLength | ( | std_vector_Vector2_double | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
float mrmeshpy.calcLength | ( | std_vector_Vector2_float | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
float mrmeshpy.calcLength | ( | std_vector_Vector3_double | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
float mrmeshpy.calcLength | ( | std_vector_Vector3_float | contour | ) |
returns sum length of the given contour \\tparam R is the type for the accumulation and for result
Vector3d mrmeshpy.calcOrientedArea | ( | std_vector_Id_EdgeTag | loop, |
Mesh | mesh ) |
returns the vector with the magnitude equal to the area surrounded by the loop (if the loop is planar), and directed to see the loop in ccw order from the vector tip
float mrmeshpy.calcOrientedArea | ( | std_vector_Vector2_double | contour | ) |
>0 for clockwise loop, < 0 for CCW loop \\tparam R is the type for the accumulation and for result
float mrmeshpy.calcOrientedArea | ( | std_vector_Vector2_float | contour | ) |
>0 for clockwise loop, < 0 for CCW loop \\tparam R is the type for the accumulation and for result
Vector3d mrmeshpy.calcOrientedArea | ( | std_vector_Vector3_double | contour | ) |
returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip \\tparam R is the type for the accumulation and for result
Vector3f mrmeshpy.calcOrientedArea | ( | std_vector_Vector3_float | contour | ) |
returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip \\tparam R is the type for the accumulation and for result
OriginAndDimensions mrmeshpy.calcOriginAndDimensions | ( | Box3f | box, |
float | voxelSize ) |
computes origin and dimensions of voxel-grid to cover given 3D box with given spacing (voxelSize)
float mrmeshpy.calcPathLength | ( | std_vector_Id_EdgeTag | path, |
Mesh | mesh ) |
float mrmeshpy.calcPathMetric | ( | std_vector_Id_EdgeTag | path, |
func_float_from_Id_EdgeTag | metric ) |
computes summed metric of all edges in the path
bool mrmeshpy.canMinimizePolynomial | ( | int | degree | ) |
bool mrmeshpy.canSolvePolynomial | ( | int | degree | ) |
bool mrmeshpy.ccw | ( | PreciseVertCoords2 | vs | ) |
bool mrmeshpy.ccw | ( | std_array_PreciseVertCoords2_3 | vs | ) |
first sorts the indices in ascending order, then calls the predicate for sorted points
return true if the smallest rotation from vector (a) to vector (b) is in counter-clock-wise direction; uses simulation-of-simplicity to avoid "vectors are collinear"
return true if the smallest rotation from vector (a-c) to vector (b-c) is in counter-clock-wise direction; uses simulation-of-simplicity to avoid "vectors are collinear"
bool mrmeshpy.checkDeloneQuadrangle | ( | Vector3d | a, |
Vector3d | b, | ||
Vector3d | c, | ||
Vector3d | d, | ||
float | maxAngleChange = 1.7976931348623157e+308 ) |
given quadrangle ABCD, checks whether its edge AC satisfies Delone's condition; if dihedral angles 1) between triangles ABD and DBC and 2) between triangles ABC and ACD differ more than on maxAngleChange then also returns true to prevent flipping from 1) to 2)
bool mrmeshpy.checkDeloneQuadrangle | ( | Vector3f | a, |
Vector3f | b, | ||
Vector3f | c, | ||
Vector3f | d, | ||
float | maxAngleChange = 3.4028234663852886e+38 ) |
converts arguments in double and calls above function
bool mrmeshpy.checkDeloneQuadrangleInMesh | ( | Mesh | mesh, |
Id_EdgeTag | edge, | ||
DeloneSettings | settings = '{}', | ||
float_output | deviationSqAfterFlip = None ) |
consider quadrangle formed by left and right triangles of given edge, and checks whether this edge satisfies Delone's condition in the quadrangle; \\return false otherwise if flipping the edge does not introduce too large surface deviation (can be returned only for inner edge of the region)
ShellVertexInfo mrmeshpy.classifyShellVert | ( | MeshPart | mp, |
Vector3f | shellPoint, | ||
FindInnerShellSettings | settings = '{}' ) |
Tests \\param shellPoint from bidirectional shell constructed for an open \\param mp; \\return whether the distance from given point to given mesh part is of same sign as settings.side, if useWindingNumber = false, returns false for all points projecting on mesh boundary
ObjectMesh mrmeshpy.cloneRegion | ( | ObjectMesh | objMesh, |
FaceBitSet | region, | ||
bool | copyTexture = True ) |
constructs new ObjectMesh containing the region of data from input object does not copy selection
ObjectPoints mrmeshpy.cloneRegion | ( | ObjectPoints | objPoints, |
VertBitSet | region ) |
constructs new ObjectPoints containing the region of data from input object does not copy selection
DistanceMap mrmeshpy.combineXYderivativeMaps | ( | tuple[DistanceMap, DistanceMap] | XYderivativeMaps | ) |
fill another distance map pair with gradients across X and Y axes of the argument map
str mrmeshpy.commonFilesName | ( | std_vector_std_filesystem_path | files | ) |
in case of empty vector, returns "Empty" in case of single input file.ext, returns ".EXT" in case of multiple files with same extension, returns ".EXTs" otherwise returns "Files"
None mrmeshpy.compensateRadius | ( | Mesh | mesh, |
CompensateRadiusParams | params ) |
compensate spherical milling tool radius in given mesh region making it possible to mill it please note that it will change topology inside region also please note that boundaries of the region are fixed
None mrmeshpy.compressZip | ( | os.PathLike | str | bytes | zipFile, |
os.PathLike | str | bytes | sourceFolder, | ||
std_vector_std_filesystem_path | excludeFiles = '{}', | ||
str | password = None, | ||
func_bool_from_float | cb = '{}' ) |
\\brief compresses given folder in given zip-file \\param excludeFiles files that should not be included to result zip \\param password if password is given then the archive will be encrypted \\param cb an option to get progress notifications and cancel the operation
float mrmeshpy.computeBasinVolume | ( | Mesh | mesh, |
FaceBitSet | faces, | ||
float | level ) |
computes the volume of given mesh basin below given water level; \\param faces shall include all basin faces at least partially below the water level
phmap_flat_hash_map_Id_VertTag_Id_VertTag mrmeshpy.computeClosestSurfacePathTargets | ( | Mesh | mesh, |
VertBitSet | starts, | ||
VertBitSet | ends, | ||
VertBitSet | vertRegion = None, | ||
VertScalars | outSurfaceDistances = None ) |
for each vertex from (starts) finds the closest vertex from (ends) in geodesic sense \\param vertRegion consider paths going in this region only
DistanceMap mrmeshpy.computeDistanceMap | ( | MeshPart | mp, |
MeshToDistanceMapParams | params, | ||
func_bool_from_float | cb = '{}', | ||
std_vector_MeshTriPoint | outSamples = None ) |
computes distance (height) map for given projection parameters using float-precision for finding ray-mesh intersections, which is faster but less reliable
DistanceMap mrmeshpy.computeDistanceMapD | ( | MeshPart | mp, |
MeshToDistanceMapParams | params, | ||
func_bool_from_float | cb = '{}', | ||
std_vector_MeshTriPoint | outSamples = None ) |
computes distance (height) map for given projection parameters using double-precision for finding ray-mesh intersections, which is slower but more reliable
std_vector_EdgePoint mrmeshpy.computeFastMarchingPath | ( | MeshPart | mp, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
VertBitSet | vertRegion = None, | ||
VertScalars | outSurfaceDistances = None ) |
computes by Fast Marching method and returns intermediate points of approximately geodesic path from start to end, where it crosses mesh edges; the path can be limited to given region: in face-format inside mp, or in vert-format in vertRegion argument
QuadraticForm3f mrmeshpy.computeFormAtVertex | ( | MeshPart | mp, |
VertId | v, | ||
float | stabilizer, | ||
bool | angleWeigted, | ||
UndirectedEdgeBitSet | creases = None ) |
\\brief Computes quadratic form at given vertex of the initial surface before decimation \\ingroup DecimateGroup
Vector_QuadraticForm3f_VertId mrmeshpy.computeFormsAtVertices | ( | MeshPart | mp, |
float | stabilizer, | ||
bool | angleWeigted, | ||
UndirectedEdgeBitSet | creases = None ) |
\\brief Computes quadratic forms at every vertex of mesh part before decimation \\ingroup DecimateGroup
std_vector_EdgePoint mrmeshpy.computeGeodesicPath | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
GeodesicPathApprox | atype = 'GeodesicPathApprox::FastMarching', | ||
int | maxGeodesicIters = 100 ) |
returns intermediate points of the geodesic path from start to end, where it crosses mesh edges; It is the same as calling computeGeodesicPathApprox() then reducePath()
std_vector_EdgePoint mrmeshpy.computeGeodesicPathApprox | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
GeodesicPathApprox | atype ) |
computes by given method and returns intermediate points of approximately geodesic path from start to end, every next point is located in the same triangle with the previous point
VertScalars mrmeshpy.computeInSphereThicknessAtVertices | ( | Mesh | mesh, |
InSphereSearchSettings | settings, | ||
func_bool_from_float | progress = '{}' ) |
returns the thickness at each vertex as the diameter of the maximal inscribed sphere
MeshNormals mrmeshpy.computeMeshNormals | ( | Mesh | mesh | ) |
computes both per-face and per-vertex normals more efficiently then just calling both previous functions
Vector3f mrmeshpy.computeNormal | ( | AllLocalTriangulations | triangs, |
VertCoords | points, | ||
VertId | v ) |
compute normal at point by averaging neighbor triangle normals weighted by triangle's angle at the point
Vector_std_array_Vector3f_3_FaceId mrmeshpy.computePerCornerNormals | ( | Mesh | mesh, |
UndirectedEdgeBitSet | creases ) |
returns a vector with corner normals in every element for valid mesh faces; corner normals of adjacent triangles are equal, unless they are separated by crease edges
FaceNormals mrmeshpy.computePerFaceNormals | ( | Mesh | mesh | ) |
returns a vector with face-normal in every element for valid mesh faces
fills buffer with face-normals as Vector4f for valid mesh faces
VertCoords mrmeshpy.computePerVertNormals | ( | Mesh | mesh | ) |
returns a vector with vertex normals in every element for valid mesh vertices
VertCoords mrmeshpy.computePerVertPseudoNormals | ( | Mesh | mesh | ) |
returns a vector with vertex pseudonormals in every element for valid mesh vertices see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.9173&rep=rep1&type=pdf
VertScalars mrmeshpy.computeRayThicknessAtVertices | ( | Mesh | mesh, |
func_bool_from_float | progress = '{}' ) |
returns the distance from each vertex along minus normal to the nearest mesh intersection (or FLT_MAX if no intersection found)
VertScalars mrmeshpy.computeSkyViewFactor | ( | Mesh | terrain, |
VertCoords | samples, | ||
VertBitSet | validSamples, | ||
std_vector_SkyPatch | skyPatches, | ||
BitSet | outSkyRays = None, | ||
std_vector_MeshIntersectionResult | outIntersections = None ) |
computes relative radiation in each valid sample point by emitting rays from that point in the sky: the radiation is 1.0f if all rays reach the sky not hitting the terrain; the radiation is 0.0f if all rays do not reach the sky because they are intercepted by the terrain; \\param outSkyRays - optional output bitset where for every valid sample #i its rays are stored at indices [i*numPatches; (i+1)*numPatches), 0s for occluded rays (hitting the terrain) and 1s for the ones which don't hit anything and reach the sky \\param outIntersections - optional output vector of MeshIntersectionResult for every valid sample point
VertScalars mrmeshpy.computeSpaceDistances | ( | Mesh | mesh, |
PointOnFace | start, | ||
float | range ) |
computes Euclidean 3D distances from given start point to all neighbor vertices within given \\param range and to first vertices with the distance more or equal than range
std_vector_EdgePoint mrmeshpy.computeSteepestDescentPath | ( | MeshPart | mp, |
VertScalars | field, | ||
MeshTriPoint | start, | ||
ComputeSteepestDescentPathSettings | settings = '{}' ) |
computes the path (edge points crossed by the path) staring in given point and moving in each triangle in minus gradient direction of given field; the path stops when it reaches a local minimum in the field or one of stop conditions in settings
None mrmeshpy.computeSteepestDescentPath | ( | MeshPart | mp, |
VertScalars | field, | ||
MeshTriPoint | start, | ||
std_vector_EdgePoint | outPath, | ||
ComputeSteepestDescentPathSettings | settings = '{}' ) |
computes the path (edge points crossed by the path) staring in given point and moving in each triangle in minus gradient direction of given field, and outputs the path in \\param outPath if requested; the path stops when it reaches a local minimum in the field or one of stop conditions in settings
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
float | maxDist = 3.4028234663852886e+38, | ||
VertBitSet | region = None, | ||
int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start point, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
VertBitSet | region = None, | ||
bool_output | endReached = None, | ||
int | maxVertUpdates = 3 ) |
computes path distance in mesh vertices from given start point, stopping when all vertices in the face where end is located are reached; \\details considered paths can go either along edges or straightly within triangles \\param endReached if pointer provided it will receive where a path from start to end exists
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
phmap_flat_hash_map_Id_VertTag_float | startVertices, | ||
float | maxDist = 3.4028234663852886e+38, | ||
VertBitSet | region = None, | ||
int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices with values in them, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
std_vector_MeshTriPoint | starts, | ||
float | maxDist = 3.4028234663852886e+38, | ||
VertBitSet | region = None, | ||
int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start points, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
VertBitSet | startVertices, | ||
float | maxDist = 3.4028234663852886e+38, | ||
VertBitSet | region = None, | ||
int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices, stopping when maxDist is reached; considered paths can go either along edges or straightly within triangles
VertScalars mrmeshpy.computeSurfaceDistances | ( | Mesh | mesh, |
VertBitSet | startVertices, | ||
VertBitSet | targetVertices, | ||
float | maxDist = 3.4028234663852886e+38, | ||
VertBitSet | region = None, | ||
int | maxVertUpdates = 3 ) |
computes path distances in mesh vertices from given start vertices, stopping when all targetVertices or maxDist is reached; considered paths can go either along edges or straightly within triangles
std_vector_EdgePoint mrmeshpy.computeSurfacePath | ( | MeshPart | mp, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
int | maxGeodesicIters = 5, | ||
VertBitSet | vertRegion = None, | ||
VertScalars | outSurfaceDistances = None ) |
returns intermediate points of the geodesic path from start to end, where it crosses mesh edges; the path can be limited to given region: in face-format inside mp, or in vert-format in vertRegion argument. It is the same as calling computeFastMarchingPath() then reducePath()
VertScalars mrmeshpy.computeThicknessAtVertices | ( | Mesh | mesh | ) |
std_array_int_4 mrmeshpy.computeTrianglesRepetitions | ( | AllLocalTriangulations | triangs | ) |
computes statistics about the number of triangle repetitions in local triangulations
ToolPathResult mrmeshpy.constantCuspToolPath | ( | MeshPart | mp, |
ConstantCuspParams | params ) |
compute path of the milling tool for the given mesh with parameters ( direction of milling is from up to down along Z-direction ) this toolpath is built from geodesic parallels divercing from the given start point or from the bounaries of selected areas if neither is specified, the lowest section by XY plane will be used as a start contour mesh can be transformed using xf parameter
ToolPathResult mrmeshpy.constantZToolPath | ( | MeshPart | mp, |
ToolPathParams | params ) |
compute path of the milling tool for the given mesh with parameters ( direction of milling is from up to down along Z-direction ) this toolpath is built from the parallel sections along Z-axis mesh can be transformed using xf parameter
bool mrmeshpy.contains | ( | FaceBitSet | bitset, |
FaceId | id ) |
Polyline2 mrmeshpy.contourIntersection | ( | Polyline2 | contoursA, |
Polyline2 | contoursB, | ||
ContourToDistanceMapParams | params, | ||
float | offsetInside = 0.0 ) |
\\brief computes the intersection of the shapes bounded by input 2d contours \\return the boundary of the intersection \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
Polyline2 mrmeshpy.contourSubtract | ( | Polyline2 | contoursA, |
Polyline2 | contoursB, | ||
ContourToDistanceMapParams | params, | ||
float | offsetInside = 0.0 ) |
\\brief computes the difference between the shapes bounded by contoursA and the shapes bounded by contoursB \\return the boundary of the difference \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
Polyline2 mrmeshpy.contourUnion | ( | Polyline2 | contoursA, |
Polyline2 | contoursB, | ||
ContourToDistanceMapParams | params, | ||
float | offsetInside = 0 ) |
\\brief computes the union of the shapes bounded by input 2d contours \\return the boundary of the union \\details input contours must be closed within the area of distance map and be consistently oriented (clockwise, that is leaving the bounded shapes from the left). the value of params.withSign must be true (checked with assert() inside the function) \\note that polyline topology should be consistently oriented
Image mrmeshpy.convertDistanceMapToImage | ( | DistanceMap | distMap, |
float | threshold = 0.003921568859368563 ) |
export distance map to a grayscale image \\param threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
DistanceMap mrmeshpy.convertImageToDistanceMap | ( | Image | image, |
float | threshold = 0.003921568859368563 ) |
load distance map from a grayscale image: \\param threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
std_vector_OneMeshContour mrmeshpy.convertMeshTriPointsSurfaceOffsetToMeshContours | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
float | offset, | ||
SearchPathSettings | searchSettings = '{}' ) |
\\ingroup BooleanGroup \\brief Makes continuous contour by iso-line from mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build offset contour on surface for MR::cutMesh input \\param offset amount of offset form given point, note that absolute value is used and isoline in both direction returned \\param searchSettings settings for search geodesic path
std_vector_OneMeshContour mrmeshpy.convertMeshTriPointsSurfaceOffsetToMeshContours | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
func_float_from_int | offsetAtPoint, | ||
SearchPathSettings | searchSettings = '{}' ) |
\\ingroup BooleanGroup \\brief Makes continuous contour by iso-line from mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build offset contour on surface for MR::cutMesh input \\param offsetAtPoint functor that returns amount of offset form arg point, note that absolute value is used and isoline in both direction returned \\param searchSettings settings for search geodesic path
OneMeshContour mrmeshpy.convertMeshTriPointsToClosedContour | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
SearchPathSettings | searchSettings = '{}', | ||
std_vector_int | pivotIndices = None ) |
\\ingroup BooleanGroup \\brief Makes closed continuous contour by mesh tri points, note that first and last meshTriPoint should not be same Finds shortest paths between neighbor \\p surfaceLine and build closed contour MR::cutMesh input \\param pivotIndices optional output indices of given surfaceLine in result OneMeshContour \\note better use convertMeshTriPointsToMeshContour(...) instead, note that it requires same front and back MeshTriPoints for closed contour
OneMeshContour mrmeshpy.convertMeshTriPointsToMeshContour | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
SearchPathSettings | searchSettings = '{}', | ||
std_vector_int | pivotIndices = None ) |
\\ingroup BooleanGroup \\brief Makes continuous contour by mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor \\p surfaceLine and build contour MR::cutMesh input \\param searchSettings settings for search geo path \\param pivotIndices optional output indices of given surfaceLine in result OneMeshContour
std_vector_OneMeshContour mrmeshpy.convertSurfacePathsToMeshContours | ( | Mesh | mesh, |
std_vector_std_vector_EdgePoint | surfacePaths ) |
\\ingroup BooleanGroup \\brief Converts SurfacePaths to OneMeshContours Creates MR::OneMeshContours object from given surface paths for MR::cutMesh input
OneMeshContour mrmeshpy.convertSurfacePathWithEndsToMeshContour | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
std_vector_EdgePoint | surfacePath, | ||
MeshTriPoint | end ) |
\\ingroup BooleanGroup \\brief Converts SurfacePath to OneMeshContours Creates MR::OneMeshContour object from given surface path with ends for MR::cutMesh input `start` and surfacePath.front() should be from same face surfacePath.back() and `end` should be from same face note that whole path (including `start` and `end`) should not have self-intersections also following case is not supported (vertex -> edge (incident with vertex)): vert path edge point path edge end o----------o- -- -- -- -- O \\ \\ / \\ \\ / \\ \\ / \\\\/ o path
std_vector_Vector2_float mrmeshpy.copyContour | ( | std_vector_Vector2_double | from_ | ) |
copy double-contour to float-contour, or vice versa
std_vector_Vector2_double mrmeshpy.copyContour | ( | std_vector_Vector2_float | from_ | ) |
copy double-contour to float-contour, or vice versa
std_vector_Vector3_float mrmeshpy.copyContour | ( | std_vector_Vector3_double | from_ | ) |
copy double-contour to float-contour, or vice versa
std_vector_Vector3_double mrmeshpy.copyContour | ( | std_vector_Vector3_float | from_ | ) |
copy double-contour to float-contour, or vice versa
Mesh mrmeshpy.copySubdividePackMesh | ( | MeshPart | mp, |
float | voxelSize, | ||
func_bool_from_float | cb = '{}' ) |
creates a copy of given mesh part, subdivides it to get rid of too long edges compared with voxelSize, then packs resulting mesh, this is called typically in preparation for 3D space sampling with voxelSize step, and subdivision is important for making leaves of AABB tree not too big compared with voxelSize
Object mrmeshpy.createObject | ( | str | className | ) |
the function to create new object instance by registered class name
MeshProjectionTransforms mrmeshpy.createProjectionTransforms | ( | AffineXf3f | storageXf, |
AffineXf3f | pointXf, | ||
AffineXf3f | treeXf ) |
<summary> Creates structure with simplified transforms for projection functions, with `rigidXfPoint` applied to point, and `nonRigidXfTree` applied to tree </summary> <param name="storageXf">this argument will hold modified transfrom</param> <param name="pointXf">transform for points to be projected</param> <param name="treeXf">transform for tree's boxes</param> <returns>structure with simplified transforms</returns>
SceneRootObject mrmeshpy.createRootFormObject | ( | Object | obj | ) |
Removes all `obj` children and attaches it to newly created `SceneRootObject` note that it does not respect `obj` xf
std_vector_std_vector_Vector2_float mrmeshpy.createSymbolContours | ( | SymbolMeshParams | params | ) |
converts text string into set of contours
Mesh mrmeshpy.createSymbolsMesh | ( | SymbolMeshParams | params | ) |
converts text string into Z-facing symbol mesh
OpenVdbFloatGrid mrmeshpy.cropped | ( | OpenVdbFloatGrid | grid, |
Box3i | box, | ||
func_bool_from_float | cb = '{}' ) |
returns cropped grid
std_vector_Id_EdgeTag mrmeshpy.cutAlongEdgeLoop | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | c0 ) |
given a closed loop of edges, splits the surface along that loop so that after return: 1) returned loop has the same size as input, with corresponding edges in same indexed elements of both; 2) all edges of c0 have no left faces; 3) all returned edges have no right faces; 4) vertices of the given mesh are updated
std_vector_Id_EdgeTag mrmeshpy.cutAlongEdgeLoop | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | c0 ) |
given a closed loop of edges, splits the surface along that loop so that after return: 1) returned loop has the same size as input, with corresponding edges in same indexed elements of both; 2) all edges of c0 have no left faces; 3) all returned edges have no right faces;
CutMeshResult mrmeshpy.cutMesh | ( | Mesh | mesh, |
std_vector_OneMeshContour | contours, | ||
CutMeshParameters | params = '{}' ) |
\\ingroup BooleanGroup \\brief Cuts mesh by given contours This function cuts mesh making new edges paths on place of input contours \\param mesh Input mesh that will be cut \\param contours Input contours to cut mesh with, find more \\ref MR::OneMeshContours \\param params Parameters describing some cut options, find more \\ref MR::CutMeshParameters \\return New edges that correspond to given contours, find more \\ref MR::CutMeshResult \\parblock \\warning Input contours should have no intersections, faces where contours intersects (`bad faces`) will not be allowed for fill \\endparblock \\parblock \\warning Input mesh will be changed in any case, if `bad faces` are in mesh, mesh will be spoiled, \\n so if you cannot guarantee contours without intersections better make copy of mesh, before using this function \\endparblock
int mrmeshpy.deactivateFarPairs | ( | IPointPairs | pairs, |
float | maxDistSq ) |
reset active bit if pair distance is further than maxDistSq
DecimatePolylineResult mrmeshpy.decimateContour | ( | std_vector_Vector2_float | contour, |
DecimatePolylineSettings_Vector2f | settings = '{}' ) |
\\brief Collapse edges in the contour according to the settings \\ingroup DecimateGroup
DecimatePolylineResult mrmeshpy.decimateContour | ( | std_vector_Vector3_float | contour, |
DecimatePolylineSettings_Vector3f | settings = '{}' ) |
DecimateResult mrmeshpy.decimateMesh | ( | Mesh | mesh, |
DecimateSettings | settings = '{}' ) |
\\brief Collapse edges in mesh region according to the settings \\ingroup DecimateGroup \\details Have version for parallel computing - \\ref decimateParallelMesh \\image html decimate/decimate_before.png "Before" width = 350cm \\image html decimate/decimate_after.png "After" width = 350cm \\sa \\ref decimateParallelMesh \\sa \\ref resolveMeshDegenerations
DecimatePolylineResult mrmeshpy.decimatePolyline | ( | Polyline2 | polyline, |
DecimatePolylineSettings_Vector2f | settings = '{}' ) |
\\brief Collapse edges in the polyline according to the settings \\ingroup DecimateGroup
DecimatePolylineResult mrmeshpy.decimatePolyline | ( | Polyline3 | polyline, |
DecimatePolylineSettings_Vector3f | settings = '{}' ) |
std_vector_unsigned_char mrmeshpy.decode64 | ( | str | val | ) |
decodes Base64 format into binary data
None mrmeshpy.decompressZip | ( | os.PathLike | str | bytes | zipFile, |
os.PathLike | str | bytes | targetFolder, | ||
str | password = None ) |
\\brief decompresses given zip-file into given folder \\param password if password is given then it will be used to decipher encrypted archive
None mrmeshpy.decompressZip | ( | typing.Any | zipStream, |
os.PathLike | str | bytes | targetFolder, | ||
str | password = None ) |
\\brief decompresses given binary stream (containing the data of a zip file only) into given folder \\param password if password is given then it will be used to decipher encrypted archive
str mrmeshpy.defaultSerializeMeshFormat | ( | ) |
returns file extension used to serialize ObjectMeshHolder by default (if not overridden in specific object), the string starts with '.'
str mrmeshpy.defaultSerializePointsFormat | ( | ) |
returns file extension used to serialize ObjectPointsHolder by default (if not overridden in specific object), the string starts with '.'
str mrmeshpy.defaultSerializeVoxelsFormat | ( | ) |
returns file extension used to serialize ObjectVoxels by default (if not overridden in specific object), the string starts with '.'
deletes object faces with normals pointed to the target geometry center
std_vector_std_vector_Id_EdgeTag mrmeshpy.delRegionKeepBd | ( | Mesh | mesh, |
FaceBitSet | region = None ) |
deletes all region faces, inner edges and vertices, but keeps boundary edges and vertices of the region (or whole mesh if region is null); returns edge loops, each having deleted region faces on the left, and not-region faces or holes on the right
None mrmeshpy.denoiseNormals | ( | Mesh | mesh, |
FaceNormals | normals, | ||
UndirectedEdgeScalars | v, | ||
float | gamma ) |
Smooth face normals, given \\param mesh contains topology information and coordinates for equation weights \\param normals input noisy normals and output smooth normals \\param v edge indicator function (1 - smooth edge, 0 - crease edge) \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (19)
LoadedObjectT mrmeshpy.deserializeObjectTree | ( | os.PathLike | str | bytes | path, |
func_void_from_std_filesystem_path | postDecompress = '{}', | ||
func_bool_from_float | progressCb = '{}' ) |
\\brief loads objects tree from given scene file (zip/mru) \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder if postDecompress is set, it is called after decompression loading is controlled with Object::deserializeModel_ and Object::deserializeFields_
LoadedObjectT mrmeshpy.deserializeObjectTreeFrom3mf | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads scene from 3MF file in a new container object
LoadedObjectT mrmeshpy.deserializeObjectTreeFromFolder | ( | os.PathLike | str | bytes | folder, |
func_bool_from_float | progressCb = '{}' ) |
\\brief loads objects tree from given scene folder \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder loading is controlled with Object::deserializeModel_ and Object::deserializeFields_
Object mrmeshpy.deserializeObjectTreeFromGltf | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads scene from glTF file in a new container object
LoadedObjectT mrmeshpy.deserializeObjectTreeFromModel | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads scene from .model file in a new container object
std_vector_std_vector_Id_EdgeTag mrmeshpy.detectBasisTunnels | ( | MeshPart | mp, |
func_float_from_Id_EdgeTag | metric = '{}', | ||
func_bool_from_float | progressCallback = '{}' ) |
detects all not-contractible-in-point and not-equivalent tunnel loops on the mesh; trying to include in the loops the edges with the smallest metric; if no metric is given then discreteMinusAbsMeanCurvatureMetric will be used
std_vector_int mrmeshpy.detectLoneContours | ( | std_vector_std_vector_VariableEdgeTri | contours | ) |
Detects contours that fully lay inside one triangle returns they indices in contours
FaceBitSet mrmeshpy.detectTunnelFaces | ( | MeshPart | mp, |
DetectTunnelSettings | settings = '{}' ) |
returns tunnels as a number of faces; if you remove these faces and patch every boundary with disk, then the surface will be topology equivalent to sphere
bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
FaceBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
expands the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
UndirectedEdgeBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.dilateRegion | ( | Mesh | mesh, |
VertBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.dilateRegion | ( | PointCloud | pointCloud, |
VertBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | cb = '{}', | ||
AffineXf3f | xf = None ) |
expands the region on given euclidian distance. returns false if callback also returns false
bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
FaceBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
expands the region (of faces or vertices) on given metric value. returns false if callback also returns false
bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
UndirectedEdgeBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.dilateRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
VertBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
func_float_from_Id_EdgeTag mrmeshpy.discreteAbsMeanCurvatureMetric | ( | Mesh | mesh | ) |
returns edge's absolute discrete mean curvature as a metric; the metric is minimal in the planar regions of mesh; this metric is symmetric: m(e) == m(e.sym())
func_float_from_Id_EdgeTag mrmeshpy.discreteMinusAbsMeanCurvatureMetric | ( | Mesh | mesh | ) |
returns minus of edge's absolute discrete mean curvature as a metric; the metric is minimal in the most curved regions of mesh; this metric is symmetric: m(e) == m(e.sym())
None mrmeshpy.distanceMapFromContours | ( | DistanceMap | distMap, |
Polyline2 | polyline, | ||
ContourToDistanceMapParams | params, | ||
ContoursDistanceMapOptions | options = '{}' ) |
\\brief Computes distance of 2d contours according ContourToDistanceMapParams \\param distMap - preallocated distance map \\param options - optional input and output options for distance map calculation, find more \\ref ContoursDistanceMapOptions
DistanceMap mrmeshpy.distanceMapFromContours | ( | Polyline2 | contours, |
ContourToDistanceMapParams | params, | ||
ContoursDistanceMapOptions | options = '{}' ) |
\\brief Computes distance of 2d contours according ContourToDistanceMapParams \\param options - optional input and output options for distance map calculation, find more \\ref ContoursDistanceMapOptions
tuple[Polyline2, AffineXf3f] mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
AffineXf3f | xf, | ||
float | isoValue, | ||
bool | useDepth = False ) |
computes iso-lines of distance map corresponding to given iso-value; in second returns the transformation from 0XY plane to world; \\param useDepth true - the isolines will be located on distance map surface, false - isolines for any iso-value will be located on the common plane xf(0XY)
Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
ContourToDistanceMapParams | params, | ||
float | isoValue ) |
iso-lines are created in real space ( plane OXY with parameters according ContourToDistanceMapParams )
Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
float | isoValue ) |
converts distance map to 2d iso-lines: iso-lines are created in space DistanceMap ( plane OXY with pixelSize = (1, 1) )
Polyline2 mrmeshpy.distanceMapTo2DIsoPolyline | ( | DistanceMap | distMap, |
float | pixelSize, | ||
float | isoValue ) |
Mesh mrmeshpy.distanceMapToMesh | ( | DistanceMap | distMap, |
AffineXf3f | toWorld, | ||
func_bool_from_float | cb = '{}' ) |
converts distance map into mesh and applies a transformation to all points
None mrmeshpy.dividePolylineWithPlane | ( | Polyline3 | polyline, |
Plane3f | plane, | ||
DividePolylineParameters | params = '{}' ) |
This function divides polyline with a plane \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param params parameters of the function, contains optional output
PointCloud mrmeshpy.divideWithPlane | ( | PointCloud | points, |
Plane3f | plane, | ||
DividePointCloudOptionalOutput | optOut = '{}' ) |
This function cuts a point cloud with a plane, leaving only the part of mesh that lay in positive direction of normal \\return Point cloud object with vertices on the positive side of the plane \\param pc Input point cloud that will be cut by the plane \\param plane Input plane to cut point cloud with \\param optOut optional output of the function
Mesh mrmeshpy.doBooleanOperation | ( | Mesh | meshACut, |
Mesh | meshBCut, | ||
std_vector_std_vector_Id_EdgeTag | cutEdgesA, | ||
std_vector_std_vector_Id_EdgeTag | cutEdgesB, | ||
BooleanOperation | operation, | ||
AffineXf3f | rigidB2A = None, | ||
BooleanResultMapper | mapper = None, | ||
bool | mergeAllNonIntersectingComponents = False, | ||
BooleanInternalParameters | intParams = '{}' ) |
Perform boolean operation on cut meshes \\return mesh in space of meshA or error. \\note: actually this function is meant to be internal, use "boolean" instead
SegmentSegmentIntersectResult mrmeshpy.doSegmentSegmentIntersect | ( | std_array_PreciseVertCoords2_4 | vs | ) |
checks whether the segments AB (indices 01) and segments CD (indices 23) intersect; uses simulation-of-simplicity to avoid edge-segment intersections and co-planarity
TriangleSegmentIntersectResult mrmeshpy.doTriangleSegmentIntersect | ( | std_array_PreciseVertCoords_5 | vs | ) |
checks whether triangle ABC (indices 012) and segment DE (indices 34) intersect uses simulation-of-simplicity to avoid edge-segment intersections and co-planarity
Mesh mrmeshpy.doubleOffsetMesh | ( | MeshPart | mp, |
float | offsetA, | ||
float | offsetB, | ||
OffsetParameters | params = '{}' ) |
Offsets mesh by converting it to voxels and back two times only closed meshes allowed (only Offset mode) typically offsetA and offsetB have distinct signs
Mesh mrmeshpy.doubleOffsetVdb | ( | MeshPart | mp, |
DoubleOffsetSettings | settings ) |
performs convention from mesh to voxel grid and back with offsetA, and than same with offsetB; if input mesh is not closed then the sign of distance field will be obtained using generalized winding number computation
int mrmeshpy.duplicateMultiHoleVertices | ( | Mesh | mesh | ) |
Duplicates all vertices having more than two boundary edges (and returns the number of duplications);
func_float_from_Id_EdgeTag mrmeshpy.edgeCurvMetric | ( | Mesh | mesh, |
float | angleSinFactor = 2, | ||
float | angleSinForBoundary = 0 ) |
returns edge's metric that depends both on edge's length and on the angle between its left and right faces \\param angleSinFactor multiplier before dihedral angle sine in edge metric calculation (positive to prefer concave angles, negative - convex) \\param angleSinForBoundary consider this dihedral angle sine for boundary edges; this metric is symmetric: m(e) == m(e.sym())
func_float_from_Id_EdgeTag mrmeshpy.edgeLengthMetric | ( | Mesh | mesh | ) |
returns edge's length as a metric; this metric is symmetric: m(e) == m(e.sym())
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
std_vector_Vector3_float mrmeshpy.edgePointsFromContours | ( | Polyline2 | polyline, |
float | pixelSize, | ||
float | threshold ) |
Makes distance map and filter out pixels with large (>threshold) distance between closest points on contour in neighbor pixels Converts such points back in 3d space and return \\note that polyline topology should be consistently oriented
func_float_from_Id_EdgeTag mrmeshpy.edgeTableMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric ) |
func_float_from_Id_EdgeTag mrmeshpy.edgeTableSymMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric ) |
pre-computes the metric for all mesh edges to quickly return it later for any edge; input metric must be symmetric: metric(e) == metric(e.sym())
Id_EdgeTag mrmeshpy.eliminateDegree3Dest | ( | MeshTopology | topology, |
Id_EdgeTag | e, | ||
FaceBitSet | region = None ) |
if the destination of given edge has degree 3 and 3 incident triangles, then eliminates the destination vertex with all its edges and all but one faces, and returns valid remaining edge with same origin as e; if region is provided then eliminated triangles are excluded from it; otherwise returns invalid edge
int mrmeshpy.eliminateDegree3Vertices | ( | MeshTopology | topology, |
VertBitSet | region, | ||
FaceBitSet | fs = None ) |
eliminates from the mesh all vertices having degree 3 and 3 incident triangles from given region (which is updated); if \\param fs is provided then eliminated triangles are excluded from it; \\return the number of vertices eliminated
Id_EdgeTag mrmeshpy.eliminateDoubleTris | ( | MeshTopology | topology, |
Id_EdgeTag | e, | ||
FaceBitSet | region = None ) |
if the edge e has both left and right triangular faces and the degree of dest( e ) is 2, then eliminates left( e ), right( e ), e, e.sym(), next( e ), dest( e ), and returns prev( e ); if region is provided then eliminated faces are excluded from it; otherwise returns invalid edge
None mrmeshpy.eliminateDoubleTrisAround | ( | MeshTopology | topology, |
VertId | v, | ||
FaceBitSet | region = None ) |
eliminates all double triangles around given vertex preserving vertex valid; if region is provided then eliminated triangles are excluded from it
Mesh mrmeshpy.embedStructureToTerrain | ( | Mesh | terrain, |
Mesh | structure, | ||
EmbeddedStructureParameters | params ) |
Returns terrain mesh with structure embedded to it, or error string terrain - mesh with +Z normal (not-closed mesh is expected) structure - mesh with one open contour and +Z normal, that will be embedded in terrain
str mrmeshpy.encode64 | ( | int | data, |
int | size ) |
encodes binary data into textual Base64 format
ViewportIterator mrmeshpy.end | ( | * | args, |
** | kwargs ) |
RingIterator_NextEdgeSameOrigin mrmeshpy.end | ( | IteratorRange_RingIterator_NextEdgeSameOrigin | range | ) |
bool mrmeshpy.equalizeTriAreas | ( | Mesh | mesh, |
MeshEqualizeTriAreasParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of iterations with movement toward vertexPosEqualNeiAreas() to the whole mesh ( or some region if it is specified ) \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
FaceBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
shrinks the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
UndirectedEdgeBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.erodeRegion | ( | Mesh | mesh, |
VertBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.erodeRegion | ( | PointCloud | pointCloud, |
VertBitSet | region, | ||
float | erosion, | ||
func_bool_from_float | cb = '{}', | ||
AffineXf3f | xf = None ) |
shrinks the region on given euclidian distance. returns false if callback also returns false
bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
FaceBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
shrinks the region (of faces or vertices) on given metric value. returns false if callback also returns false
bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
UndirectedEdgeBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
bool mrmeshpy.erodeRegionByMetric | ( | MeshTopology | topology, |
func_float_from_Id_EdgeTag | metric, | ||
VertBitSet | region, | ||
float | dilation, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.evalGridMinMax | ( | OpenVdbFloatGrid | grid, |
float_output | min, | ||
float_output | max ) |
eval min max value from FloatGrid
None mrmeshpy.executeHoleFillPlan | ( | Mesh | mesh, |
Id_EdgeTag | a0, | ||
HoleFillPlan | plan, | ||
FaceBitSet | outNewFaces = None ) |
quickly triangulates the face or hole to the left of (e) given the plan (quickly compared to fillHole function)
None mrmeshpy.expand | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
int | hops = 1 ) |
adds to the region all faces within given number of hops (stars) from the initial region boundary
FaceBitSet mrmeshpy.expand | ( | MeshTopology | topology, |
FaceId | f, | ||
int | hops ) |
returns the region of all faces within given number of hops (stars) from the initial face
None mrmeshpy.expand | ( | MeshTopology | topology, |
VertBitSet | region, | ||
int | hops = 1 ) |
adds to the region all vertices within given number of hops (stars) from the initial region boundary
VertBitSet mrmeshpy.expand | ( | MeshTopology | topology, |
VertId | v, | ||
int | hops ) |
returns the region of all vertices within given number of hops (stars) from the initial vertex
FaceBitSet mrmeshpy.expandFaces | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
UndirectedEdgeBitSet | stopEdges = None ) |
returns given region with all faces sharing an edge with a region face; \\param stopEdges - neighborhood via this edges will be ignored
None mrmeshpy.expandPixelMask | ( | PixelBitSet | mask, |
RectIndexer | indexer, | ||
int | expansion = 1 ) |
expands PixelBitSet with given number of steps
None mrmeshpy.expandVoxelsMask | ( | VoxelBitSet | mask, |
VolumeIndexer | indexer, | ||
int | expansion = 1 ) |
expands VoxelBitSet with given number of steps
ObjectGcode mrmeshpy.exportToolPathToGCode | ( | std_vector_GCommand | commands | ) |
generates G-Code for milling tool
std_vector_Id_EdgeTag mrmeshpy.extendAllHoles | ( | Mesh | mesh, |
Plane3f | plane, | ||
FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of too all holes of the mesh by calling extendHole(...); \\return representative edges of one per every hole after extension
Id_EdgeTag mrmeshpy.extendHole | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
func_Vector3_float_from_Vector3_float | getVertPos, | ||
FaceBitSet | outNewFaces = None ) |
adds extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located at getVertPos( existing vertex position ); \\return the edge of new hole opposite to input edge (a)
Id_EdgeTag mrmeshpy.extendHole | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
Plane3f | plane, | ||
FaceBitSet | outNewFaces = None ) |
adds cylindrical extension of given hole represented by one of its edges (having no valid left face) by adding new vertices located in given plane and 2 * number_of_hole_edge triangles; \\return the edge of new hole opposite to input edge (a)
std_vector_std_vector_Id_EdgeTag mrmeshpy.extractClosedLoops | ( | MeshTopology | topology, |
EdgeBitSet | edges ) |
finds all closed loops from given edges and removes them from edges
std_vector_std_vector_Id_EdgeTag mrmeshpy.extractClosedLoops | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | inEdges, | ||
EdgeBitSet | outNotLoopEdges = None ) |
std_vector_std_vector_Vector3_float mrmeshpy.extractIntersectionContours | ( | Mesh | meshA, |
Mesh | meshB, | ||
std_vector_std_vector_VariableEdgeTri | orientedContours, | ||
CoordinateConverters | converters, | ||
AffineXf3f | rigidB2A = None ) |
extracts coordinates from two meshes intersection contours
std_vector_std_vector_EdgePoint mrmeshpy.extractIsolines | ( | MeshTopology | topology, |
func_float_from_Id_VertTag | vertValues, | ||
FaceBitSet | region = None ) |
extracts all iso-lines from given scalar field and iso-value=0
std_vector_std_vector_EdgePoint mrmeshpy.extractIsolines | ( | MeshTopology | topology, |
VertScalars | vertValues, | ||
float | isoValue, | ||
FaceBitSet | region = None ) |
extracts all iso-lines from given scalar field and iso-value
std_vector_Id_EdgeTag mrmeshpy.extractLongestClosedLoop | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | inEdges ) |
std_vector_std_vector_Vector3_float mrmeshpy.extractMeshContours | ( | std_vector_OneMeshContour | meshContours | ) |
Converts OneMeshContours contours representation to Contours3f: set of coordinates
std_vector_std_vector_EdgePoint mrmeshpy.extractPlaneSections | ( | MeshPart | mp, |
Plane3f | plane ) |
extracts all plane sections of given mesh
std_vector_EdgeSegment mrmeshpy.extractSectionsFromPolyline | ( | Polyline3 | polyline, |
Plane3f | plane, | ||
float | eps ) |
This function cuts polyline with a plane \\return Edge segments tha are closer to the plane than \\param eps \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param eps Maximal distance from the plane
std_vector_std_vector_EdgePoint mrmeshpy.extractXYPlaneSections | ( | MeshPart | mp, |
float | zLevel ) |
extracts all sections of given mesh with the plane z=zLevel; this function works faster than general extractPlaneSections(...) for the same plane if the sections cross relatively small number of mesh triangles and AABB tree has already been constructed
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
FaceBitSet mrmeshpy.fillContourLeft | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | contour ) |
fill region located to the left from given edges
FaceBitSet mrmeshpy.fillContourLeft | ( | MeshTopology | topology, |
std_vector_std_vector_Id_EdgeTag | contours ) |
FaceBitSet mrmeshpy.fillContourLeftByGraphCut | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | contour, | ||
func_float_from_Id_EdgeTag | metric ) |
\\brief Fills region located to the left from given contour, by minimizing the sum of metric over the boundary \\ingroup MeshSegmentationGroup
FaceBitSet mrmeshpy.fillContourLeftByGraphCut | ( | MeshTopology | topology, |
std_vector_std_vector_Id_EdgeTag | contours, | ||
func_float_from_Id_EdgeTag | metric ) |
\\brief Fills region located to the left from given contours, by minimizing the sum of metric over the boundary \\ingroup MeshSegmentationGroup
None mrmeshpy.fillContours2D | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | holeRepresentativeEdges ) |
@brief fill holes with border in same plane (i.e. after cut by plane) @param mesh - mesh with holes @param holeRepresentativeEdges - each edge here represents a hole borders that should be filled should be not empty edges should have invalid left face (FaceId == -1) @return Expected with has_value()=true if holes filled, otherwise - string error
None mrmeshpy.fillHole | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
FillHoleParams | params = '{}' ) |
\\brief Fills hole in mesh\\n Fills given hole represented by one of its edges (having no valid left face),\\n uses fillHoleTrivially if cannot fill hole without multiple edges,\\n default metric: CircumscribedFillMetric \\image html fill/before_fill.png "Before" width = 250cm \\image html fill/fill.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/fill_smooth.png "Fill with smooth" width = 250cm \\param mesh mesh with hole \\param a EdgeId which represents hole (should not have valid left FaceId) \\param params parameters of hole filling \\sa \\ref buildCylinderBetweenTwoHoles \\sa \\ref fillHoleTrivially \\sa \\ref FillHoleParams
FaceBitSet mrmeshpy.fillHoleNicely | ( | Mesh | mesh, |
Id_EdgeTag | holeEdge, | ||
FillHoleNicelySettings | settings ) |
fills a hole in mesh specified by one of its edge, optionally subdivides new patch on smaller triangles, optionally make smooth connection with existing triangles outside the hole \\return triangles of the patch
None mrmeshpy.fillHoles | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | as_, | ||
FillHoleParams | params = '{}' ) |
fill all holes given by their representative edges in \\param as
VertId mrmeshpy.fillHoleTrivially | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
FaceBitSet | outNewFaces = None ) |
\\brief Triangulates face of hole in mesh trivially\\n \\ingroup FillHoleGroup Fills given hole represented by one of its edges (having no valid left face)\\n by creating one new vertex in the centroid of boundary vertices and connecting new vertex with all boundary vertices. \\image html fill/before_fill.png "Before" width = 250cm \\image html fill/fill_triv.png "After" width = 250cm Next picture show, how newly generated faces can be smoothed \\ref MR::positionVertsSmoothly \\ref MR::subdivideMesh \\image html fill/fill_triv_smooth.png "Trivial fill with smooth" width = 250cm \\param mesh mesh with hole \\param a EdgeId points on the face or hole to the left that will be triangulated \\param outNewFaces optional output newly generated faces \\return new vertex \\sa \\ref fillHole
None mrmeshpy.fillPlanarHole | ( | ObjectMesh | obj, |
std_vector_std_vector_Id_EdgeTag | holeContours ) |
given an ObjectMesh and the contours of a planar hole in it, fills the hole using fillContours2D function and updates object's attributes; if some contours were not closed on input, then closes them by adding a bridge edge in each
None mrmeshpy.filterCreaseEdges | ( | Mesh | mesh, |
UndirectedEdgeBitSet | creaseEdges, | ||
float | critLength, | ||
bool | filterComponents = True, | ||
bool | filterBranches = False ) |
filters given edges using the following criteria: if \\param filterComponents is true then connected components with summary length of their edges less than \\param critLength will be excluded if \\param filterBranches is true then branches shorter than \\param critLength will be excluded
tuple[bool, int] mrmeshpy.filterHistoryActionsVector | ( | std_vector_std_shared_ptr_HistoryAction | historyVector, |
func_bool_from_std_shared_ptr_HistoryAction | filteringCondition, | ||
int | firstRedoIndex = 0, | ||
bool | deepFiltering = True ) |
\\brief Remove actions from history actions vector that match the condition \\param firstRedoIndex - set redo index for calculate how many actions removed before it \\param deepFiltering - filter actions into combined actions \\return pair (anything removed, how many removed before firstRedoIndex)
Triangulation mrmeshpy.findAlphaShapeAllTriangles | ( | PointCloud | cloud, |
float | radius ) |
find all triangles of alpha-shape with negative alpha = -1/radius
None mrmeshpy.findAlphaShapeNeiTriangles | ( | PointCloud | cloud, |
VertId | v, | ||
float | radius, | ||
Triangulation | appendTris, | ||
std_vector_Id_VertTag | neis, | ||
bool | onlyLargerVids ) |
find all triangles of alpha-shape with negative alpha = -1/radius, where each triangle contains point #v and two other points
float mrmeshpy.findAvgPointsRadius | ( | PointCloud | pointCloud, |
int | avgPoints, | ||
int | samples = 1024 ) |
\\brief Finds the radius of ball, so on average that ball contained avgPoints excluding the central point \\param samples the number of test points to find given number of samples in each \\ingroup PointCloudGroup
std_vector_Vector3_float mrmeshpy.findBestFreeformDeformation | ( | Box3f | box, |
std_vector_Vector3_float | source, | ||
std_vector_Vector3_float | target, | ||
Vector3i | resolution = 'Vector3i::diagonal(2)', | ||
AffineXf3f | samplesToBox = None ) |
Calculates best Free Form transform to fit given source->target deformation origin ref grid as box corners ( resolution parameter specifies how to divide box ) samplesToBox - if set used to transform source and target points to box space returns new positions of ref grid
VertBitSet mrmeshpy.findCloseVertices | ( | Mesh | mesh, |
float | closeDist, | ||
func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
VertBitSet mrmeshpy.findCloseVertices | ( | PointCloud | cloud, |
float | closeDist, | ||
func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
VertBitSet mrmeshpy.findCloseVertices | ( | VertCoords | points, |
float | closeDist, | ||
VertBitSet | valid = None, | ||
func_bool_from_float | cb = '{}' ) |
finds all close vertices, where for each vertex there is another one located within given distance
VertBitSet mrmeshpy.findCloseVertices | ( | VertMap | smallestMap | ) |
finds all close vertices, where for each vertex there is another one located within given distance; smallestMap is the result of findSmallestCloseVertices function call
std_vector_EdgePointPair mrmeshpy.findCollidingEdgePairs | ( | Polyline2 | a, |
Polyline2 | b, | ||
AffineXf2f | rigidB2A = None, | ||
bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding edges from two 2d polylines \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting edges and returns faster
std_vector_UndirectedEdgeUndirectedEdge mrmeshpy.findCollidingEdges | ( | Polyline2 | a, |
Polyline2 | b, | ||
AffineXf2f | rigidB2A = None, | ||
bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding edges from two 2d polylines \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting edges and returns faster
tuple[UndirectedEdgeBitSet, UndirectedEdgeBitSet] mrmeshpy.findCollidingEdgesBitsets | ( | Polyline2 | a, |
Polyline2 | b, | ||
AffineXf2f | rigidB2A = None ) |
\\brief finds bitset per polyline with colliding edges \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
std_vector_EdgeTri mrmeshpy.findCollidingEdgeTrisPrecise | ( | Mesh | a, |
std_vector_Id_EdgeTag | edgesA, | ||
Mesh | b, | ||
std_vector_Id_FaceTag | facesB, | ||
func_Vector3_int_from_Vector3_float | conv, | ||
AffineXf3f | rigidB2A = None ) |
finds all intersections between every given edge from A and given triangles from B
std_vector_EdgeTri mrmeshpy.findCollidingEdgeTrisPrecise | ( | Mesh | a, |
std_vector_Id_FaceTag | facesA, | ||
Mesh | b, | ||
std_vector_Id_EdgeTag | edgesB, | ||
func_Vector3_int_from_Vector3_float | conv, | ||
AffineXf3f | rigidB2A = None ) |
finds all intersections between every given triangle from A and given edge from B
PreciseCollisionResult mrmeshpy.findCollidingEdgeTrisPrecise | ( | MeshPart | a, |
MeshPart | b, | ||
func_Vector3_int_from_Vector3_float | conv, | ||
AffineXf3f | rigidB2A = None, | ||
bool | anyIntersection = False ) |
\\brief finds all pairs of colliding edges from one mesh and triangle from another mesh \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param anyIntersection if true then the function returns as fast as it finds any intersection
tuple[FaceBitSet, FaceBitSet] mrmeshpy.findCollidingTriangleBitsets | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None ) |
the same as \\ref findCollidingTriangles, but returns one bite set per mesh with colliding triangles
std_vector_FaceFace mrmeshpy.findCollidingTriangles | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None, | ||
bool | firstIntersectionOnly = False ) |
\\brief finds all pairs of colliding triangles from two meshes or two mesh regions \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param firstIntersectionOnly if true then the function returns at most one pair of intersecting triangles and returns faster
FaceBitSet mrmeshpy.findDegenerateFaces | ( | MeshPart | mp, |
float | criticalAspectRatio = 3.4028234663852886e+38, | ||
func_bool_from_float | cb = '{}' ) |
finds faces having aspect ratio >= criticalAspectRatio
VertId mrmeshpy.findDirMax | ( | Vector3f | dir, |
MeshPart | mp, | ||
UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds the vertex in the mesh part having the largest projection on given direction, uses aabb-tree inside for faster computation \\ingroup AABBTreeGroup
MeshMeshDistanceResult mrmeshpy.findDistance | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | upDistLimitSq = 3.4028234663852886e+38 ) |
\\brief computes minimal distance between two meshes or two mesh regions \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points
None mrmeshpy.findEdgesInBall | ( | Polyline2 | polyline, |
Vector2f | center, | ||
float | radius, | ||
func_void_from_Id_UndirectedEdgeTag_Vector2_float_float | foundCallback, | ||
AffineXf2f | xf = None ) |
Finds all edges of given polyline that cross or touch given ball (center, radius)
None mrmeshpy.findEdgesInBall | ( | Polyline3 | polyline, |
Vector3f | center, | ||
float | radius, | ||
func_void_from_Id_UndirectedEdgeTag_Vector3_float_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all edges of given polyline that cross or touch given ball (center, radius)
UndirectedEdgeBitSet mrmeshpy.findExtremeEdges | ( | Mesh | mesh, |
VertScalars | field, | ||
ExtremeEdgeType | type ) |
computes all edges in the mesh, where the field not-increases both in left and right triangles
None mrmeshpy.findFewClosestPoints | ( | Vector3f | pt, |
PointCloud | pc, | ||
FewSmallest_PointsProjectionResult | res, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief finds a number of the closest points in the cloud (as configured in \\param res) to given point \\param upDistLimitSq upper limit on the distance in question, points with larger distance than it will not be returned \\param xf pointcloud-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, the algorithm can return given number of points within this distance even skipping closer ones
IOFilter mrmeshpy.findFilter | ( | std_vector_IOFilter | filters, |
str | extension ) |
find a corresponding filter for a given extension
VertBitSet mrmeshpy.findHalfSpacePoints | ( | PointCloud | pc, |
Plane3f | plane ) |
\\return All vertices on the positive side of the plane \\param pc Input point cloud that will be cut by the plane \\param plane Input plane to cut point cloud with
FaceBitSet mrmeshpy.findHoleComplicatingFaces | ( | Mesh | mesh | ) |
returns all faces that complicate one of mesh holes; hole is complicated if it passes via one vertex more than once; deleting such faces simplifies the holes and makes them easier to fill
FaceBitSet mrmeshpy.findInnerShellFacesWithSplits | ( | MeshPart | mp, |
Mesh | shell, | ||
FindInnerShellSettings | settings = '{}' ) |
Finds inner-shell faces on bidirectional \\param shell constructed for an open \\param mp; The function will return all shell faces (after some subdivision) that have distance to mesh of same sign as settings.side
VertBitSet mrmeshpy.findInnerShellVerts | ( | MeshPart | mp, |
Mesh | shell, | ||
FindInnerShellSettings | settings = '{}' ) |
Finds inner-shell vertices on bidirectional \\param shell constructed for an open \\param mp; The function will return all shell vertices that have distance to mesh of same sign as settings.side
InSphere mrmeshpy.findInSphere | ( | Mesh | mesh, |
MeshPoint | m, | ||
InSphereSearchSettings | settings ) |
finds maximal sphere inscribed in the mesh touching point (p) with center along the normal at (p)
InSphere mrmeshpy.findInSphere | ( | Mesh | mesh, |
VertId | v, | ||
InSphereSearchSettings | settings ) |
std_vector_std_vector_Vector3_float mrmeshpy.findIntersectionContours | ( | Mesh | meshA, |
Mesh | meshB, | ||
AffineXf3f | rigidB2A = None ) |
returns intersection contours of given meshes
std_vector_std_vector_Id_EdgeTag mrmeshpy.findLeftBoundary | ( | MeshTopology | topology, |
FaceBitSet | region = None ) |
returns all region boundary loops; every loop has region faces on the left, and not-region faces or holes on the right
std_vector_std_vector_Id_EdgeTag mrmeshpy.findLeftBoundaryInsideMesh | ( | MeshTopology | topology, |
FaceBitSet | region ) |
returns all region boundary paths; every path has region faces on the left, and valid not-region faces on the right
float mrmeshpy.findMaxDistanceSq | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the squared Hausdorff distance between two meshes, that is the maximum of squared distances from each mesh vertex to the other mesh (in both directions) \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
float mrmeshpy.findMaxDistanceSq | ( | PointCloud | a, |
PointCloud | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the squared Hausdorff distance between two point clouds, that is the maximum of squared distances from each point to the other cloud (in both directions) \\param rigidB2A rigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
float mrmeshpy.findMaxDistanceSqOneWay | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the maximum of the squared distances from each B-mesh vertex to A-mesh \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
float mrmeshpy.findMaxDistanceSqOneWay | ( | PointCloud | a, |
PointCloud | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | maxDistanceSq = 3.4028234663852886e+38 ) |
\\brief returns the maximum of the squared distances from each B-point to A-cloud \\param rigidB2A rigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation \\param maxDistanceSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq
None mrmeshpy.findMaxVectorDim | ( | int_output | dimX, |
int_output | dimY, | ||
int_output | dimZ, | ||
Vector3d | dir ) |
\\brief finds index of maximum axis and stores it into dimZ \\details http://jcgt.org/published/0002/01/05/paper.pdf Example input: dir = (1,1,-2). Result: dimZ = 2, dimX = 1, dimY = 0. \\param[out] dimX are filled by right-hand rule from dimZ \\param[out] dimY are filled by right-hand rule from dimZ \\param[out] dimZ index of maximum axis
None mrmeshpy.findMaxVectorDim | ( | int_output | dimX, |
int_output | dimY, | ||
int_output | dimZ, | ||
Vector3f | dir ) |
\\brief finds index of maximum axis and stores it into dimZ \\details http://jcgt.org/published/0002/01/05/paper.pdf Example input: dir = (1,1,-2). Result: dimZ = 2, dimX = 1, dimY = 0. \\param[out] dimX are filled by right-hand rule from dimZ \\param[out] dimY are filled by right-hand rule from dimZ \\param[out] dimZ index of maximum axis
None mrmeshpy.findMeshEdgesInBall | ( | Mesh | mesh, |
AABBTreePolyline3 | tree, | ||
Vector3f | center, | ||
float | radius, | ||
func_void_from_Id_UndirectedEdgeTag_Vector3_float_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all edges of given mesh edges (specified by the tree) that cross or touch given ball (center, radius)
std_vector_std_pair_Id_VertTag_Id_VertTag mrmeshpy.findMultipleEdges | ( | MeshTopology | topology, |
func_bool_from_float | cb = '{}' ) |
Buffer_VertId mrmeshpy.findNClosestPointsPerPoint | ( | PointCloud | pc, |
int | numNei, | ||
func_bool_from_float | progress = '{}' ) |
\\brief finds given number of closest points (excluding itself) to each valid point in the cloud; \\param numNei the number of closest points to find for each point \\return a buffer where for every valid point with index `i` its neighbours are stored at indices [i*numNei; (i+1)*numNei)
VertBitSet mrmeshpy.findNeighborVerts | ( | Mesh | mesh, |
PointOnFace | start, | ||
float | range ) |
calculates all neighbor vertices within a given \\param range and to first vertices with the distance more or equal than range
VertBitSet mrmeshpy.findNRingVerts | ( | MeshTopology | topology, |
int | n, | ||
VertBitSet | region = None ) |
finds vertices in region with complete ring of N edges
VertBitSet mrmeshpy.findOutliers | ( | PointCloud | pc, |
FindOutliersParams | params ) |
Finding outlier points
std_vector_TaggedBitSet_FaceTag mrmeshpy.findOverhangs | ( | Mesh | mesh, |
FindOverhangsSettings | settings ) |
\\brief Find face regions that might create overhangs \\param mesh - source mesh \\param settings - parameters \\return face regions
FaceBitSet mrmeshpy.findOverlappingTris | ( | MeshPart | mp, |
FindOverlappingSettings | settings ) |
finds all triangles that have oppositely oriented close triangle in the mesh
None mrmeshpy.findPointsInBall | ( | AABBTreePoints | tree, |
Ball3f | ball, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all points in tree that are inside or on the surface of given ball \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
None mrmeshpy.findPointsInBall | ( | AABBTreePoints | tree, |
Vector3f | center, | ||
float | radius, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
None mrmeshpy.findPointsInBall | ( | Mesh | mesh, |
Ball3f | ball, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all valid vertices of the mesh that are inside or on the surface of given ball \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
None mrmeshpy.findPointsInBall | ( | Mesh | mesh, |
Vector3f | center, | ||
float | radius, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
None mrmeshpy.findPointsInBall | ( | PointCloud | pointCloud, |
Ball3f | ball, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all valid points of pointCloud that are inside or on the surface of given ball \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
None mrmeshpy.findPointsInBall | ( | PointCloud | pointCloud, |
Vector3f | center, | ||
float | radius, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
None mrmeshpy.findPointsInBox | ( | AABBTreePoints | tree, |
Box3f | box, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all points in tree that are inside or on the surface of given box \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
None mrmeshpy.findPointsInBox | ( | Mesh | mesh, |
Box3f | box, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all valid vertices of the mesh that are inside or on the surface of given box \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
None mrmeshpy.findPointsInBox | ( | PointCloud | pointCloud, |
Box3f | box, | ||
func_void_from_Id_VertTag_Vector3_float | foundCallback, | ||
AffineXf3f | xf = None ) |
Finds all valid points of pointCloud that are inside or on the surface of given box \\ingroup AABBTreeGroup \\param xf points-to-center transformation, if not specified then identity transformation is assumed
MeshProjectionResult mrmeshpy.findProjection | ( | Vector3f | pt, |
MeshPart | mp, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0, | ||
func_bool_from_Id_FaceTag | validFaces = '{}', | ||
func_bool_from_MeshProjectionResult | validProjections = '{}' ) |
\\brief computes the closest point on mesh (or its region) to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf mesh-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param validFaces if provided then only faces from there will be considered as projections \\param validProjections if provided then only projections passed this test can be returned
PolylineProjectionResult3 mrmeshpy.findProjectionOnMeshEdges | ( | Line3f | ln, |
Mesh | mesh, | ||
AABBTreePolyline3 | tree, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on the mesh edges (specified by the tree) to given straight line \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
PolylineProjectionResult3 mrmeshpy.findProjectionOnMeshEdges | ( | Vector3f | pt, |
Mesh | mesh, | ||
AABBTreePolyline3 | tree, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on the mesh edges (specified by the tree) to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
PointsProjectionResult mrmeshpy.findProjectionOnPoints | ( | Vector3f | pt, |
PointCloud | pc, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0, | ||
func_bool_from_Id_VertTag | skipCb = '{}' ) |
\\brief computes the closest point on point cloud to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf pointcloud-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param skipCb callback to discard VertId projection candidate
PolylineProjectionResult3 mrmeshpy.findProjectionOnPolyline | ( | Line3f | ln, |
Polyline3 | polyline, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given straight line \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
PolylineProjectionResult3 mrmeshpy.findProjectionOnPolyline | ( | Vector3f | pt, |
Polyline3 | polyline, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
PolylineProjectionResult2 mrmeshpy.findProjectionOnPolyline2 | ( | Vector2f | pt, |
Polyline2 | polyline, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf2f | xf = None, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on polyline to given point \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
Polyline2ProjectionWithOffsetResult mrmeshpy.findProjectionOnPolyline2WithOffset | ( | Vector2f | pt, |
Polyline2 | polyline, | ||
UndirectedEdgeScalars | offsetPerEdge, | ||
float | upDistLimit = 3.4028234663852886e+38, | ||
AffineXf2f | xf = None, | ||
float | loDistLimit = 0 ) |
\\brief computes the closest point on polyline to given point, respecting each edge offset \\param offsetPerEdge offset for each edge of polyline \\param upDistLimit upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimit and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimit low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
PolylineProjectionWithOffsetResult3 mrmeshpy.findProjectionOnPolylineWithOffset | ( | Vector3f | pt, |
Polyline3 | polyline, | ||
UndirectedEdgeScalars | offsetPerEdge, | ||
float | upDistLimit = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimit = 0 ) |
\\brief computes the closest point on polyline to given point, respecting each edge offset \\param offsetPerEdge offset for each edge of polyline \\param upDistLimit upper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimit and no valid point \\param xf polyline-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimit low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
MeshProjectionResult mrmeshpy.findProjectionSubtree | ( | Vector3f | pt, |
MeshPart | mp, | ||
AABBTree | tree, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
AffineXf3f | xf = None, | ||
float | loDistLimitSq = 0, | ||
func_bool_from_Id_FaceTag | validFaces = '{}', | ||
func_bool_from_MeshProjectionResult | validProjections = '{}' ) |
\\brief computes the closest point on mesh (or its region) to given point \\param tree explicitly given BVH-tree for whole mesh or part of mesh we are searching projection on, \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point \\param xf mesh-to-point transformation, if not specified then identity transformation is assumed \\param loDistLimitSq low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one \\param validFaces if provided then only faces from there will be considered as projections \\param validProjections if provided then only projections passed this test can be returned
UndirectedEdgeBitSet mrmeshpy.findRegionBoundaryUndirectedEdgesInsideMesh | ( | MeshTopology | topology, |
FaceBitSet | region ) |
returns all region boundary edges, where each edge has a region face on one side, and a valid not-region face on another side
FaceBitSet mrmeshpy.findRegionOuterFaces | ( | MeshTopology | topology, |
FaceBitSet | region ) |
\\returns All out of region faces that have a common edge with at least one region face
Triangulation mrmeshpy.findRepeatedOrientedTriangles | ( | AllLocalTriangulations | triangs, |
int | repetitions ) |
from local triangulations returns all oriented triangles with given number of repetitions each in [1,3]
None mrmeshpy.findRepeatedOrientedTriangles | ( | AllLocalTriangulations | triangs, |
Triangulation | outRep3, | ||
Triangulation | outRep2 ) |
from local triangulations returns all oriented triangles with 3 or 2 repetitions each; if both outRep3 and outRep2 are necessary then it is faster to call this function than above one
std_vector_UnorientedTriangle mrmeshpy.findRepeatedUnorientedTriangles | ( | AllLocalTriangulations | triangs, |
int | repetitions ) |
from local triangulations returns all unoriented triangles with given number of repetitions each in [1,3]
VertBitSet mrmeshpy.findRepeatedVertsOnHoleBd | ( | MeshTopology | topology | ) |
returns set bits for all vertices present on the boundary of a hole several times;
std_vector_std_vector_Id_EdgeTag mrmeshpy.findRightBoundary | ( | MeshTopology | topology, |
FaceBitSet | region = None ) |
returns all region boundary loops; every loop has region faces on the right, and not-region faces or holes on the left
Vector2f mrmeshpy.findSegmentSegmentIntersectionPrecise | ( | Vector2f | a, |
Vector2f | b, | ||
Vector2f | c, | ||
Vector2f | d, | ||
CoordinateConverters2 | converters ) |
finds intersection precise, using high precision int inside this function input should have intersection
Vector2i mrmeshpy.findSegmentSegmentIntersectionPrecise | ( | Vector2i | a, |
Vector2i | b, | ||
Vector2i | c, | ||
Vector2i | d ) |
finds intersection precise, using high precision int inside this function input should have intersection
std_vector_EdgePointPair mrmeshpy.findSelfCollidingEdgePairs | ( | Polyline2 | polyline | ) |
finds all pairs of colliding edges from 2d polyline
std_vector_UndirectedEdgeUndirectedEdge mrmeshpy.findSelfCollidingEdges | ( | Polyline2 | polyline | ) |
finds all pairs of colliding edges from 2d polyline
UndirectedEdgeBitSet mrmeshpy.findSelfCollidingEdgesBS | ( | Polyline2 | polyline | ) |
finds the union of all self-intersecting edges
std_vector_FaceFace mrmeshpy.findSelfCollidingTriangles | ( | MeshPart | mp, |
func_bool_from_float | cb = '{}', | ||
Face2RegionMap | regionMap = None ) |
finds all pairs of colliding triangles from one mesh or a region
bool mrmeshpy.findSelfCollidingTriangles | ( | MeshPart | mp, |
std_vector_FaceFace | outCollidingPairs, | ||
func_bool_from_float | cb = '{}', | ||
Face2RegionMap | regionMap = None ) |
finds all pairs (or the fact of any self-collision) of colliding triangles from one mesh or a region
FaceBitSet mrmeshpy.findSelfCollidingTrianglesBS | ( | MeshPart | mp, |
func_bool_from_float | cb = '{}', | ||
Face2RegionMap | regionMap = None ) |
the same \\ref findSelfCollidingTriangles but returns the union of all self-intersecting faces
UndirectedEdgeBitSet mrmeshpy.findShortEdges | ( | MeshPart | mp, |
float | criticalLength, | ||
func_bool_from_float | cb = '{}' ) |
finds edges having length <= criticalLength
MeshMeshSignedDistanceResult mrmeshpy.findSignedDistance | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None, | ||
float | upDistLimitSq = 3.4028234663852886e+38 ) |
\\brief computes minimal distance between two meshes \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation \\param upDistLimitSq upper limit on the positive distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points
SignedDistanceToMeshResult mrmeshpy.findSignedDistance | ( | Vector3f | pt, |
MeshPart | mp, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
float | loDistLimitSq = 0 ) |
\\brief computes the closest point on mesh (or its region) to given point, and finds the distance with sign to it (positive - outside, negative - inside the mesh) \\param upDistLimitSq upper limit on the distance in question, if the real distance is larger then the function exits returning nullopt \\param loDistLimitSq low limit on the distance in question, if the real distance smaller then the function exits returning nullopt
VertScalars mrmeshpy.findSignedDistances | ( | Mesh | refMesh, |
Mesh | mesh, | ||
MeshProjectionParameters | params = '{}', | ||
IPointsToMeshProjector | projector = '{}' ) |
Computes signed distances from valid vertices of test mesh to the closest point on the reference mesh: positive value - outside reference mesh, negative - inside reference mesh; this method can return wrong sign if the closest point is located on self-intersecting part of the mesh
VertScalars mrmeshpy.findSignedDistances | ( | Mesh | refMesh, |
VertCoords | testPoints, | ||
VertBitSet | validTestPoints = '{}', | ||
MeshProjectionParameters | params = '{}', | ||
IPointsToMeshProjector | projector = '{}' ) |
Computes signed distances from given test points to the closest point on the reference mesh: positive value - outside reference mesh, negative - inside reference mesh; this method can return wrong sign if the closest point is located on self-intersecting part of the mesh
BitSet mrmeshpy.findSkyRays | ( | Mesh | terrain, |
VertCoords | samples, | ||
VertBitSet | validSamples, | ||
std_vector_SkyPatch | skyPatches, | ||
std_vector_MeshIntersectionResult | outIntersections = None ) |
In each valid sample point tests the rays from that point in the sky; \\return bitset where for every valid sample #i its rays are stored at indices [i*numPatches; (i+1)*numPatches), 0s for occluded rays (hitting the terrain) and 1s for the ones which don't hit anything and reach the sky \\param outIntersections - optional output vector of MeshIntersectionResult for every valid sample point
VertMap mrmeshpy.findSmallestCloseVertices | ( | Mesh | mesh, |
float | closeDist, | ||
func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself
VertMap mrmeshpy.findSmallestCloseVertices | ( | PointCloud | cloud, |
float | closeDist, | ||
func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself
VertMap mrmeshpy.findSmallestCloseVertices | ( | VertCoords | points, |
float | closeDist, | ||
VertBitSet | valid = None, | ||
func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself; the search tree is constructe inside
VertMap mrmeshpy.findSmallestCloseVerticesUsingTree | ( | VertCoords | points, |
float | closeDist, | ||
AABBTreePoints | tree, | ||
VertBitSet | valid, | ||
func_bool_from_float | cb = '{}' ) |
returns a map where each valid vertex is mapped to the smallest valid vertex Id located within given distance (including itself), and this smallest vertex is mapped to itself, each vertex not from valid set is mapped to itself; given tree is used as is
EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
VertScalars | field, | ||
EdgePoint | ep ) |
finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of left and right edge triangles' union in case (ep) is inner edge point)
EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
VertScalars | field, | ||
MeshTriPoint | tp ) |
finds the point along minus maximal gradient on the boundary of triangles around given point (the boundary of the triangle itself in case (tp) is inner triangle point)
EdgePoint mrmeshpy.findSteepestDescentPoint | ( | MeshPart | mp, |
VertScalars | field, | ||
VertId | v ) |
finds the point along minus maximal gradient on the boundary of first ring boundary around given vertex
int mrmeshpy.findSubstringCaseInsensitive | ( | str | string, |
str | substring ) |
Finds the substring in the string. \\return position, npos if not found \\ingroup BasicGroup
std_vector_LineSegm_Vector3_float mrmeshpy.findTriangleSectionsByXYPlane | ( | MeshPart | mp, |
float | zLevel, | ||
std_vector_Id_FaceTag | faces = None, | ||
UseAABBTree | u = 'UseAABBTree::Yes' ) |
finds all intersected triangles by the plane z=zLevel \\return the section's line segment within each such triangle; \\param faces optional output of the same size as return, where for each line segment one can find its triangle's id \\details this function must be faster than extractXYPlaneSections function when connecting continuous contours take most of the time
Vector3f mrmeshpy.findTriangleSegmentIntersectionPrecise | ( | Vector3f | a, |
Vector3f | b, | ||
Vector3f | c, | ||
Vector3f | d, | ||
Vector3f | e, | ||
CoordinateConverters | converters ) |
finds intersection precise, using high precision int inside this function input should have intersection
None mrmeshpy.findTrisInBall | ( | MeshPart | mp, |
Ball3f | ball, | ||
func_Processing_from_MeshProjectionResult_Ball_Vector3_float | foundCallback, | ||
func_bool_from_Id_FaceTag | validFaces = '{}' ) |
enumerates all triangles within the ball until callback returns Stop; the ball during enumeration can shrink (new ball is always within the previous one) but never expand
std_vector_std_pair_Id_EdgeTag_Id_EdgeTag mrmeshpy.findTwinEdgePairs | ( | Mesh | mesh, |
float | closeDist ) |
finds pairs of twin edges (each twin edge will be present at least in one of pairs)
EdgeBitSet mrmeshpy.findTwinEdges | ( | Mesh | mesh, |
float | closeDist ) |
finds all directed twin edges
EdgeBitSet mrmeshpy.findTwinEdges | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag mrmeshpy.findTwinUndirectedEdgeHashMap | ( | Mesh | mesh, |
float | closeDist ) |
provided that each edge has at most one twin, composes bidirectional mapping between twins
phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag mrmeshpy.findTwinUndirectedEdgeHashMap | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
UndirectedEdgeBitSet mrmeshpy.findTwinUndirectedEdges | ( | Mesh | mesh, |
float | closeDist ) |
finds all undirected twin edges
UndirectedEdgeBitSet mrmeshpy.findTwinUndirectedEdges | ( | std_vector_std_pair_Id_EdgeTag_Id_EdgeTag | pairs | ) |
tuple[VertId, VertId] mrmeshpy.findTwoClosestPoints | ( | PointCloud | pc, |
func_bool_from_float | progress = '{}' ) |
finds two closest points (first id < second id) in whole point cloud
None mrmeshpy.findUndercuts | ( | Mesh | mesh, |
Vector3f | upDirection, | ||
FaceBitSet | outUndercuts ) |
Adds to \\param outUndercuts undercut faces
float mrmeshpy.findUndercuts | ( | Mesh | mesh, |
Vector3f | upDirection, | ||
FaceBitSet | outUndercuts, | ||
func_double_from_TaggedBitSet_FaceTag_Vector3_float | metric ) |
Adds to \\param outUndercuts undercut faces Returns summary metric of undercut faces
None mrmeshpy.findUndercuts | ( | Mesh | mesh, |
Vector3f | upDirection, | ||
VertBitSet | outUndercuts ) |
Adds to \\param outUndercuts undercut vertices
None mrmeshpy.fixMultipleEdges | ( | Mesh | mesh | ) |
finds and resolves multiple edges
None mrmeshpy.fixMultipleEdges | ( | Mesh | mesh, |
std_vector_std_pair_Id_VertTag_Id_VertTag | multipleEdges ) |
resolves given multiple edges, but splitting all but one edge in each group
None mrmeshpy.fixSelfIntersections | ( | Mesh | mesh, |
float | voxelSize ) |
Fix self-intersections by converting to voxels and back.
None mrmeshpy.fixUndercuts | ( | Mesh | mesh, |
FaceBitSet | selectedArea, | ||
Vector3f | upDirection, | ||
float | voxelSize = 0.0, | ||
float | bottomExtension = 0.0 ) |
Changes mesh: Fills all holes first, then: fixes undercuts (in selected area) via prolonging widest points down Requires to update RenderObject after using upDirection is in mesh space voxelSize - size of voxel in mesh rasterization, precision grows with lower voxelSize bottomExtension - this parameter specifies how long should bottom prolongation be, if (bottomExtension <= 0) bottomExtension = 2*voxelSize if mesh is not closed this is used to prolong hole and make bottom if voxelSize == 0.0f it will be counted automaticly
None mrmeshpy.fixUndercuts | ( | Mesh | mesh, |
Vector3f | upDirection, | ||
float | voxelSize = 0.0, | ||
float | bottomExtension = 0.0 ) |
Changes mesh: Fills all holes first, then: fixes undercuts via prolonging widest points down Requires to update RenderObject after using upDirection is in mesh space voxelSize - size of voxel in mesh rasterization, precision grows with lower voxelSize bottomExtension - this parameter specifies how long should bottom prolongation be, if (bottomExtension <= 0) bottomExtension = 2*voxelSize if mesh is not closed this is used to prolong hole and make bottom if voxelSize == 0.0f it will be counted automaticly
VdbVolume mrmeshpy.floatGridToVdbVolume | ( | OpenVdbFloatGrid | grid | ) |
fills VdbVolume data from FloatGrid (does not fill voxels size, cause we expect it outside)
str mrmeshpy.formatNoTrailingZeros | ( | char_output | fmt, |
float | v, | ||
int | digitsAfterPoint, | ||
int | precision = 6 ) |
returns printf-format for floating-point value in decimal notation with given precision in digits and without trailing zeros after the decimal point \\param fmt preallocated buffer of 5 bytes \\param v value to print \\param digitsAfterPoint maximal number of digits after decimal point \\param precision maximal number of not-zero decimal digits
bool mrmeshpy.fromSameTriangle | ( | MeshTopology | topology, |
EdgePoint | a, | ||
EdgePoint | b ) |
returns true if points a and b are located on a boundary of the same triangle; \\details if true a.e and b.e are updated to have that triangle on the left \\related EdgePoint
bool mrmeshpy.fromSameTriangle | ( | MeshTopology | topology, |
MeshTriPoint | a, | ||
MeshTriPoint | b ) |
returns true if points a and b are located insides or on a boundary of the same triangle; if true a.e and b.e are updated to have that triangle on the left
LoadedObjectT mrmeshpy.fromSceneMison | ( | os.PathLike | str | bytes | path, |
func_bool_from_float | callback = '{}' ) |
load scene from MISON file \\n JSON file with array named "Objects" or root array: \\n element fields:\\n "Filename" : required full path to file for loading object "XF": optional xf for loaded object "Name": optional name for loaded object
LoadedObjectT mrmeshpy.fromSceneMison | ( | typing.Any | in_, |
func_bool_from_float | callback = '{}' ) |
SimpleVolumeMinMax mrmeshpy.functionVolumeToSimpleVolume | ( | FunctionVolume | volume, |
func_bool_from_float | callback = '{}' ) |
converts function volume into simple volume
VdbVolume mrmeshpy.functionVolumeToVdbVolume | ( | FunctionVolume | functoinVolume, |
func_bool_from_float | cb = '{}' ) |
make VdbVolume from FunctionVolume make copy of data set minimum value as the background value
Mesh mrmeshpy.generalOffsetMesh | ( | MeshPart | mp, |
float | offset, | ||
GeneralOffsetParameters | params ) |
Offsets mesh by converting it to voxels and back using one of three modes specified in the parameters
AffineXf3f mrmeshpy.getAligningXf | ( | PointToPlaneAligningTransform | p2pl, |
ICPMode | mode, | ||
float | angleLimit, | ||
float | scaleLimit, | ||
Vector3f | fixedRotationAxis ) |
given prepared (p2pl) object, finds the best transformation from it of given type with given limitations on rotation angle and global scale
std_vector_TaggedBitSet_FaceTag mrmeshpy.getAllComponents | ( | Face2RegionMap | componentsMap, |
int | componentsCount, | ||
FaceBitSet | region, | ||
int | maxComponentCount ) |
gets all connected components from components map ( FaceId => RegionId ) \\detail if components number more than the maxComponentCount, they will be combined into groups of the same size (this similarly changes componentsMap) \\param maxComponentCount should be more then 1 \\return components bitsets vector
tuple[std_vector_TaggedBitSet_FaceTag, int] mrmeshpy.getAllComponents | ( | MeshPart | meshPart, |
int | maxComponentCount, | ||
MeshComponents.FaceIncidence | incidence = 'FaceIncidence::PerEdge', | ||
func_bool_from_Id_UndirectedEdgeTag | isCompBd = '{}' ) |
gets all connected components of mesh part \\detail if components number more than the maxComponentCount, they will be combined into groups of the same size \\param maxComponentCount should be more then 1 \\return pair components bitsets vector and number components in one group if components number more than maxComponentCount
std_vector_TaggedBitSet_FaceTag mrmeshpy.getAllComponents | ( | MeshPart | meshPart, |
MeshComponents.FaceIncidence | incidence = 'FaceIncidence::PerEdge', | ||
func_bool_from_Id_UndirectedEdgeTag | isCompBd = '{}' ) |
gets all connected components of mesh part \\note be careful, if mesh is large enough and has many components, the memory overflow will occur
std_vector_TaggedBitSet_VertTag mrmeshpy.getAllComponentsVerts | ( | Mesh | mesh, |
VertBitSet | region = None ) |
gets all connected components of mesh part
std_vector_IOFilter mrmeshpy.getAllFilters | ( | ) |
returns filters for all supported file formats for all types of objects
std_vector_std_shared_ptr_Object mrmeshpy.getAllObjectsInTree_Object | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectDistanceMap mrmeshpy.getAllObjectsInTree_ObjectDistanceMap | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectLines mrmeshpy.getAllObjectsInTree_ObjectLines | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectLinesHolder mrmeshpy.getAllObjectsInTree_ObjectLinesHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectMesh mrmeshpy.getAllObjectsInTree_ObjectMesh | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectMeshHolder mrmeshpy.getAllObjectsInTree_ObjectMeshHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectPoints mrmeshpy.getAllObjectsInTree_ObjectPoints | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectPointsHolder mrmeshpy.getAllObjectsInTree_ObjectPointsHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.getAllObjectsInTree_ObjectVoxels | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_VisualObject mrmeshpy.getAllObjectsInTree_VisualObject | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
UndirectedEdgeId mrmeshpy.getAt | ( | Buffer_UndirectedEdgeId_UndirectedEdgeId | bmap, |
UndirectedEdgeId | key, | ||
UndirectedEdgeId | def_ = '{}' ) |
given some buffer map and a key, returns the value associated with the key, or default value if key is invalid
BooleanResultPoints mrmeshpy.getBooleanPoints | ( | Mesh | meshA, |
Mesh | meshB, | ||
BooleanOperation | operation, | ||
AffineXf3f | rigidB2A = None ) |
\\brief Returns the points of mesh boolean's result mesh \\ingroup BooleanGroup Returns vertices and intersection points of mesh that is result of boolean operation of mesh `A` and mesh `B`. Can be used as fast alternative for cases where the mesh topology can be ignored (bounding box, convex hull, etc.) \\param meshA Input mesh `A` \\param meshB Input mesh `B` \\param operation Boolean operation to perform \\param rigidB2A Transform from mesh `B` space to mesh `A` space
FaceBitSet mrmeshpy.getBoundaryFaces | ( | MeshTopology | topology, |
FaceBitSet | region ) |
returns faces from given region that have at least one neighbor face with shared edge not from the region
VertBitSet mrmeshpy.getBoundaryVerts | ( | MeshTopology | topology, |
FaceBitSet | region = None ) |
composes the set of all boundary vertices for given region (or whole mesh if !region)
str mrmeshpy.getCancelMessage | ( | os.PathLike | str | bytes | path | ) |
Returns message showed when loading is canceled
FillHoleMetric mrmeshpy.getCircumscribedMetric | ( | Mesh | mesh | ) |
This metric minimizes the sum of circumcircle radii for all triangles in the triangulation. It is rather fast to calculate, and it results in typically good triangulations.
FillHoleMetric mrmeshpy.getComplexFillMetric | ( | Mesh | mesh, |
Id_EdgeTag | e ) |
This metric minimizes the sum of triangleMetric for all triangles in the triangulation plus the sum edgeMetric for all edges inside and on the boundary of the triangulation.\\n Where\\n triangleMetric is proportional to weighted triangle area and triangle aspect ratio\\n edgeMetric grows with angle between triangles as ( ( 1 - cos( x ) ) / ( 1 + cos( x ) ) ) ^ 4.
FillHoleMetric mrmeshpy.getComplexStitchMetric | ( | Mesh | mesh | ) |
This metric minimizes the sum of triangleMetric for all triangles in the triangulation plus the sum edgeMetric for all edges inside and on the boundary of the triangulation.\\n Where\\n triangleMetric is proportional to triangle aspect ratio\\n edgeMetric is proportional to ( 1 - dihedralAngleCos )
int mrmeshpy.getContourPlaneIntersections | ( | std_vector_Vector3_float | path, |
Plane3f | plane, | ||
std_vector_Vector3_float | outIntersections = None ) |
finds all intersection points between given contour and plane, adds them in outIntersections and returns their number
str mrmeshpy.GetCpuId | ( | ) |
returns string identification of the CPU
FaceBitSet mrmeshpy.getCrossedFaces | ( | MeshTopology | topology, |
std_vector_EdgePoint | isoline ) |
for a consistently oriented isoline, returns all faces it goes inside
str mrmeshpy.getCurrentStacktrace | ( | ) |
returns string representation of the current stacktrace
str mrmeshpy.getCurrentStacktraceInline | ( | ) |
returns string representation of the current stacktrace; the function is inlined, to put the code in any shared library; if std::stacktrace is first called from MRMesh.dll then it is not unloaded propely
Object mrmeshpy.getDepthFirstObject_Object | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectDistanceMap mrmeshpy.getDepthFirstObject_ObjectDistanceMap | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectLines mrmeshpy.getDepthFirstObject_ObjectLines | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectLinesHolder mrmeshpy.getDepthFirstObject_ObjectLinesHolder | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectMesh mrmeshpy.getDepthFirstObject_ObjectMesh | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectMeshHolder mrmeshpy.getDepthFirstObject_ObjectMeshHolder | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectPoints mrmeshpy.getDepthFirstObject_ObjectPoints | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectPointsHolder mrmeshpy.getDepthFirstObject_ObjectPointsHolder | ( | Object | root, |
ObjectSelectivityType | type ) |
ObjectVoxels mrmeshpy.getDepthFirstObject_ObjectVoxels | ( | Object | root, |
ObjectSelectivityType | type ) |
VisualObject mrmeshpy.getDepthFirstObject_VisualObject | ( | Object | root, |
ObjectSelectivityType | type ) |
str mrmeshpy.GetDetailedOSName | ( | ) |
returns string with OS name with details
FillHoleMetric mrmeshpy.getEdgeLengthFillMetric | ( | Mesh | mesh | ) |
Simple metric minimizing the sum of all edge lengths
FillHoleMetric mrmeshpy.getEdgeLengthStitchMetric | ( | Mesh | mesh | ) |
Forbids connecting vertices from the same hole \\n Simple metric minimizing edge length
UndirectedEdgeBMap mrmeshpy.getEdgeOrdering | ( | FaceBMap | faceMap, |
MeshTopology | topology ) |
compute the order of edges given the order of faces: edges near first faces also appear first; \\param faceMap old face id -> new face id
pathlib.Path mrmeshpy.GetEmbeddedPythonDirectory | ( | ) |
returns path of embedded python modules files directory .dll .so files
pathlib.Path mrmeshpy.GetExeDirectory | ( | ) |
returns path of current exe directory
FaceBitSet mrmeshpy.getFacesByMinEdgeLength | ( | Mesh | mesh, |
float | minLength ) |
Return faces with at least one edge longer than the specified length.
Vector3f mrmeshpy.getFeatureDirection | ( | FeatureObject | feature | ) |
Using forEachObjectKind the template collects a list of features for which the method ...->getDirection() is available
Vector3f mrmeshpy.getFeatureNormal | ( | FeatureObject | feature | ) |
Using forEachObjectKind the template collects a list of features for which the method ...->getNormal() is available
std_unordered_set_std_string mrmeshpy.getFeaturesTypeWithDirections | ( | ) |
Try to getDirection from specific feature using forEachObjectKind template. Returns nullopt is ...->getDirection() is not available for given feature type.
std_unordered_set_std_string mrmeshpy.getFeaturesTypeWithNormals | ( | ) |
Try to getNormal from specific feature using forEachObjectKind template. Returns nullopt is ...->getNormal() is not available for given feature type.
pathlib.Path mrmeshpy.GetFontsDirectory | ( | ) |
returns path of font files directory .ttf files
HoleFillPlan mrmeshpy.getHoleFillPlan | ( | Mesh | mesh, |
Id_EdgeTag | e, | ||
FillHoleParams | params = '{}' ) |
prepares the plan how to triangulate the face or hole to the left of (e) (not filling it immediately), several getHoleFillPlan can work in parallel
pathlib.Path mrmeshpy.GetHomeDirectory | ( | ) |
returns home directory
str mrmeshpy.getICPStatusInfo | ( | int | iterations, |
ICPExitType | exitType ) |
returns status info string
UndirectedEdgeBitSet mrmeshpy.getIncidentEdges | ( | MeshTopology | topology, |
FaceBitSet | faces ) |
composes the set of all undirected edges, having a face from given set from one of two sides
UndirectedEdgeBitSet mrmeshpy.getIncidentEdges | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges ) |
composes the set of all undirected edges, having at least one common vertex with an edge from given set
FaceBitSet mrmeshpy.getIncidentFaces | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges ) |
composes the set of all faces incident to given edges
FaceBitSet mrmeshpy.getIncidentFaces | ( | MeshTopology | topology, |
VertBitSet | verts ) |
composes the set of all faces incident to given vertices
VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
FaceBitSet | faces ) |
composes the set of all vertices incident to given faces
VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
FaceBitSet | faces, | ||
VertBitSet | store ) |
if faces-parameter is null pointer then simply returns the reference on all valid vertices; otherwise performs store = getIncidentVerts( topology, *faces ) and returns reference on store
VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges ) |
composes the set of all vertices incident to given edges
VertBitSet mrmeshpy.getIncidentVerts | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges, | ||
VertBitSet | store ) |
if edges-parameter is null pointer then simply returns the reference on all valid vertices; otherwise performs store = getIncidentVerts( topology, *edges ) and returns reference on store
UndirectedEdgeBitSet mrmeshpy.getInnerEdges | ( | MeshTopology | topology, |
FaceBitSet | region ) |
composes the set of all edges having both left and right in given region
UndirectedEdgeBitSet mrmeshpy.getInnerEdges | ( | MeshTopology | topology, |
VertBitSet | verts ) |
composes the set of all edges with all their vertices in given set
FaceBitSet mrmeshpy.getInnerFaces | ( | MeshTopology | topology, |
VertBitSet | verts ) |
composes the set of all faces with all their vertices in given set
VertBitSet mrmeshpy.getInnerVerts | ( | MeshTopology | topology, |
FaceBitSet | region = None ) |
composes the set of all vertices not on the boundary of a hole and with all their adjacent faces in given set
VertBitSet mrmeshpy.getInnerVerts | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges ) |
composes the set of all vertices with all their edges in given set
pathlib.Path mrmeshpy.GetLibsDirectory | ( | ) |
returns path of lib files directory .dll .so files
FillHoleMetric mrmeshpy.getMaxDihedralAngleMetric | ( | Mesh | mesh | ) |
This metric minimizes the maximal dihedral angle between the faces in the triangulation and on its boundary
float mrmeshpy.getMeanSqDistToPlane | ( | IPointPairs | pairs | ) |
computes root-mean-square deviation from points to target planes
float mrmeshpy.getMeanSqDistToPoint | ( | IPointPairs | pairs | ) |
computes root-mean-square deviation between points
MeshOrPoints mrmeshpy.getMeshOrPoints | ( | VisualObject | obj | ) |
constructs MeshOrPoints from ObjectMesh or ObjectPoints, otherwise returns nullopt
FillHoleMetric mrmeshpy.getMinAreaMetric | ( | Mesh | mesh | ) |
This metric is for triangulation construction with minimal summed area of triangles. Warning: this metric can produce degenerated triangles
FillHoleMetric mrmeshpy.getMinTriAngleMetric | ( | Mesh | mesh | ) |
This metric maximizes the minimal angle among all faces in the triangulation
str mrmeshpy.GetMRVersionString | ( | ) |
returns version of MR
FaceBitSet mrmeshpy.getNeighborFaces | ( | MeshTopology | topology, |
UndirectedEdgeBitSet | edges ) |
composes the set of all left and right faces of given edges
int mrmeshpy.getNumActivePairs | ( | IPointPairs | pairs | ) |
computes the number of active pairs
int mrmeshpy.getNumNodes | ( | int | numLeaves | ) |
returns the number of nodes in the binary tree with given number of leaves
int mrmeshpy.getNumSamples | ( | IPointPairs | pairs | ) |
returns the number of samples able to form pairs
std_vector_OneMeshContour mrmeshpy.getOneMeshIntersectionContours | ( | Mesh | meshA, |
Mesh | meshB, | ||
std_vector_std_vector_VariableEdgeTri | contours, | ||
bool | getMeshAIntersections, | ||
CoordinateConverters | converters, | ||
AffineXf3f | rigidB2A = None ) |
Converts ordered continuous contours of two meshes to OneMeshContours converters is required for better precision in case of degenerations note that contours should not have intersections
computes optimal order of faces: old face id -> new face id, the order is similar as in AABB tree, but faster to compute
str mrmeshpy.getOSNoSpaces | ( | ) |
returns string identification of the OS
FillHoleMetric mrmeshpy.getParallelPlaneFillMetric | ( | Mesh | mesh, |
Id_EdgeTag | e, | ||
Plane3f | plane = None ) |
This metric minimizes summary projection of new edges to plane normal, (try do produce edges parallel to plane)
int mrmeshpy.getPathEdgesInPlane | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | path, | ||
Plane3f | plane, | ||
float | tolerance = 0.0, | ||
std_vector_Id_EdgeTag | outInPlaneEdges = None ) |
finds all path edges located in given plane with given tolerance, adds them in outInPlaneEdges and returns their number
int mrmeshpy.getPathPlaneIntersections | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | path, | ||
Plane3f | plane, | ||
std_vector_EdgePoint | outIntersections = None ) |
finds all intersection points between given path and plane, adds them in outIntersections and returns their number
HoleFillPlan mrmeshpy.getPlanarHoleFillPlan | ( | Mesh | mesh, |
Id_EdgeTag | e ) |
prepares the plan how to triangulate the planar face or planar hole to the left of (e) (not filling it immediately), several getPlanarHoleFillPlan can work in parallel
FillHoleMetric mrmeshpy.getPlaneFillMetric | ( | Mesh | mesh, |
Id_EdgeTag | e ) |
Same as getCircumscribedFillMetric, but with extra penalty for the triangles having normals looking in the opposite side of plane containing left of (e).
FillHoleMetric mrmeshpy.getPlaneNormalizedFillMetric | ( | Mesh | mesh, |
Id_EdgeTag | e ) |
Similar to getPlaneFillMetric with extra penalty for the triangles having normals looking in the opposite side of plane containing left of (e), but the metric minimizes the sum of circumcircle radius times aspect ratio for all triangles in the triangulation.
ProccessMemoryInfo mrmeshpy.getProccessMemoryInfo | ( | ) |
VertBitSet mrmeshpy.getRegionBoundaryVerts | ( | MeshTopology | topology, |
FaceBitSet | region ) |
composes the set of all boundary vertices for given region, unlike getBoundaryVerts the vertices of mesh boundary having no incident not-region faces are not returned
EdgeBitSet mrmeshpy.getRegionEdges | ( | MeshTopology | topology, |
FaceBitSet | faces ) |
composes the set of all edges, having a face from given set at the left
pathlib.Path mrmeshpy.GetResourcesDirectory | ( | ) |
returns path of resource files directory .json and .png files
int mrmeshpy.getStreamSize | ( | typing.Any | in_ | ) |
get the size of the remaining data in the input stream
FaceBitSet mrmeshpy.getSubdividePart | ( | FaceBitSet | valids, |
int | subdivideParts, | ||
int | myPart ) |
\\brief returns given subdivision part of all valid faces; parallel threads shall be able to safely modify these bits because they do not share any block with other parts \\ingroup DecimateGroup
NumSum mrmeshpy.getSumSqDistToPlane | ( | IPointPairs | pairs, |
std_optional_double | inaccuracy = '{}' ) |
computes the number of active pairs and the sum of squared deviation from points to target planes or the difference between the squared distances between points to target planes and inaccuracy
NumSum mrmeshpy.getSumSqDistToPoint | ( | IPointPairs | pairs, |
std_optional_double | inaccuracy = '{}' ) |
computes the number of active pairs and the sum of squared distances between points or the difference between the squared distances between points and inaccuracy
std_vector_std_vector_EdgePoint mrmeshpy.getSurfacePathsViaVertices | ( | Mesh | mesh, |
VertBitSet | vs ) |
returns a set of mesh lines passing via most of given vertices in auto-selected order; the lines try to avoid sharp turns in the vertices
SystemMemory mrmeshpy.getSystemMemory | ( | ) |
return information about memory available in the system
pathlib.Path mrmeshpy.GetTempDirectory | ( | ) |
returns temp directory
func_Vector3_float_from_Vector3_int mrmeshpy.getToFloatConverter | ( | Box3d | box | ) |
creates converter from Vector3i to Vector3f in Box range (int diapason is mapped to box range)
func_Vector3_int_from_Vector3_float mrmeshpy.getToIntConverter | ( | Box3d | box | ) |
creates converter from Vector3f to Vector3i in Box range (int diapason is mapped to box range)
std_vector_std_shared_ptr_Object mrmeshpy.getTopmostVisibleObjects_Object | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectDistanceMap mrmeshpy.getTopmostVisibleObjects_ObjectDistanceMap | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectLines mrmeshpy.getTopmostVisibleObjects_ObjectLines | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectLinesHolder mrmeshpy.getTopmostVisibleObjects_ObjectLinesHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectMesh mrmeshpy.getTopmostVisibleObjects_ObjectMesh | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectMeshHolder mrmeshpy.getTopmostVisibleObjects_ObjectMeshHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectPoints mrmeshpy.getTopmostVisibleObjects_ObjectPoints | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectPointsHolder mrmeshpy.getTopmostVisibleObjects_ObjectPointsHolder | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.getTopmostVisibleObjects_ObjectVoxels | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
std_vector_std_shared_ptr_VisualObject mrmeshpy.getTopmostVisibleObjects_VisualObject | ( | Object | root, |
ObjectSelectivityType | type = 'ObjectSelectivityType::Selectable' ) |
func_float_from_char_const mrmeshpy.getTypeConverter | ( | ScalarType | scalarType, |
int | range, | ||
int | min ) |
get a function to convert binary data of specified format type to a scalar value \\param scalarType - binary format type \\param range - (for integer types only) the range of possible values \\param min - (for integer types only) the minimal value
FillHoleMetric mrmeshpy.getUniversalMetric | ( | Mesh | mesh | ) |
This metric minimizes the maximal dihedral angle between the faces in the triangulation and on its boundary, and it avoids creating too degenerate triangles; for planar holes it is the same as getCircumscribedMetric
pathlib.Path mrmeshpy.getUserConfigDir | ( | ) |
return path to the folder with user config file(s)
pathlib.Path mrmeshpy.getUserConfigFilePath | ( | ) |
returns path of config file in APPDATA
float mrmeshpy.getValue | ( | OpenVdbFloatGrid | grid, |
Vector3i | p ) |
returns the value at given voxel
CoordinateConverters mrmeshpy.getVectorConverters | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None ) |
\\brief creates simple converters from Vector3f to Vector3i and back in mesh parts area range \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
MeshTriPoint mrmeshpy.getVertexAsMeshTriPoint | ( | MeshTopology | topology, |
Id_EdgeTag | e, | ||
VertId | v ) |
returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible
VertBMap mrmeshpy.getVertexOrdering | ( | FaceBMap | faceMap, |
MeshTopology | topology ) |
compute the order of vertices given the order of faces: vertices near first faces also appear first; \\param faceMap old face id -> new face id
std_vector_Id_VertTag mrmeshpy.getVertexOrdering | ( | MeshTopology | topology, |
VertBitSet | region ) |
returns all vertices from given region ordered in each connected component in breadth-first way
FillHoleMetric mrmeshpy.getVerticalStitchMetric | ( | Mesh | mesh, |
Vector3f | upDir ) |
Forbids connecting vertices from the same hole \\n All new faces should be parallel to given direction
pathlib.Path mrmeshpy.GetWindowsInstallDirectory | ( | ) |
returns the folder where Windows installed, typically "C:\\Windows"
AffineXf3f mrmeshpy.getXfFromOxyPlane | ( | Mesh | mesh, |
std_vector_std_vector_Id_EdgeTag | paths ) |
AffineXf3f mrmeshpy.getXfFromOxyPlane | ( | std_vector_std_vector_Vector3_float | contours | ) |
computes the transformation that maps O into center mass of contours' points OXY into best plane containing the points
Mesh mrmeshpy.gridToMesh | ( | OpenVdbFloatGrid | grid, |
GridToMeshSettings | settings ) |
converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm
converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm; deletes grid in the middle to reduce peak memory consumption
None mrmeshpy.hardSmoothTetrahedrons | ( | Mesh | mesh, |
VertBitSet | region = None ) |
move all region vertices with exactly three neighbor vertices in the center of the neighbors
bool mrmeshpy.hasAnyIsoline | ( | MeshTopology | topology, |
func_float_from_Id_VertTag | vertValues, | ||
FaceBitSet | region = None ) |
quickly returns true if extractIsolines produce not-empty set for the same arguments
bool mrmeshpy.hasAnyIsoline | ( | MeshTopology | topology, |
VertScalars | vertValues, | ||
float | isoValue, | ||
FaceBitSet | region = None ) |
quickly returns true if extractIsolines produce not-empty set for the same arguments
quickly returns true if extractPlaneSections produce not-empty set for the same arguments
bool mrmeshpy.hasAnyXYPlaneSection | ( | MeshPart | mp, |
float | zLevel ) |
quickly returns true if extractXYPlaneSections produce not-empty set for the same arguments
bool mrmeshpy.hasMultipleEdges | ( | MeshTopology | topology | ) |
bool mrmeshpy.hasProhibitedChars | ( | str | line | ) |
returns true if line contains any of OS prohibited chars ('?', '*', '/', '\\', '"', '<', '>')
int mrmeshpy.heapBytes | ( | OpenVdbFloatGrid | grid | ) |
returns the amount of heap memory occupied by grid
int mrmeshpy.heapBytes_Color | ( | std_vector_Color | vec | ) |
returns the amount of memory given vector occupies on heap
int mrmeshpy.heapBytes_float | ( | std_vector_float | vec | ) |
returns the amount of memory given vector occupies on heap
int mrmeshpy.heapBytes_Mesh | ( | Mesh | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
int mrmeshpy.heapBytes_MeshTexture_TextureId | ( | Vector_MeshTexture_TextureId | vec | ) |
int mrmeshpy.heapBytes_Object | ( | Object | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
int mrmeshpy.heapBytes_OpenVdbFloatGrid | ( | OpenVdbFloatGrid | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
int mrmeshpy.heapBytes_PointCloud | ( | PointCloud | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
int mrmeshpy.heapBytes_Polyline3 | ( | Polyline3 | ptr | ) |
returns the amount of memory this smart pointer and its pointed object own together on heap
int mrmeshpy.heapBytes_std_shared_ptr_Object | ( | std_vector_std_shared_ptr_Object | vec | ) |
returns the amount of memory given vector occupies on heap
int mrmeshpy.heapBytes_unsigned_long_long | ( | std_vector_unsigned_long_long | vec | ) |
returns the amount of memory given vector occupies on heap
func_float_from_Id_EdgeTag mrmeshpy.identityMetric | ( | ) |
metric returning 1 for every edge
bool mrmeshpy.improveSampling | ( | PointCloud | cloud, |
VertBitSet | samples, | ||
ImproveSamplingSettings | settings ) |
Finds more representative sampling starting from a given one following k-means method; \\param samples input and output selected sample points from \\param cloud; \\return false if it was terminated by the callback \\ingroup PointCloudGroup
None mrmeshpy.inflate | ( | Mesh | mesh, |
VertBitSet | verts, | ||
InflateSettings | settings ) |
Inflates (in one of two sides) given mesh region, putting given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary; \\param verts must not include all vertices of a mesh connected component
None mrmeshpy.interpolateArcs | ( | std_vector_GCommand | commands, |
ArcInterpolationParams | params, | ||
Axis | axis ) |
interpolates given path with arcs
None mrmeshpy.interpolateLines | ( | std_vector_GCommand | commands, |
LineInterpolationParams | params, | ||
Axis | axis ) |
interpolates several points lying on the same straight line with one move
Vector2f mrmeshpy.intersection | ( | LineSegm2f | segm1, |
LineSegm2f | segm2 ) |
finds an intersection between a segm1 and a segm2 \\return nullopt if they don't intersect (even if they match)
bool mrmeshpy.isClosed | ( | std_vector_Vector3_float | c | ) |
bool mrmeshpy.isConsistentlyOriented | ( | MeshTopology | topology, |
std_vector_EdgePoint | isoline ) |
returns true if left(isoline[i].e) == right(isoline[i+1].e) and valid for all i; all above functions produce consistently oriented lines
bool mrmeshpy.isDegree3Dest | ( | MeshTopology | topology, |
Id_EdgeTag | e ) |
returns true if the destination of given edge has degree 3 and 3 incident triangles
bool mrmeshpy.isEdgeBetweenDoubleTris | ( | MeshTopology | topology, |
Id_EdgeTag | e ) |
returns true if the edge e has both left and right triangular faces and the degree of dest( e ) is 2
bool mrmeshpy.isEdgeLoop | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | edges ) |
returns true if every next edge starts where previous edge ends, and start vertex coincides with finish vertex
bool mrmeshpy.isEdgePath | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | edges ) |
returns true if every next edge starts where previous edge ends
bool mrmeshpy.isHoleBd | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | loop ) |
returns true if given loop is a boundary of one hole in given mesh topology: * every edge in the loop does not have left face, * next/prev edges in the loop are related as follows: next = topology.prev( prev.sym() ) if the function returns true, then any edge from the loop passed to \\ref fillHole will fill the same hole
bool mrmeshpy.isInside | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh part A is inside of closed mesh part B \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
bool mrmeshpy.isInside | ( | Polyline2 | a, |
Polyline2 | b, | ||
AffineXf2f | rigidB2A = None ) |
\\brief checks that arbitrary 2d polyline A is inside of closed 2d polyline B \\param rigidB2A rigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
bool mrmeshpy.isNanFast | ( | float | f | ) |
quickly tests whether given float is not-a-number
bool mrmeshpy.isNonIntersectingInside | ( | Mesh | a, |
FaceId | partFace, | ||
MeshPart | b, | ||
AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh A part (whole part is represented by one face `partFace`) is inside of closed mesh part B The version of `isInside` without collision check; it is user's responsibility to guarantee that the meshes don't collide \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
bool mrmeshpy.isNonIntersectingInside | ( | MeshPart | a, |
MeshPart | b, | ||
AffineXf3f | rigidB2A = None ) |
\\brief checks that arbitrary mesh part A is inside of closed mesh part B The version of `isInside` without collision check; it is user's responsibility to guarantee that the meshes don't collide \\param rigidB2A rigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
bool mrmeshpy.isPickedPointValid | ( | VisualObject | object, |
std_variant_MeshTriPoint_EdgePoint_Id_VertTag_int | point ) |
Checks that the picked point presents in the object's topology
\\brief detect if given point is inside polyline, by counting ray intersections \\param polyline input polyline \\param point input point
bool mrmeshpy.isSupportedFileInSubfolders | ( | os.PathLike | str | bytes | folder | ) |
check if there are any supported files folder and subfolders
bool mrmeshpy.isTIFFFile | ( | os.PathLike | str | bytes | path | ) |
returns true if given file is tiff
Id_EdgeTag mrmeshpy.isVertexRepeatedOnHoleBd | ( | MeshTopology | topology, |
VertId | v ) |
if given vertex is present on the boundary of some hole several times then returns an edge of this hole (without left); returns invalid edge otherwise (not a boundary vertex, or it is present only once on the boundary of each hole it pertains to)
ToolPathResult mrmeshpy.lacingToolPath | ( | MeshPart | mp, |
ToolPathParams | params, | ||
Axis | cutDirection ) |
Slices are built along the axis defined by cutDirection argument (can be Axis::X or Axis::Y)
IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing | ( | MeshTopology | topology, |
FaceId | f ) |
IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing | ( | MeshTopology | topology, |
Id_EdgeTag | edge ) |
to iterate over all edges with same left face as firstEdge (INCLUDING firstEdge) for ( Edge e : leftRing( topology, firstEdge ) ) ...
IteratorRange_RingIterator_NextEdgeSameLeft mrmeshpy.leftRing0 | ( | MeshTopology | topology, |
Id_EdgeTag | edge ) |
to iterate over all edges with same left face as firstEdge (EXCLUDING firstEdge) for ( Edge e : leftRing0( topology, firstEdge ) ) ...
Mesh mrmeshpy.loadASCIIStl | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in textual .STL format
Mesh mrmeshpy.loadASCIIStl | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in textual .STL format
Mesh mrmeshpy.loadBinaryStl | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in binary .STL format
Mesh mrmeshpy.loadBinaryStl | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in binary .STL format; important on Windows: in stream must be open in binary mode
DistanceMap mrmeshpy.loadDistanceMapFromImage | ( | os.PathLike | str | bytes | filename, |
float | threshold = 0.003921568859368563 ) |
load distance map from a grayscale image file threshold - threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
Mesh mrmeshpy.loadDxf | ( | os.PathLike | str | bytes | path, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .DXF format;
Mesh mrmeshpy.loadDxf | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .DXF format;
None mrmeshpy.loadIOExtras | ( | ) |
Polyline3 mrmeshpy.loadLines | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
detects the format from file extension and loads polyline from it
Polyline3 mrmeshpy.loadLines | ( | typing.Any | in_, |
str | extension, | ||
func_bool_from_float | callback = '{}' ) |
extension in `*.ext` format
Mesh mrmeshpy.loadMesh | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in the format detected from file extension
Mesh mrmeshpy.loadMesh | ( | typing.Any | in_, |
str | extension, | ||
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in the format detected from given extension-string (`*.ext`); important on Windows: in stream must be open in binary mode
None mrmeshpy.loadMeshDll | ( | ) |
Mesh mrmeshpy.loadMrmesh | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in internal MeshLib format
Mesh mrmeshpy.loadMrmesh | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in internal MeshLib format; important on Windows: in stream must be open in binary mode
Mesh mrmeshpy.loadObj | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .OBJ format
Mesh mrmeshpy.loadObj | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .OBJ format; important on Windows: in stream must be open in binary mode
LoadedObjects mrmeshpy.loadObjectFromFile | ( | os.PathLike | str | bytes | filename, |
func_bool_from_float | callback = '{}' ) |
\\brief load all objects (or any type: mesh, lines, points, voxels or scene) from file \\param callback - callback function to set progress (for progress bar)
Mesh mrmeshpy.loadOff | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .OFF format
Mesh mrmeshpy.loadOff | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .OFF format
Mesh mrmeshpy.loadPly | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in .PLY format;
Mesh mrmeshpy.loadPly | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in .PLY format; important on Windows: in stream must be open in binary mode
PointCloud mrmeshpy.loadPoints | ( | os.PathLike | str | bytes | file, |
PointsLoadSettings | settings = '{}' ) |
detects the format from file extension and loads points from it
PointCloud mrmeshpy.loadPoints | ( | typing.Any | in_, |
str | extension, | ||
PointsLoadSettings | settings = '{}' ) |
extension in `*.ext` format
LoadedObjectT mrmeshpy.loadSceneFromAnySupportedFormat | ( | os.PathLike | str | bytes | path, |
func_bool_from_float | callback = '{}' ) |
tries to load scene from every format listed in SceneFormatFilters
Object mrmeshpy.loadSceneObject | ( | os.PathLike | str | bytes | path, |
func_bool_from_float | callback = '{}' ) |
Detects the format from file extension and loads scene object from it.
Mesh mrmeshpy.loadStl | ( | os.PathLike | str | bytes | file, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from file in any .STL format: both binary and ASCII
Mesh mrmeshpy.loadStl | ( | typing.Any | in_, |
MeshLoadSettings | settings = '{}' ) |
loads mesh from stream in any .STL format: both binary and ASCII; important on Windows: in stream must be open in binary mode
std_vector_VoxelsVolumeMinMax_std_shared_ptr_OpenVdbFloatGrid mrmeshpy.loadVoxels | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | cb = '{}' ) |
Detects the format from file extension and loads voxels from it
VdbVolume mrmeshpy.loadVoxelsGav | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | cb = '{}' ) |
Load voxel from Gav-file with micro CT reconstruction
VdbVolume mrmeshpy.loadVoxelsGav | ( | typing.Any | in_, |
func_bool_from_float | cb = '{}' ) |
Load voxel from Gav-stream with micro CT reconstruction
VdbVolume mrmeshpy.loadVoxelsRaw | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | cb = '{}' ) |
Load raw voxels file, parsing parameters from name
VdbVolume mrmeshpy.loadVoxelsRaw | ( | os.PathLike | str | bytes | file, |
VoxelsLoad.RawParameters | params, | ||
func_bool_from_float | cb = '{}' ) |
Load raw voxels from file with provided parameters
VdbVolume mrmeshpy.loadVoxelsRaw | ( | typing.Any | in_, |
VoxelsLoad.RawParameters | params, | ||
func_bool_from_float | cb = '{}' ) |
Load raw voxels from stream with provided parameters; important on Windows: in stream must be open in binary mode
FaceBitSet mrmeshpy.localFindSelfIntersections | ( | Mesh | mesh, |
func_bool_from_float | cb = '{}' ) |
Find all self-intersections faces component-wise
None mrmeshpy.localFixSelfIntersections | ( | Mesh | mesh, |
SelfIntersections.Settings | settings ) |
Finds and fixes self-intersections per component:
Mesh mrmeshpy.makeArrow | ( | Vector3f | base, |
Vector3f | vert, | ||
float | thickness = 0.05000000074505806, | ||
float | coneRadius = 0.10000000149011612, | ||
float | coneSize = 0.20000000298023224, | ||
int | qual = 32 ) |
creates hollow arrow from the 'base' to the 'vert'. Number of points on the circle 'qual' is between 3 and 256
Mesh mrmeshpy.makeBasisAxes | ( | float | size = 1.0, |
float | thickness = 0.05000000074505806, | ||
float | coneRadius = 0.10000000149011612, | ||
float | coneSize = 0.20000000298023224, | ||
int | qual = 32 ) |
creates the mesh with 3 axis arrows
MakeBridgeResult mrmeshpy.makeBridge | ( | MeshTopology | topology, |
Id_EdgeTag | a, | ||
Id_EdgeTag | b, | ||
FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of two triangles in general or of one triangle if a and b are neighboring edges on the boundary; \\return MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear
Id_EdgeTag mrmeshpy.makeBridgeEdge | ( | MeshTopology | topology, |
Id_EdgeTag | a, | ||
Id_EdgeTag | b ) |
creates a new bridge edge between origins of two boundary edges a and b (both having no valid left face); \\return invalid id if bridge cannot be created because otherwise multiple edges appear
Mesh mrmeshpy.makeCone | ( | float | radius0 = 0.10000000149011612, |
float | length = 1.0, | ||
int | resolution = 32 ) |
Makes cone mesh by calling makeCylinderAdvanced with the top radius 0.
Mesh mrmeshpy.makeConvexHull | ( | PointCloud | in_ | ) |
Mesh mrmeshpy.makeConvexHull | ( | VertCoords | points, |
VertBitSet | validPoints ) |
computes the mesh of convex hull from given input points
Mesh mrmeshpy.makeCube | ( | Vector3f | size = 'Vector3f::diagonal(1.F)', |
Vector3f | base = 'Vector3f::diagonal(-0.5F)' ) |
Base is "lower" corner of the cube coordinates
Mesh mrmeshpy.makeCylinder | ( | float | radius = 0.10000000149011612, |
float | length = 1.0, | ||
int | resolution = 16 ) |
Draws cylinder with radius 'radius', height - 'length', its base have 'resolution' sides
Mesh mrmeshpy.makeCylinderAdvanced | ( | float | radius0 = 0.10000000149011612, |
float | radius1 = 0.10000000149011612, | ||
float | start_angle = 0.0, | ||
float | arc_size = 6.2831854820251465, | ||
float | length = 1.0, | ||
int | resolution = 16 ) |
Id_EdgeTag mrmeshpy.makeDegenerateBandAroundHole | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
FaceBitSet | outNewFaces = None ) |
creates a band of degenerate triangles around given hole; \\return the edge of new hole opposite to input edge (a)
None mrmeshpy.makeDegenerateBandAroundRegion | ( | Mesh | mesh, |
FaceBitSet | region, | ||
MakeDegenerateBandAroundRegionParams | params = '{}' ) |
\\brief Create a band of degenerate faces along the border of the specified region and the rest of the mesh \\details The function is useful for extruding the region without changing the existing faces and creating holes @param mesh - the target mesh @param region - the region required to be separated by a band of degenerate faces @param params - optional output parameters
int mrmeshpy.makeDeloneEdgeFlips | ( | Mesh | mesh, |
DeloneSettings | settings = '{}', | ||
int | numIters = 1, | ||
func_bool_from_float | progressCallback = '{}' ) |
improves mesh triangulation by performing flipping of edges to satisfy Delone local property, consider every edge at most numIters times, and allow surface deviation at most on given value during every individual flip, \\return the number of flips done \\param numIters Maximal iteration count \\param progressCallback Callback to report algorithm progress and cancel it by user request
None mrmeshpy.makeDeloneOriginRing | ( | Mesh | mesh, |
Id_EdgeTag | e, | ||
DeloneSettings | settings = '{}' ) |
improves mesh triangulation in a ring of vertices with common origin and represented by edge e
std_vector_Vector3_float mrmeshpy.makeFreeFormOriginGrid | ( | Box3f | box, |
Vector3i | resolution ) |
Returns positions of grid points in given box with given resolution
divides given mesh into hierarchy of mesh objects: the deepest level of the hierarchy has all details from the original mesh; top levels have progressively less number of objects and less details in each; the number of faces in any object on any level is about the same.
Mesh mrmeshpy.makeMovementBuildBody | ( | std_vector_std_vector_Vector3_float | body, |
std_vector_std_vector_Vector3_float | trajectory, | ||
MovementBuildBodyParams | params = '{}' ) |
makes mesh by moving `body` along `trajectory` if allowRotation rotate it in corners
VertCoords mrmeshpy.makeNormals | ( | PointCloud | pointCloud, |
int | avgNeighborhoodSize = 48 ) |
\\brief Makes consistent normals for valid points of given point cloud \\param avgNeighborhoodSize avg num of neighbors of each individual point \\ingroup PointCloudGroup [[deprecated( "use makeOrientedNormals(...) instead" )]]
ObjectDistanceMap mrmeshpy.makeObjectDistanceMapFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads distance map from given file in new object
LoadedObjectT mrmeshpy.makeObjectFromMeshFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | cb = '{}', | ||
bool | returnOnlyMesh = False ) |
loads data from given file and makes either ObjectMesh or ObjectPoints (if the file has points but not faces)
LoadedObjects mrmeshpy.makeObjectFromVoxelsFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
ObjectGcode mrmeshpy.makeObjectGcodeFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads gcode from given file in new object
ObjectLines mrmeshpy.makeObjectLinesFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads lines from given file in new object
LoadedObjectT_ObjectMesh mrmeshpy.makeObjectMeshFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | cb = '{}' ) |
loads mesh from given file in new object
ObjectPoints mrmeshpy.makeObjectPointsFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads points from given file in new object
std_vector_std_shared_ptr_ObjectVoxels mrmeshpy.makeObjectVoxelsFromFile | ( | os.PathLike | str | bytes | file, |
func_bool_from_float | callback = '{}' ) |
loads voxels from given file in new object
Mesh mrmeshpy.makeOpenCone | ( | float | radius = 1, |
float | zApex = 0, | ||
float | zBase = 1, | ||
int | numCircleSegments = 16 ) |
A hollow cone.
Mesh mrmeshpy.makeOpenCylinder | ( | float | radius = 1, |
float | z1 = -1, | ||
float | z2 = 1, | ||
int | numCircleSegments = 16 ) |
A hollow cylinder.
VertCoords mrmeshpy.makeOrientedNormals | ( | PointCloud | pointCloud, |
AllLocalTriangulations | triangs, | ||
func_bool_from_float | progress = '{}' ) |
\\brief Makes normals for valid points of given point cloud; directions of close points are selected to be consistent; \\triangs triangulation neighbours of each point, which are oriented during the call as well \\return nullopt if progress returned false \\ingroup PointCloudGroup
VertCoords mrmeshpy.makeOrientedNormals | ( | PointCloud | pointCloud, |
float | radius, | ||
func_bool_from_float | progress = '{}' ) |
\\brief Makes normals for valid points of given point cloud; directions of close points are selected to be consistent; \\param radius of neighborhood to consider \\return nullopt if progress returned false \\ingroup PointCloudGroup
Mesh mrmeshpy.makeOuterHalfTorus | ( | float | primaryRadius = 1.0, |
float | secondaryRadius = 0.10000000149011612, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
creates torus without inner half faces main application - testing fillHole and Stitch
Mesh mrmeshpy.makePlane | ( | ) |
Makes square plane 1x1 size with center at (0,0,0) and (0,0,1) normal
Mesh mrmeshpy.makePrism | ( | float | baseLength, |
float | leftAngle, | ||
float | rightAngle, | ||
float | height = 1.0 ) |
Creates a triangular prism. One edge of its base lies on 'x' axis and has 'baseLength' in length. 'leftAngle' and 'rightAngle' specify two adjacent angles axis of a prism is parallel to 'z' axis
MakeBridgeResult mrmeshpy.makeQuadBridge | ( | MeshTopology | topology, |
Id_EdgeTag | a, | ||
Id_EdgeTag | b, | ||
FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of one quadrangle in general (beware that it cannot be rendered) or of one triangle if a and b are neighboring edges on the boundary; \\return false if bridge cannot be created because otherwise multiple edges appear
Mesh mrmeshpy.makeRegularGridMesh | ( | int | width, |
int | height, | ||
func_bool_from_unsigned_long_long_unsigned_long_long | validator, | ||
func_Vector3_float_from_unsigned_long_long_unsigned_long_long | positioner, | ||
func_bool_from_unsigned_long_long_unsigned_long_long_unsigned_long_long_unsigned_long_long_unsigned_long_long_unsigned_long_long | faceValidator = '{}', | ||
func_bool_from_float | cb = '{}' ) |
Creates regular mesh with points in valid grid lattice
Mesh mrmeshpy.makeRegularGridMesh | ( | VertCoords | pc, |
func_bool_from_float | cb = '{}' ) |
Creates regular mesh from monotone (connects point with closed x, y neighbors) points
AffineXf3d mrmeshpy.makeRigidXf | ( | MeshPart | mp, |
AffineXf3d | meshXf ) |
given a mesh part and its arbitrary transformation, computes and returns the rigid transformation that best approximates meshXf \\ingroup MathGroup
AffineXf3f mrmeshpy.makeRigidXf | ( | MeshPart | mp, |
AffineXf3f | meshXf ) |
None mrmeshpy.makeSignedByWindingNumber | ( | OpenVdbFloatGrid | grid, |
Vector3f | voxelSize, | ||
Mesh | refMesh, | ||
MakeSignedByWindingNumberSettings | settings ) |
set signs for unsigned distance field grid using generalized winding number computed at voxel grid point from refMesh
MakeBridgeResult mrmeshpy.makeSmoothBridge | ( | Mesh | mesh, |
Id_EdgeTag | a, | ||
Id_EdgeTag | b, | ||
float | samplingStep, | ||
FaceBitSet | outNewFaces = None ) |
creates a bridge between two boundary edges a and b (both having no valid left face); bridge consists of strip of quadrangles (each consisting of two triangles) in general or of some triangles if a and b are neighboring edges on the boundary; the bridge is made as smooth as possible with small angles in between its links and on the boundary with existed triangles; \\param samplingStep boundaries of the bridge will be subdivided until the distance between neighbor points becomes less than this distance \\return MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear
Mesh mrmeshpy.makeSphere | ( | SphereParams | params | ) |
creates a mesh of sphere with irregular triangulation
MarkedContour3f mrmeshpy.makeSpline | ( | MarkedContour3f | in_, |
float | markStability = 1 ) |
\\param in input marked contour \\param markStability a positive value, the more the value the closer marked points will be to their original positions \\return contour with same number of points and same marked, where each return point tries to be on a smooth curve
MarkedContour3f mrmeshpy.makeSpline | ( | std_vector_Vector3_float | controlPoints, |
SplineSettings | settings ) |
\\param controlPoints ordered point the spline to interpolate \\return spline contour with same or more points than initially given, marks field highlights the points corresponding to input ones
Mesh mrmeshpy.makeTorus | ( | float | primaryRadius = 1.0, |
float | secondaryRadius = 0.10000000149011612, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
Z is symmetry axis of this torus points - optional out points of main circle
Mesh mrmeshpy.makeTorusWithComponents | ( | float | primaryRadius = 1.0, |
float | secondaryRadius = 0.10000000149011612, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
creates torus with empty sectors main application - testing Components
Mesh mrmeshpy.makeTorusWithSelfIntersections | ( | float | primaryRadius = 1.0, |
float | secondaryRadius = 0.10000000149011612, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
creates torus with empty sectors main application - testing Components
Mesh mrmeshpy.makeTorusWithSpikes | ( | float | primaryRadius = 1.0, |
float | secondaryRadiusInner = 0.10000000149011612, | ||
float | secondaryRadiusOuter = 0.5, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
creates torus with some handed-up points main application - testing fixSpikes and Relax
Mesh mrmeshpy.makeTorusWithUndercut | ( | float | primaryRadius = 1.0, |
float | secondaryRadiusInner = 0.10000000149011612, | ||
float | secondaryRadiusOuter = 0.20000000298023224, | ||
int | primaryResolution = 16, | ||
int | secondaryResolution = 16, | ||
std_vector_Vector3_float | points = None ) |
creates torus with inner protruding half as undercut main application - testing fixUndercuts
PointCloud mrmeshpy.makeUniformSampledCloud | ( | PointCloud | pointCloud, |
UniformSamplingSettings | settings ) |
Composes new point cloud consisting of uniform samples of original point cloud; returns std::nullopt if it was terminated by the callback \\ingroup PointCloudGroup
VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
AllLocalTriangulations | triangs, | ||
func_bool_from_float | progress = '{}', | ||
OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by averaging neighbor triangle normals weighted by triangle's angle \\triangs triangulation neighbours of each point \\param orient OrientNormals::Smart here means orientation from normals of neigbour triangles \\return nullopt if progress returned false \\ingroup PointCloudGroup
VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
Buffer_VertId | closeVerts, | ||
int | numNei, | ||
func_bool_from_float | progress = '{}', | ||
OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours \\param closeVerts a buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei) \\param orient OrientNormals::Smart here means orientation from best fit plane \\return nullopt if progress returned false \\ingroup PointCloudGroup
VertCoords mrmeshpy.makeUnorientedNormals | ( | PointCloud | pointCloud, |
float | radius, | ||
func_bool_from_float | progress = '{}', | ||
OrientNormals | orient = 'OrientNormals::Smart' ) |
\\brief Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours \\param radius of neighborhood to consider \\param orient OrientNormals::Smart here means orientation from best fit plane \\return nullopt if progress returned false \\ingroup PointCloudGroup
Mesh mrmeshpy.makeUVSphere | ( | float | radius = 1.0, |
int | horisontalResolution = 16, | ||
int | verticalResolution = 16 ) |
creates a mesh of sphere with regular triangulation (parallels and meridians)
Id_EdgeTag mrmeshpy.mapEdge | ( | phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag | map, |
Id_EdgeTag | src ) |
given input edge (src), converts its id using given map
UndirectedEdgeId mrmeshpy.mapEdge | ( | UndirectedEdgeBMap | map, |
UndirectedEdgeId | src ) |
given input edge (src), converts its id using given map
Id_EdgeTag mrmeshpy.mapEdge | ( | WholeEdgeMap | map, |
Id_EdgeTag | src ) |
given input edge (src), converts its id using given map
UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag | map, |
UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | UndirectedEdgeBMap | map, |
UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
UndirectedEdgeBitSet mrmeshpy.mapEdges | ( | WholeEdgeMap | map, |
UndirectedEdgeBitSet | src ) |
given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
Mesh mrmeshpy.marchingCubes | ( | FunctionVolume | volume, |
MarchingCubesParams | params = '{}' ) |
makes Mesh from FunctionVolume with given settings using Marching Cubes algorithm
Mesh mrmeshpy.marchingCubes | ( | SimpleVolume | volume, |
MarchingCubesParams | params = '{}' ) |
makes Mesh from SimpleVolume with given settings using Marching Cubes algorithm
Mesh mrmeshpy.marchingCubes | ( | SimpleVolumeMinMax | volume, |
MarchingCubesParams | params = '{}' ) |
makes Mesh from SimpleVolumeMinMax with given settings using Marching Cubes algorithm
Mesh mrmeshpy.marchingCubes | ( | VdbVolume | volume, |
MarchingCubesParams | params = '{}' ) |
makes Mesh from VdbVolume with given settings using Marching Cubes algorithm
TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | FunctionVolume | volume, |
MarchingCubesParams | params = '{}' ) |
TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | SimpleVolume | volume, |
MarchingCubesParams | params = '{}' ) |
TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | SimpleVolumeMinMax | volume, |
MarchingCubesParams | params = '{}' ) |
TriMesh mrmeshpy.marchingCubesAsTriMesh | ( | VdbVolume | volume, |
MarchingCubesParams | params = '{}' ) |
MarkedContour3f mrmeshpy.markedContour | ( | std_vector_Vector3_float | in_ | ) |
\\return marked contour with all points from (in) marked
MarkedContour3f mrmeshpy.markedFirstLast | ( | std_vector_Vector3_float | in_ | ) |
\\return marked contour with only first and last points from (in) marked
Mesh mrmeshpy.mcOffsetMesh | ( | MeshPart | mp, |
float | offset, | ||
OffsetParameters | params = '{}', | ||
Vector_Id_VoxelTag_FaceId | outMap = None ) |
Offsets mesh by converting it to distance field in voxels (using OpenVDB library if SignDetectionMode::OpenVDB or our implementation otherwise) and back using standard Marching Cubes, as opposed to Dual Marching Cubes in offsetMesh(...)
Mesh mrmeshpy.mcShellMeshRegion | ( | Mesh | mesh, |
FaceBitSet | region, | ||
float | offset, | ||
BaseShellParameters | params, | ||
Vector_Id_VoxelTag_FaceId | outMap = None ) |
Constructs a shell around selected mesh region with the properties that every point on the shall must 1. be located not further than given distance from selected mesh part, 2. be located not closer to not-selected mesh part than to selected mesh part.
ObjectLines mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectLines | objsLines | ) |
constructs new ObjectLines containing the union of valid data from all input objects
ObjectMesh mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectMesh | objsMesh | ) |
constructs new ObjectMesh containing the union of valid data from all input objects
ObjectPoints mrmeshpy.merge | ( | std_vector_std_shared_ptr_ObjectPoints | objsPoints | ) |
constructs new ObjectPoints containing the union of valid points from all input objects
Mesh mrmeshpy.mergeMeshes | ( | std_vector_std_shared_ptr_Mesh | meshes | ) |
Merge a list of meshes to one mesh.
None mrmeshpy.meshDenoiseViaNormals | ( | Mesh | mesh, |
DenoiseViaNormalsSettings | settings = '{}' ) |
Reduces noise in given mesh, see the article "Mesh Denoising via a Novel Mumford-Shah Framework"
Mesh mrmeshpy.meshFromVoxelsMask | ( | VdbVolume | volume, |
VoxelBitSet | mask ) |
\\brief Creates mesh from voxels mask \\param mask in space of whole volume density inside mask is expected to be higher then outside
func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitAttribute | ( | Mesh | mesh, |
MeshAttributesToUpdate | params ) |
auto uvCoords = obj_->getUVCoords(); auto texturePerFace = obj_->getTexturePerFace(); MeshAttributesToUpdate meshParams; if ( !uvCoords.empty() ) meshParams.uvCoords = &uvCoords; if ( !texturePerFace.empty() ) meshParams.texturePerFace = &texturePerFace; subs.onEdgeSplit = meshOnEdgeSplitAttribute( *obj_->varMesh(), meshParams ); subdivideMesh( *obj_->varMesh(), subs );
func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitFaceAttribute | ( | Mesh | mesh, |
MeshAttributesToUpdate | params ) |
func_void_from_Id_EdgeTag_Id_EdgeTag mrmeshpy.meshOnEdgeSplitVertAttribute | ( | Mesh | mesh, |
MeshAttributesToUpdate | params ) |
func_bool_from_Id_EdgeTag_Vector3_float mrmeshpy.meshPreCollapseVertAttribute | ( | Mesh | mesh, |
MeshAttributesToUpdate | params ) |
Please use this callback when you decimate a mesh with associated data with each vertex recalculate texture coordinates and mesh vertex colors for vertices moved during decimation usage example MeshAttributesToUpdate meshParams; auto uvCoords = obj->getUVCoords(); auto colorMap = obj->getVertsColorMap(); if ( needUpdateUV ) meshParams.uvCoords = &uvCoords; if ( needUpdateColorMap ) meshParams.colorMap = &colorMap; auto preCollapse = meshPreCollapseVertAttribute( mesh, meshParams ); decimateMesh( mesh, DecimateSettings{ .preCollapse = preCollapse } );
SimpleVolumeMinMax mrmeshpy.meshRegionToIndicatorVolume | ( | Mesh | mesh, |
FaceBitSet | region, | ||
float | offset, | ||
DistanceVolumeParams | params ) |
returns a volume filled with the values: v < 0: this point is within offset distance to region-part of mesh and it is closer to region-part than to not-region-part
std_array_VoxelsVolumeMinMax_std_vector_float_3 mrmeshpy.meshToDirectionVolume | ( | MeshToDirectionVolumeParams | params | ) |
Converts mesh into 4d voxels, so that each cell in 3d space holds the direction from the closest point on mesh to the cell position. Resulting volume is encoded by 3 separate 3d volumes, corresponding to `x`, `y` and `z` components of vectors respectively. \\param params Expected to have valid (not null) projector, with invoked method \\ref IPointsToMeshProjector::updateMeshData
OpenVdbFloatGrid mrmeshpy.meshToDistanceField | ( | MeshPart | mp, |
AffineXf3f | xf, | ||
Vector3f | voxelSize, | ||
float | surfaceOffset = 3, | ||
func_bool_from_float | cb = '{}' ) |
does not require closed surface, resulting grid cannot be used for boolean operations, surfaceOffset - the number of voxels around surface to calculate distance in (should be positive) returns null if was canceled by progress callback
FunctionVolume mrmeshpy.meshToDistanceFunctionVolume | ( | MeshPart | mp, |
MeshToDistanceVolumeParams | params = '{}' ) |
makes FunctionVolume representing (signed or unsigned) distances from Mesh with given settings
VdbVolume mrmeshpy.meshToDistanceVdbVolume | ( | MeshPart | mp, |
MeshToVolumeParams | params = '{}' ) |
converts mesh (or its part) into a volume filled with signed or unsigned distances to mesh using OpenVDB library; for signed distances the mesh must be closed; *params.outXf is untouched
SimpleVolumeMinMax mrmeshpy.meshToDistanceVolume | ( | MeshPart | mp, |
MeshToDistanceVolumeParams | params = '{}' ) |
makes SimpleVolume filled with (signed or unsigned) distances from Mesh with given settings
OpenVdbFloatGrid mrmeshpy.meshToLevelSet | ( | MeshPart | mp, |
AffineXf3f | xf, | ||
Vector3f | voxelSize, | ||
float | surfaceOffset = 3, | ||
func_bool_from_float | cb = '{}' ) |
closed surface is required surfaceOffset - number voxels around surface to calculate distance in (should be positive) returns null if was canceled by progress callback
PointCloud mrmeshpy.meshToPointCloud | ( | Mesh | mesh, |
bool | saveNormals = True, | ||
VertBitSet | verts = None ) |
Mesh to PointCloud \\ingroup MeshAlgorithmGroup
VdbVolume mrmeshpy.meshToVolume | ( | MeshPart | mp, |
MeshToVolumeParams | params = '{}' ) |
converts mesh (or its part) into a volume filled with signed or unsigned distances to mesh using OpenVDB library; for signed distances the mesh must be closed; prior to conversion, world space is shifted to ensure that the bounding box of offset mesh is in positive quarter-space, and the shift is written in *params.outXf
VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
AffineXf3f | meshXf, | ||
FunctionVolume | volume, | ||
AffineXf3f | volumeXf, | ||
MoveMeshToVoxelMaxDerivSettings | settings, | ||
func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. \\ingroup SubvoxelMeshCorrection @return Vertices that were moved by the algorithm
VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
AffineXf3f | meshXf, | ||
SimpleVolumeMinMax | volume, | ||
AffineXf3f | volumeXf, | ||
MoveMeshToVoxelMaxDerivSettings | settings, | ||
func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. \\ingroup SubvoxelMeshCorrection @return Vertices that were moved by the algorithm
VertBitSet mrmeshpy.moveMeshToVoxelMaxDeriv | ( | Mesh | mesh, |
AffineXf3f | meshXf, | ||
VdbVolume | volume, | ||
AffineXf3f | volumeXf, | ||
MoveMeshToVoxelMaxDerivSettings | settings, | ||
func_bool_from_float | callback = '{}' ) |
Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels. \\ingroup SubvoxelMeshCorrection @return Vertices that were moved by the algorithm
std_vector_ObjVertId mrmeshpy.multiModelGridSampling | ( | Vector_ModelPointsData_ObjId | models, |
float | voxelSize, | ||
func_bool_from_float | cb = '{}' ) |
performs sampling of several models respecting their world transformations subdivides models bounding box on voxels of approximately given size and returns at most one point per voxel; returns std::nullopt if it was terminated by the callback
None mrmeshpy.multiRayMeshIntersect | ( | MeshPart | meshPart, |
std_vector_Vector3_float | origins, | ||
std_vector_Vector3_float | dirs, | ||
MultiRayMeshIntersectResult | result, | ||
float | rayStart = 0.0, | ||
float | rayEnd = 3.4028234663852886e+38, | ||
bool | closestIntersect = True, | ||
func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds intersections between a mesh and multiple rays in parallel (in float-precision). \\p rayStart and \\p rayEnd define the interval on all rays to detect an intersection. \\p vadidFaces if given then all faces for which false is returned will be skipped
bool mrmeshpy.objectHasSelectableChildren | ( | Object | object | ) |
\\}
None mrmeshpy.objectSave | ( | Object | object, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
save a scene object to a given file if the file format is scene-capable, saves all the object's entities otherwise, saves only merged entities of the corresponding type (mesh, polyline, point cloud, etc.)
std_vector_std_vector_Vector2_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector2_float | contours, |
float | offset, | ||
OffsetContoursParams | params = '{}' ) |
offsets 2d contours in plane
std_vector_std_vector_Vector2_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector2_float | contours, |
func_float_from_int_int | offset, | ||
OffsetContoursParams | params = '{}' ) |
offsets 2d contours in plane
std_vector_std_vector_Vector3_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector3_float | contours, |
float | offset, | ||
OffsetContoursParams | params = '{}', | ||
OffsetContoursRestoreZParams | zParmas = '{}' ) |
offsets 3d contours in XY plane
std_vector_std_vector_Vector3_float mrmeshpy.offsetContours | ( | std_vector_std_vector_Vector3_float | contours, |
func_float_from_int_int | offset, | ||
OffsetContoursParams | params = '{}', | ||
OffsetContoursRestoreZParams | zParmas = '{}' ) |
offsets 3d contours in XY plane
Mesh mrmeshpy.offsetMesh | ( | MeshPart | mp, |
float | offset, | ||
OffsetParameters | params = '{}' ) |
Offsets mesh by converting it to distance field in voxels using OpenVDB library, signDetectionMode = Unsigned(from OpenVDB) | OpenVDB | HoleWindingRule, and then converts back using OpenVDB library (dual marching cubes), so result mesh is always closed
Mesh mrmeshpy.offsetOneDirection | ( | MeshPart | mp, |
float | offset, | ||
GeneralOffsetParameters | params = '{}' ) |
offsets given MeshPart in one direction only (positive or negative) if your input mesh is open then please specify params.signDetectionMode = SignDetectionMode::Unsigned if your input mesh is closed this function is equivalent to `generalOffsetMesh`, but in SignDetectionMode::Unsigned mode it will only keep one side (just like for open mesh) unlike `thickenMesh` this functions does not keep original mesh in result
Mesh mrmeshpy.offsetPolyline | ( | Polyline3 | polyline, |
float | offset, | ||
OffsetParameters | params = '{}' ) |
Offsets polyline by converting it to voxels and building iso-surface do offset in all directions so result mesh is always closed params.signDetectionMode is ignored (always assumed SignDetectionMode::Unsigned)
std_vector_std_vector_Vector3_float mrmeshpy.offsetSurfaceLine | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
float | offset ) |
<summary> Returns contours in \\p mesh space that are offset from \\p surfaceLine on \\p offset amount in all directions </summary> <param name="mesh">mesh to perform offset on</param> <param name="surfaceLine">surface line to perofrm offset from</param> <param name="offset">amount of offset, note that absolute value is used</param> <returns>resulting offset contours or error if something goes wrong</returns>
std_vector_std_vector_Vector3_float mrmeshpy.offsetSurfaceLine | ( | Mesh | mesh, |
std_vector_MeshTriPoint | surfaceLine, | ||
func_float_from_int | offsetAtPoint ) |
<summary> Returns contours in \\p mesh space that are offset from \\p surfaceLine on \\p offsetAtPoint amount in all directions </summary> <param name="mesh">mesh to perform offset on</param> <param name="surfaceLine">surface line to perofrm offset from</param> <param name="offsetAtPoint">function that can return different amount of offset in different point (argument is index of point in \\p surfaceLine), note that absolute value is used</param> <returns>resulting offset contours or error if something goes wrong</returns>
bool mrmeshpy.OpenDocument | ( | os.PathLike | str | bytes | path | ) |
Opens given file (or directory) in associated application
None mrmeshpy.OpenLink | ( | str | url | ) |
Opens given link in default browser
bool mrmeshpy.operator | ( | VertDistance | a, |
VertDistance | b ) |
smaller distance to be the first
std_vector_std_vector_VariableEdgeTri mrmeshpy.orderIntersectionContours | ( | MeshTopology | topologyA, |
MeshTopology | topologyB, | ||
PreciseCollisionResult | intersections ) |
Combines individual intersections into ordered contours with the properties: a. left of contours on mesh A is inside of mesh B, b. right of contours on mesh B is inside of mesh A, c. each intersected edge has origin inside meshes intersection and destination outside of it
IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing | ( | MeshTopology | topology, |
Id_EdgeTag | edge ) |
to iterate over all edges with same origin vertex as firstEdge (INCLUDING firstEdge) for ( Edge e : orgRing( topology, firstEdge ) ) ...
IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing | ( | MeshTopology | topology, |
VertId | v ) |
IteratorRange_RingIterator_NextEdgeSameOrigin mrmeshpy.orgRing0 | ( | MeshTopology | topology, |
Id_EdgeTag | edge ) |
to iterate over all edges with same origin vertex as firstEdge (EXCLUDING firstEdge) for ( Edge e : orgRing0( topology, firstEdge ) ) ...
bool mrmeshpy.orient3d | ( | PreciseVertCoords | vs | ) |
bool mrmeshpy.orient3d | ( | std_array_PreciseVertCoords_4 | vs | ) |
first sorts the indices in ascending order, then calls the predicate for sorted points
returns true if the plane with orientated triangle ABC has 0 point at the left; uses simulation-of-simplicity to avoid "0 is exactly on plane"
returns true if the plane with orientated triangle ABC has D point at the left; uses simulation-of-simplicity to avoid "D is exactly on plane"
None mrmeshpy.orientLocalTriangulations | ( | AllLocalTriangulations | triangs, |
VertCoords | coords, | ||
VertBitSet | region, | ||
func_Vector3_float_from_Id_VertTag | targetDir ) |
None mrmeshpy.orientLocalTriangulations | ( | AllLocalTriangulations | triangs, |
VertCoords | coords, | ||
VertBitSet | region, | ||
VertCoords | targetDir ) |
orient neighbors around each point in \\param region so they will be in clockwise order if look from the tip of target direction
bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
VertCoords | normals, | ||
AllLocalTriangulations | triangs, | ||
func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param radius of neighborhood to consider \\return false if progress returned false Unlike simple orientNormals this method constructs local triangulations around each point (with most neighbours within given radius and all neighbours within 2*radius) and considers all triangulation neighbors and not other points from the ball around each point. \\ingroup PointCloudGroup
bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
VertCoords | normals, | ||
Buffer_VertId | closeVerts, | ||
int | numNei, | ||
func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param closeVerts a buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei) \\return false if progress returned false \\ingroup PointCloudGroup
bool mrmeshpy.orientNormals | ( | PointCloud | pointCloud, |
VertCoords | normals, | ||
float | radius, | ||
func_bool_from_float | progress = '{}' ) |
\\brief Select orientation of given normals to make directions of close points consistent; \\param radius of neighborhood to consider \\return false if progress returned false \\ingroup PointCloudGroup
ObjectPoints mrmeshpy.pack | ( | ObjectPoints | pts, |
Reorder | reorder, | ||
VertBitSet | newValidVerts = None, | ||
func_bool_from_float | cb = '{}' ) |
constructs new ObjectPoints containing the packed version of input points, \\param newValidVerts if given, then use them instead of valid points from pts \\return nullptr if the operation was cancelled
None mrmeshpy.parseFirstNum | ( | str | str, |
int_output | num ) |
reads the first integer number in the line
None mrmeshpy.parsePolygon | ( | str | str, |
VertId | vertId, | ||
int_output | numPoints ) |
reads the polygon points and optional number of polygon points example N vertex0 vertex1 ... vertexN
Mesh mrmeshpy.partialOffsetMesh | ( | MeshPart | mp, |
float | offset, | ||
GeneralOffsetParameters | params = '{}' ) |
Offsets mesh part by converting it to voxels and back and unite it with original mesh (via boolean) note: only OffsetParameters.signDetectionMode = SignDetectionMode::Unsigned will work in this function
pathlib Path mrmeshpy.pathFromUtf8 | ( | str | s | ) |
Vector3f mrmeshpy.pickedPointToVector3 | ( | VisualObject | object, |
std_variant_MeshTriPoint_EdgePoint_Id_VertTag_int | point ) |
Converts pickedPoint coordinates depending on the object type into a 3D Vector3
std_vector_std_vector_Vector2_float mrmeshpy.planeSectionsToContours2f | ( | Mesh | mesh, |
std_vector_std_vector_EdgePoint | sections, | ||
AffineXf3f | meshToPlane ) |
std_vector_Vector2_float mrmeshpy.planeSectionToContour2f | ( | Mesh | mesh, |
std_vector_EdgePoint | section, | ||
AffineXf3f | meshToPlane ) |
converts PlaneSections in 2D contours by computing coordinate of each point, applying given xf to it, and retaining only x and y
VertBitSet mrmeshpy.pointGridSampling | ( | PointCloud | cloud, |
float | voxelSize, | ||
func_bool_from_float | cb = '{}' ) |
performs sampling of cloud points; subdivides point cloud bounding box on voxels of approximately given size and returns at most one point per voxel; returns std::nullopt if it was terminated by the callback
VertBitSet mrmeshpy.pointIterativeSampling | ( | PointCloud | cloud, |
int | numSamples, | ||
func_bool_from_float | cb = '{}' ) |
performs sampling of cloud points by iteratively removing one point with minimal metric (describing distance to the closest point and previous nearby removals), thus allowing stopping at any given number of samples; returns std::nullopt if it was terminated by the callback
std_variant_MeshTriPoint_EdgePoint_Id_VertTag_int mrmeshpy.pointOnObjectToPickedPoint | ( | VisualObject | object, |
PointOnObject | pos ) |
Converts PointOnObject coordinates depending on the object type to the PickedPoint variant
FunctionVolume mrmeshpy.pointsToDistanceFunctionVolume | ( | PointCloud | cloud, |
PointsToDistanceVolumeParams | params ) |
makes FunctionVolume representing signed distances to points with normals
SimpleVolume mrmeshpy.pointsToDistanceVolume | ( | PointCloud | cloud, |
PointsToDistanceVolumeParams | params ) |
makes SimpleVolume filled with signed distances to points with normals
Mesh mrmeshpy.pointsToMeshFusion | ( | PointCloud | cloud, |
PointsToMeshParameters | params ) |
makes mesh from points with normals by constructing intermediate volume with signed distances and then using marching cubes algorithm to extract the surface from there
VertBitSet mrmeshpy.pointUniformSampling | ( | PointCloud | pointCloud, |
UniformSamplingSettings | settings ) |
Sample vertices, removing ones that are too close; returns std::nullopt if it was terminated by the callback \\ingroup PointCloudGroup
constructs an offset contour for given polyline
None mrmeshpy.positionVertsSmoothly | ( | Mesh | mesh, |
VertBitSet | verts, | ||
EdgeWeights | edgeWeightsType = 'EdgeWeights::Cotan', | ||
VertBitSet | fixedSharpVertices = None ) |
Puts given vertices in such positions to make smooth surface both inside verts-region and on its boundary; \\param verts must not include all vertices of a mesh connected component \\param fixedSharpVertices in these vertices the surface can be not-smooth
None mrmeshpy.positionVertsSmoothlySharpBd | ( | Mesh | mesh, |
VertBitSet | verts, | ||
VertCoords | vertShifts = None, | ||
VertScalars | vertStabilizers = None ) |
Puts given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary; \\param verts must not include all vertices of a mesh connected component unless vertStabilizers are given \\param vertShifts optional additional shifts of each vertex relative to smooth position \\param vertStabilizers optional per-vertex stabilizers: the more the value, the bigger vertex attraction to its original position
None mrmeshpy.positionVertsWithSpacing | ( | Mesh | mesh, |
SpacingSettings | settings ) |
Moves given vertices to make the distances between them as specified
None mrmeshpy.printCurrentTimerBranch | ( | ) |
prints current timer branch
None mrmeshpy.printStacktraceOnCrash | ( | ) |
Print stacktrace on application crash
None mrmeshpy.printTimingTree | ( | float | minTimeSec = 0.1 | ) |
prints the current timing tree \\param minTimeSec omit printing records with time spent less than given value in seconds
None mrmeshpy.printTimingTreeAtEnd | ( | bool | on, |
float | minTimeSec = 0.1 ) |
enables or disables printing of timing tree when application terminates \\param minTimeSec omit printing records with time spent less than given value in seconds
None mrmeshpy.processCloseTriangles | ( | MeshPart | mp, |
std_array_Vector3_float_3 | t, | ||
float | rangeSq, | ||
func_ProcessOneResult_from_Vector3_float_Id_FaceTag_Vector3_float_float | call ) |
invokes given callback for all triangles from given mesh part located not further than given squared distance from t-triangle
VertScalars mrmeshpy.projectAllMeshVertices | ( | Mesh | refMesh, |
Mesh | mesh, | ||
AffineXf3f | refXf = None, | ||
AffineXf3f | xf = None, | ||
float | upDistLimitSq = 3.4028234663852886e+38, | ||
float | loDistLimitSq = 0.0 ) |
Computes signed distances from all mesh points to refMesh. `refMesh` - all points will me projected to this mesh `mesh` - this mesh points will be projected `refXf` - world transform for refMesh `upDistLimitSq` - upper limit on the distance in question, if the real distance is larger than the returning upDistLimit `loDistLimitSq` - low limit on the distance in question, if a point is found within this distance then it is immediately returned without searching for a closer one
None mrmeshpy.projectOnAll | ( | Vector3f | pt, |
AABBTreeObjects | tree, | ||
float | upDistLimitSq, | ||
func_void_from_Id_ObjTag_MeshOrPoints_ProjectionResult | callback, | ||
ObjId | skipObjId = '{}' ) |
finds closest point on every object within given distance
None mrmeshpy.putScanFileNameInZ | ( | std_vector_std_filesystem_path | scans, |
std_vector_SliceInfo | zOrder ) |
Read layer heights from given scan file names
bool mrmeshpy.rayBoxIntersect | ( | Box3f | box, |
RayOrigin_float | rayOrigin, | ||
float_output | t0, | ||
float_output | t1, | ||
IntersectionPrecomputes_float | prec ) |
finds intersection between the Ray and the Box. Precomputed values could be useful for several calls with the same direction, see "An Efficient and Robust Ray-Box Intersection Algorithm" at https://people.csail.mit.edu/amy/papers/box-jgt.pdf
MeshIntersectionResult mrmeshpy.rayInsideIntersect | ( | Mesh | mesh, |
MeshPoint | m, | ||
float | rayEnd = 3.4028234663852886e+38 ) |
returns the nearest intersection between the mesh and the ray from given point along minus normal (inside the mesh)
MeshIntersectionResult mrmeshpy.rayInsideIntersect | ( | Mesh | mesh, |
VertId | v, | ||
float | rayEnd = 3.4028234663852886e+38 ) |
MeshIntersectionResult mrmeshpy.rayMeshIntersect | ( | MeshPart | meshPart, |
Line3d | line, | ||
float | rayStart = 0.0, | ||
float | rayEnd = 1.7976931348623157e+308, | ||
IntersectionPrecomputes_double | prec = None, | ||
bool | closestIntersect = True, | ||
func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds ray and mesh intersection in double-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). \\p vadidFaces if given then all faces for which false is returned will be skipped Finds the closest to ray origin intersection (or any intersection for better performance if \\p !closestIntersect).
MeshIntersectionResult mrmeshpy.rayMeshIntersect | ( | MeshPart | meshPart, |
Line3f | line, | ||
float | rayStart = 0.0, | ||
float | rayEnd = 3.4028234663852886e+38, | ||
IntersectionPrecomputes_float | prec = None, | ||
bool | closestIntersect = True, | ||
func_bool_from_Id_FaceTag | validFaces = '{}' ) |
Finds ray and mesh intersection in float-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). \\p vadidFaces if given then all faces for which false is returned will be skipped Finds the closest to ray origin intersection (or any intersection for better performance if \\p !closestIntersect).
None mrmeshpy.rayMeshIntersectAll | ( | MeshPart | meshPart, |
Line3d | line, | ||
func_bool_from_MeshIntersectionResult | callback, | ||
float | rayStart = 0.0, | ||
float | rayEnd = 1.7976931348623157e+308, | ||
IntersectionPrecomputes_double | prec = None ) |
Same as \\ref rayMeshIntersectAllF, but use double precision
None mrmeshpy.rayMeshIntersectAll | ( | MeshPart | meshPart, |
Line3f | line, | ||
func_bool_from_MeshIntersectionResult | callback, | ||
float | rayStart = 0.0, | ||
float | rayEnd = 3.4028234663852886e+38, | ||
IntersectionPrecomputes_float | prec = None ) |
Intersects ray with mesh. Finds all intersections \\anchor rayMeshIntersectAllF
MultiMeshIntersectionResult mrmeshpy.rayMultiMeshAnyIntersect | ( | std_vector_Line3Mesh_double | lineMeshes, |
float | rayStart = 0.0, | ||
float | rayEnd = 1.7976931348623157e+308 ) |
Same as \\ref rayMultiMeshAnyIntersectF, but use double precision
MultiMeshIntersectionResult mrmeshpy.rayMultiMeshAnyIntersect | ( | std_vector_Line3Mesh_float | lineMeshes, |
float | rayStart = 0.0, | ||
float | rayEnd = 3.4028234663852886e+38 ) |
Intersects ray with many meshes. Finds any intersection (not the closest) \\anchor rayMultiMeshAnyIntersectF
PolylineIntersectionResult2 mrmeshpy.rayPolylineIntersect | ( | Polyline2 | polyline, |
Line2d | line, | ||
float | rayStart = 0, | ||
float | rayEnd = 1.7976931348623157e+308, | ||
IntersectionPrecomputes2_double | prec = None, | ||
bool | closestIntersect = True ) |
Finds ray and polyline intersection in double-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest to ray origin intersection (or any intersection for better performance if \\p !closestIntersect).
PolylineIntersectionResult2 mrmeshpy.rayPolylineIntersect | ( | Polyline2 | polyline, |
Line2f | line, | ||
float | rayStart = 0, | ||
float | rayEnd = 3.4028234663852886e+38, | ||
IntersectionPrecomputes2_float | prec = None, | ||
bool | closestIntersect = True ) |
Finds ray and polyline intersection in float-precision. \\p rayStart and \\p rayEnd define the interval on the ray to detect an intersection. \\p prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest to ray origin intersection (or any intersection for better performance if \\p !closestIntersect).
TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3d | oriA, |
Vector3d | oriB, | ||
Vector3d | oriC, | ||
IntersectionPrecomputes_double | prec ) |
TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3d | oriA, |
Vector3d | oriB, | ||
Vector3d | oriC, | ||
Vector3d | dir ) |
TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3f | oriA, |
Vector3f | oriB, | ||
Vector3f | oriC, | ||
IntersectionPrecomputes_float | prec ) |
TriIntersectResult mrmeshpy.rayTriangleIntersect | ( | Vector3f | oriA, |
Vector3f | oriB, | ||
Vector3f | oriC, | ||
Vector3f | dir ) |
TriIntersectResult mrmeshpy.rayTriangleIntersect_ | ( | Vector3d | oriA, |
Vector3d | oriB, | ||
Vector3d | oriC, | ||
IntersectionPrecomputes_double | prec ) |
TriIntersectResult mrmeshpy.rayTriangleIntersect_ | ( | Vector3f | oriA, |
Vector3f | oriB, | ||
Vector3f | oriC, | ||
IntersectionPrecomputes_float | prec ) |
bool mrmeshpy.readByBlocks | ( | typing.Any | in_, |
char_output | data, | ||
int | dataSize, | ||
func_bool_from_float | callback = '{}', | ||
int | blockSize = 65536 ) |
\\brief read dataSize bytes from in stream to data by blocks blockSize bytes \\details if progress callback is not set, read all data by one block \\return false if process was canceled (callback is set and return false )
None mrmeshpy.readRawTiff | ( | os.PathLike | str | bytes | path, |
RawTiffOutput | output ) |
load values from tiff to ouput.data
str mrmeshpy.readString | ( | typing.Any | in_ | ) |
reads input stream to string
TiffParameters mrmeshpy.readTiffParameters | ( | os.PathLike | str | bytes | path | ) |
reads parameters of tiff file
Mesh mrmeshpy.rebuildMesh | ( | MeshPart | mp, |
RebuildMeshSettings | settings ) |
fixes all types of issues in input mesh (degenerations, holes, self-intersections, etc.) by first converting mesh in voxel representation, and then backward
int mrmeshpy.reducePath | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
std_vector_EdgePoint | path, | ||
MeshTriPoint | end, | ||
int | maxIter = 5 ) |
converts any input surface path into geodesic path (so reduces its length): start-path-end; returns actual number of iterations performed
bool mrmeshpy.reducePathViaVertex | ( | Mesh | mesh, |
MeshTriPoint | start, | ||
VertId | v, | ||
MeshTriPoint | end, | ||
std_vector_EdgePoint | outPath, | ||
std_vector_Vector2_float | tmp, | ||
std_vector_EdgePoint | cachePath ) |
given path s-v-e, tries to decrease its length by moving away from v \\param outPath intermediate locations between s and e will be added here \\param tmp elements will be temporary allocated here \\param cachePath as far as we need two sides unfold, cache one to reduce allocations
AffineXf3f mrmeshpy.refineFeatureObject | ( | FeatureObject | featObj, |
Mesh | mesh, | ||
RefineParameters | params = '{}' ) |
Recalculate the feature object's position so it would better fit with the given mesh
AffineXf3f mrmeshpy.refineFeatureObject | ( | FeatureObject | featObj, |
PointCloud | pointCloud, | ||
RefineParameters | params = '{}' ) |
Recalculate the feature object's position so it would better fit with the given point cloud
bool mrmeshpy.relax | ( | Mesh | mesh, |
MeshRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) \\return true if was finished successfully, false if was interrupted by progress callback
bool mrmeshpy.relax | ( | PointCloud | pointCloud, |
PointCloudRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) \\return true if was finished successfully, false if was interrupted by progress callback
bool mrmeshpy.relaxApprox | ( | Mesh | mesh, |
MeshApproxRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) approx neighborhoods \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
bool mrmeshpy.relaxApprox | ( | PointCloud | pointCloud, |
PointCloudApproxRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) approx neighborhoods \\return true if was finished successfully, false if was interrupted by progress callback
bool mrmeshpy.relaxKeepVolume | ( | Mesh | mesh, |
MeshRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) \\n do not really keeps volume but tries hard \\return true if the operation completed successfully, and false if it was interrupted by the progress callback.
bool mrmeshpy.relaxKeepVolume | ( | PointCloud | pointCloud, |
PointCloudRelaxParams | params = '{}', | ||
func_bool_from_float | cb = '{}' ) |
applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) do not really keeps volume but tries hard \\return true if was finished successfully, false if was interrupted by progress callback
bool mrmeshpy.remesh | ( | Mesh | mesh, |
RemeshSettings | settings ) |
Splits too long and eliminates too short edges from the mesh
None mrmeshpy.removeLoneContours | ( | std_vector_std_vector_VariableEdgeTri | contours | ) |
Removes contours that fully lay inside one triangle from the contours
None mrmeshpy.removeLoneDegeneratedContours | ( | MeshTopology | edgesTopology, |
std_vector_OneMeshContour | faceContours, | ||
std_vector_OneMeshContour | edgeContours ) |
Removes contours with zero area (do not remove if contour is handle on topology) edgesTopology - topology on which contours are represented with edges faceContours - lone contours represented by faces (all intersections are in same mesh A face) edgeContours - lone contours represented by edges (all intersections are in mesh B edges, edgesTopology: meshB.topology)
None mrmeshpy.removeSpikes | ( | Mesh | mesh, |
int | maxIterations, | ||
float | minSumAngle, | ||
VertBitSet | region = None ) |
applies at most given number of relaxation iterations the spikes detected by given threshold
str mrmeshpy.replace | ( | str | target, |
str | from_, | ||
str | to ) |
Returns \\param target with all \\param from replaced with \\param to, zero or more times.
None mrmeshpy.replaceInplace | ( | std_string_output | target, |
str | from_, | ||
str | to ) |
Replaces \\param from with \\param to in \\param target (in-place), zero or more times.
str mrmeshpy.replaceProhibitedChars | ( | str | line, |
str | replacement = '_' ) |
replace OS prohibited chars ('?', '*', '/', '\\', '"', '<', '>') with `replacement` char
adjusts z-coordinates of (m) vertices to make adjusted (m) similar to (target)
bool mrmeshpy.reportProgress | ( | func_bool_from_float | cb, |
float | v ) |
safely invokes \\param cb with given value; just returning true for empty callback
bool mrmeshpy.reportProgress | ( | func_bool_from_float | cb, |
float | v, | ||
int | counter, | ||
int | divider ) |
safely invokes \\param cb with given value if \\param counter is divisible by \\param divider (preferably a power of 2); just returning true for empty callback
MarkedContour3f mrmeshpy.resample | ( | MarkedContour3f | in_, |
float | minStep, | ||
std_vector_Vector3_float | normals = None ) |
keeps all marked points from input contour and adds/removes other points to have them as many as possible, but at the distance along the input line not shorter than (minStep) from their neighbor points \\param normals optional parameter with the normals of input points that will be resampled to become normals of output points
OpenVdbFloatGrid mrmeshpy.resampled | ( | OpenVdbFloatGrid | grid, |
float | voxelScale, | ||
func_bool_from_float | cb = '{}' ) |
resample this grid to fit voxelScale
OpenVdbFloatGrid mrmeshpy.resampled | ( | OpenVdbFloatGrid | grid, |
Vector3f | voxelScale, | ||
func_bool_from_float | cb = '{}' ) |
resample this grid to fit voxelScale
bool mrmeshpy.resolveMeshDegenerations | ( | Mesh | mesh, |
int | maxIters, | ||
float | maxDeviation = 0, | ||
float | maxAngleChange = 1.0471975803375244, | ||
float | criticalAspectRatio = 10000 ) |
bool mrmeshpy.resolveMeshDegenerations | ( | Mesh | mesh, |
ResolveMeshDegenSettings | settings = '{}' ) |
\\brief Resolves degenerate triangles in given mesh \\details This function performs decimation, so it can affect topology \\ingroup DecimateGroup \\return true if the mesh has been changed \\sa \\ref decimateMesh
None mrmeshpy.reverse | ( | std_vector_Id_EdgeTag | path | ) |
reverses the order of edges and flips each edge orientation, thus making the opposite directed edge path
None mrmeshpy.reverse | ( | std_vector_std_vector_Id_EdgeTag | paths | ) |
reverse every path in the vector
float mrmeshpy.roundToPrecision | ( | float | v, |
int | precision ) |
returns given value rounded to given number of decimal digits
bool mrmeshpy.same | ( | MeshTopology | topology, |
EdgePoint | lhs, | ||
EdgePoint | rhs ) |
returns true if two edge-points are equal considering different representations
bool mrmeshpy.same | ( | MeshTopology | topology, |
MeshTriPoint | lhs, | ||
MeshTriPoint | rhs ) |
returns true if two points are equal considering different representations
std_vector_Vector3_float mrmeshpy.sampleHalfSphere | ( | ) |
returns quasi-uniform 145 samples on unit half-sphere z>0
None mrmeshpy.saveAllSlicesToImage | ( | VdbVolume | vdbVolume, |
VoxelsSave.SavingSettings | settings ) |
save all slices by the active plane through all voxel planes along the active axis to an image file
None mrmeshpy.saveDistanceMapToImage | ( | DistanceMap | distMap, |
os.PathLike | str | bytes | filename, | ||
float | threshold = 0.003921568859368563 ) |
saves distance map to a grayscale image file threshold - threshold of maximum values [0.; 1.]. invalid pixel set as 0. (black) minimum (close): 1.0 (white) maximum (far): threshold invalid (infinity): 0.0 (black)
None mrmeshpy.saveLines | ( | Polyline3 | polyline, |
os.PathLike | str | bytes | file, | ||
SaveSettings | settings = '{}' ) |
detects the format from file extension and saves polyline in it
None mrmeshpy.saveLines | ( | Polyline3 | polyline, |
str | extension, | ||
typing.Any | out, | ||
SaveSettings | settings = '{}' ) |
extension in `*.ext` format
None mrmeshpy.saveMesh | ( | Mesh | mesh, |
os.PathLike | str | bytes | file, | ||
SaveSettings | settings = '{}' ) |
detects the format from file extension and save mesh to it
None mrmeshpy.saveMesh | ( | Mesh | mesh, |
str | extension, | ||
typing.Any | out, | ||
SaveSettings | settings = '{}' ) |
extension in `*.ext` format
None mrmeshpy.saveObjectVoxelsToFile | ( | Object | object, |
os.PathLike | str | bytes | path, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.savePoints | ( | PointCloud | points, |
os.PathLike | str | bytes | file, | ||
SaveSettings | settings = '{}' ) |
detects the format from file extension and save points to it
None mrmeshpy.savePoints | ( | PointCloud | points, |
str | extension, | ||
typing.Any | out, | ||
SaveSettings | settings = '{}' ) |
extension in `*.ext` format
None mrmeshpy.saveSliceToImage | ( | os.PathLike | str | bytes | path, |
VdbVolume | vdbVolume, | ||
SlicePlane | slicePlain, | ||
int | sliceNumber, | ||
func_bool_from_float | callback = '{}' ) |
save the slice by the active plane through the sliceNumber to an image file
None mrmeshpy.saveVoxels | ( | VdbVolume | vdbVolume, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
Saves voxels in a file, detecting the format from file extension
None mrmeshpy.saveVoxelsGav | ( | SimpleVolume | simpleVolume, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsGav | ( | SimpleVolume | simpleVolume, |
typing.Any | out, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsGav | ( | SimpleVolumeMinMax | simpleVolumeMinMax, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsGav | ( | SimpleVolumeMinMax | simpleVolumeMinMax, |
typing.Any | out, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsGav | ( | VdbVolume | vdbVolume, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
Save voxels in Gav-format in given destination
None mrmeshpy.saveVoxelsGav | ( | VdbVolume | vdbVolume, |
typing.Any | out, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsRaw | ( | SimpleVolume | simpleVolume, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
None mrmeshpy.saveVoxelsRaw | ( | VdbVolume | vdbVolume, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
Save raw voxels file, writing parameters in file name
FaceBitSet mrmeshpy.segmentByGraphCut | ( | MeshTopology | topology, |
FaceBitSet | source, | ||
FaceBitSet | sink, | ||
func_float_from_Id_EdgeTag | metric ) |
\\brief Finds segment that divide mesh on source and sink (source included, sink excluded), by minimizing the sum of metric over the boundary \\ingroup MeshSegmentationGroup
Mesh mrmeshpy.segmentVolume | ( | VdbVolume | volume, |
std_vector_std_pair_Vector3_float_Vector3_float | pairs, | ||
VolumeSegmentationParameters | params = 'MR::VolumeSegmentationParameters()' ) |
\\brief Simple segment volume \\details 1. Build paths between points pairs \\n 2. Mark paths as inside part seeds \\n 3. Mark volume part edges as outside part seeds \\n 4. Return mesh from segmented inside part
VoxelBitSet mrmeshpy.segmentVolumeByGraphCut | ( | SimpleVolume | densityVolume, |
float | k, | ||
VoxelBitSet | sourceSeeds, | ||
VoxelBitSet | sinkSeeds, | ||
func_bool_from_float | cb = '{}' ) |
\\brief Segment voxels of given volume on two sets using graph-cut, returning source set \\ingroup VoxelGroup \\param k - coefficient in the exponent of the metric affecting edge capacity:\\n increasing k you force to find a higher steps in the density on the boundary, decreasing k you ask for smoother boundary \\param sourceSeeds - these voxels will be included in the result \\param sinkSeeds - these voxels will be excluded from the result \\sa \\ref VolumeSegmenter
std_vector_Mesh mrmeshpy.segmentVoxelMaskToInstances | ( | VdbVolume | mask, |
int | minSize = 100, | ||
func_bool_from_float | cb = '{}' ) |
Given voxel mask, separate it into components using mincut algorithm @param minSize Minimum size of a segment (in voxels)
None mrmeshpy.SegPoints | ( | Vector3f | VEC, |
Vector3f | X, | ||
Vector3f | Y, | ||
Vector3f | P, | ||
Vector3f | A, | ||
Vector3f | Q, | ||
Vector3f | B ) |
Returns closest points between an segment pair.
std_vector_TaggedBitSet_FaceTag mrmeshpy.separateClosedContour | ( | Mesh | mesh, |
std_vector_Vector3_float | contour, | ||
func_void_from_EdgePoint | cb = '{}' ) |
Separates mesh into disconnected by contour components (independent components are not returned), faces that are intersected by contour does not belong to any component. Calls callback for each MeshEdgePoint in contour respecting order, ignoring MeshTriPoints (if projection of input point lay inside face)
None mrmeshpy.serializeMesh | ( | Mesh | mesh, |
os.PathLike | str | bytes | path, | ||
FaceBitSet | selection = None, | ||
str | serializeFormat = '".mrmesh"' ) |
saves mesh with optional selection to mru format; this is very convenient for saving intermediate states during algorithm debugging; ".mrmesh" save mesh format is not space efficient, but guaranties no changes in the topology after loading
None mrmeshpy.serializeObjectTree | ( | Object | object, |
os.PathLike | str | bytes | path, | ||
func_bool_from_float | progress, | ||
func_void_from_std_filesystem_path | preCompress ) |
\\brief saves object subtree in given scene file (zip/mru) \\details format specification: children are saved under folder with name of their parent object all objects parameters are saved in one JSON file in the root folder if preCompress is set, it is called before compression saving is controlled with Object::serializeModel_ and Object::serializeFields_
None mrmeshpy.serializeObjectTree | ( | Object | object, |
os.PathLike | str | bytes | path, | ||
func_bool_from_float | progress = '{}' ) |
None mrmeshpy.serializeObjectTreeToGltf | ( | Object | root, |
os.PathLike | str | bytes | file, | ||
func_bool_from_float | callback = '{}' ) |
saves scene to a glTF file
None mrmeshpy.SetCurrentThreadName | ( | str | name | ) |
sets debug name for the current thread
None mrmeshpy.setDefaultSerializeMeshFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectMeshHolder by default (if not overridden in specific object), the string must start from '.'; serialization falls back to the PLY format if given format support is available NOTE: CTM format support is available in the MRIOExtras library; make sure to load it if you prefer CTM
None mrmeshpy.setDefaultSerializePointsFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectPointsHolder by default (if not overridden in specific object), the string must start from '.'; serialization falls back to the PLY format if given format support is available NOTE: CTM format support is available in the MRIOExtras library; make sure to load it if you prefer CTM
None mrmeshpy.setDefaultSerializeVoxelsFormat | ( | str | newFormat | ) |
sets file extension used to serialize serialize ObjectVoxels by default (if not overridden in specific object), the string must start from '.'
None mrmeshpy.setLevelSetType | ( | OpenVdbFloatGrid | grid | ) |
sets type of this grid as LEVEL SET (for normal flipping)
None mrmeshpy.setNewHandlerIfNeeded | ( | ) |
sets new handler for operator new if needed for some platforms
None mrmeshpy.setupLoggerByDefault | ( | ) |
Setups logger: 1) makes stdout sink 2) makes file sink (MRLog.txt) 3) redirect std streams to logger 4) print stacktrace on crash (not in wasm) log level - trace
None mrmeshpy.setValue | ( | OpenVdbFloatGrid | grid, |
Vector3i | p, | ||
float | value ) |
sets given region voxels value \\note region is in grid space (0 voxel id is minimum active voxel in grid)
None mrmeshpy.setValue | ( | OpenVdbFloatGrid | grid, |
VoxelBitSet | region, | ||
float | value ) |
sets given region voxels value \\note region is in grid space (0 voxel id is minimum active voxel in grid)
None mrmeshpy.sharpenMarchingCubesMesh | ( | MeshPart | ref, |
Mesh | vox, | ||
Vector_Id_VoxelTag_FaceId | face2voxel, | ||
SharpenMarchingCubesMeshSettings | settings ) |
adjust the mesh \\param vox produced by marching cubes method (NOT dual marching cubes) by 1) correcting positions of all vertices to given offset relative to \\param ref mesh (if correctOldVertPos == true); 2) introducing new vertices in the voxels where the normals change abruptly. \\param face2voxel mapping from Face Id to Voxel Id where it is located
Mesh mrmeshpy.sharpOffsetMesh | ( | MeshPart | mp, |
float | offset, | ||
SharpOffsetParameters | params = '{}' ) |
Offsets mesh by converting it to voxels and back post process result using reference mesh to sharpen features
None mrmeshpy.shrink | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
int | hops = 1 ) |
removes from the region all faces within given number of hops (stars) from the initial region boundary
None mrmeshpy.shrink | ( | MeshTopology | topology, |
VertBitSet | region, | ||
int | hops = 1 ) |
removes from the region all vertices within given number of hops (stars) from the initial region boundary
FaceBitSet mrmeshpy.shrinkFaces | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
UndirectedEdgeBitSet | stopEdges = None ) |
returns given region without all faces sharing an edge with not-region face; \\param stopEdges - neighborhood via this edges will be ignored
None mrmeshpy.shrinkPixelMask | ( | PixelBitSet | mask, |
RectIndexer | indexer, | ||
int | shrinkage = 1 ) |
shrinks PixelBitSet with given number of steps
None mrmeshpy.shrinkVoxelsMask | ( | VoxelBitSet | mask, |
VolumeIndexer | indexer, | ||
int | shrinkage = 1 ) |
shrinks VoxelBitSet with given number of steps
float mrmeshpy.signedDistanceToMesh | ( | MeshPart | mp, |
Vector3f | p, | ||
SignedDistanceToMeshOptions | op ) |
computes signed distance from point (p) to mesh part (mp) following options (op); returns std::nullopt if distance is smaller than op.minDist or larger than op.maxDist (except for op.signMode == HoleWindingRule)
OpenVdbFloatGrid mrmeshpy.simpleVolumeToDenseGrid | ( | SimpleVolume | simpleVolume, |
float | background = 0.0, | ||
func_bool_from_float | cb = '{}' ) |
make FloatGrid from SimpleVolume make copy of data background - the new background value for FloatGrid grid can be used to make iso-surface later with gridToMesh function
VdbVolume mrmeshpy.simpleVolumeToVdbVolume | ( | SimpleVolumeMinMax | simpleVolume, |
func_bool_from_float | cb = '{}' ) |
set the simpleVolume.min as the background value
None mrmeshpy.smoothRegionBoundary | ( | Mesh | mesh, |
FaceBitSet | regionFaces, | ||
int | numIters = 4 ) |
given a region of faces on the mesh, moves boundary vertices of the region to make the region contour much smoother with minor optimization of mesh topology near region boundary; \\param numIters >= 1 how many times to run the algorithm to achieve a better quality, solution is typically oscillates back and forth so even number of iterations is recommended
FaceBitSet mrmeshpy.smoothSelection | ( | Mesh | mesh, |
FaceBitSet | region, | ||
float | expandOffset, | ||
float | shrinkOffset ) |
makes the given selection more smooth with shifthing a boundary of the selection outside and back. Input mesh is changed because we have to cut new edges along the new boundaries \\param expandOffset defines how much the boundary is expanded \\param expandOffset defines how much the boundary is shrinked after that
None mrmeshpy.sortPathsByLength | ( | std_vector_std_vector_Id_EdgeTag | paths, |
Mesh | mesh ) |
None mrmeshpy.sortPathsByMetric | ( | std_vector_std_vector_Id_EdgeTag | paths, |
func_float_from_Id_EdgeTag | metric ) |
sorts given paths in ascending order of their metrics
None mrmeshpy.sortScanFilesByName | ( | std_vector_std_filesystem_path | scans | ) |
Sort scan files in given vector by names (respect numbers in it)
None mrmeshpy.sortScansByOrder | ( | std_vector_std_filesystem_path | scans, |
std_vector_SliceInfo | zOrder ) |
Sort scan files in given vector by given slice information
std_vector_std_string mrmeshpy.split | ( | str | string, |
str | delimiter ) |
Splits given string by delimiter. \\return vector of split strings \\ingroup BasicGroup
std_vector_unsigned_long_long mrmeshpy.splitByLines | ( | str | data, |
int | size ) |
returns offsets for each new line in monolith char block
std_vector_std_vector_Id_EdgeTag mrmeshpy.splitOnSimpleLoops | ( | MeshTopology | topology, |
std_vector_std_vector_Id_EdgeTag | loops ) |
given a number of edge loops, splits every loop that passes via a vertex more than once on smaller loops without self-intersections
None mrmeshpy.splitQuad | ( | MeshTopology | topology, |
Id_EdgeTag | a, | ||
FaceBitSet | outNewFaces = None ) |
given quadrangle face to the left of a, splits it in two triangles with new diagonal edge via dest(a)
float mrmeshpy.sqr | ( | float | x | ) |
float mrmeshpy.sqr | ( | Vector2d | a | ) |
squared length
float mrmeshpy.sqr | ( | Vector2f | a | ) |
squared length
int mrmeshpy.sqr | ( | Vector2i | a | ) |
squared length
float mrmeshpy.sqr | ( | Vector3d | a | ) |
squared length
float mrmeshpy.sqr | ( | Vector3f | a | ) |
squared length
int mrmeshpy.sqr | ( | Vector3i | a | ) |
squared length
None mrmeshpy.stitchContours | ( | MeshTopology | topology, |
std_vector_Id_EdgeTag | c0, | ||
std_vector_Id_EdgeTag | c1 ) |
given two contours: 1) of equal size; 2) all edges of c0 have no left faces; 3) all edges of c1 have no right faces; merge the surface along corresponding edges of two contours, and deletes all vertices and edges from c1
None mrmeshpy.straightenBoundary | ( | Mesh | mesh, |
Id_EdgeTag | bd, | ||
float | minNeiNormalsDot, | ||
float | maxTriAspectRatio, | ||
FaceBitSet | newFaces = None ) |
adds triangles along the boundary to straighten it; \\details new triangle is added only if 1) aspect ratio of the new triangle is at most maxTriAspectRatio, 2) dot product of its normal with neighbor triangles is at least minNeiNormalsDot. \\ingroup MeshAlgorithmGroup
None mrmeshpy.subdivideLoneContours | ( | Mesh | mesh, |
std_vector_OneMeshContour | contours, | ||
phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2oldMap = None ) |
Divides faces that fully own contours into 3 parts with center in center mass of one of the face contours if there is more than one contour on face it guarantee to subdivide at least one lone contour on this face
int mrmeshpy.subdivideMesh | ( | Mesh | mesh, |
SubdivideSettings | settings = '{}' ) |
splits edges in mesh region according to the settings;\\n \\return The total number of edge splits performed
int mrmeshpy.subdividePolyline | ( | Polyline2 | polyline, |
PolylineSubdivideSettings | settings = '{}' ) |
Split edges in polyline according to the settings;\\n \\return The total number of edge splits performed
int mrmeshpy.subdividePolyline | ( | Polyline3 | polyline, |
PolylineSubdivideSettings | settings = '{}' ) |
EdgeBitSet mrmeshpy.subdividePolylineWithPlane | ( | Polyline3 | polyline, |
Plane3f | plane, | ||
func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = None ) |
This function splits edges intersected by the plane \\return New edges with origin on the plane and oriented to the positive direction \\param polyline Input polyline that will be cut by the plane \\param plane Input plane to cut polyline with \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
FaceBitSet mrmeshpy.subdivideWithPlane | ( | Mesh | mesh, |
Plane3f | plane, | ||
phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2Old = None, | ||
float | eps = 0, | ||
func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = None ) |
subdivides all triangles intersected by given plane, leaving smaller triangles that only touch the plane; \\return all triangles on the positive side of the plane \\param new2Old receive mapping from newly appeared triangle to its original triangle (part to full) \\param eps if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
func_bool_from_float mrmeshpy.subprogress | ( | func_bool_from_float | cb, |
float | from_, | ||
float | to ) |
returns a callback that maps [0,1] linearly into [from,to] in the call to \\param cb (which can be empty)
func_bool_from_float mrmeshpy.subprogress | ( | func_bool_from_float | cb, |
int | index, | ||
int | count ) |
returns a callback that maps [0,1] linearly into [(index+0)/count,(index+1)/count] in the call to \\param cb (which can be empty)
float mrmeshpy.suggestVoxelSize | ( | MeshPart | mp, |
float | approxNumVoxels ) |
computes size of a cubical voxel to get approximately given number of voxels during rasterization
float mrmeshpy.surfacePathLength | ( | Mesh | mesh, |
std_vector_EdgePoint | surfacePath ) |
computes the length of surface path
std_vector_std_vector_Vector3_float mrmeshpy.surfacePathsToContours3f | ( | Mesh | mesh, |
std_vector_std_vector_EdgePoint | lines ) |
std_vector_Vector3_float mrmeshpy.surfacePathToContour3f | ( | Mesh | mesh, |
std_vector_EdgePoint | line ) |
converts lines on mesh in 3D contours by computing coordinate of each point
std_vector_Id_EdgeTag mrmeshpy.surroundingContour | ( | Mesh | mesh, |
std_vector_Id_EdgeTag | includeEdges, | ||
func_float_from_Id_EdgeTag | edgeMetric, | ||
Vector3f | dir ) |
\\brief Find the best closed edge loop passing through given edges, which minimizes the sum of given edge metric. The algorithm assumes that input edges can be projected on the plane orthogonal to given direction, then the center point of all input edges is found, and each segment of the searched loop is within infinite pie sector with this center and the borders passing via two sorted input edges. \\ingroup MeshSegmentationGroup \\param includeEdges contain all edges in arbitrary order that must be present in the returned loop, probably with reversed direction (should have at least 2 elements) \\param edgeMetric returned loop will minimize the sum of this metric \\param dir direction approximately orthogonal to the loop
std_vector_Id_EdgeTag mrmeshpy.surroundingContour | ( | Mesh | mesh, |
std_vector_Id_VertTag | keyVertices, | ||
func_float_from_Id_EdgeTag | edgeMetric, | ||
Vector3f | dir ) |
\\brief Find the best closed edge loop passing through given vertices, which minimizes the sum of given edge metric. The algorithm assumes that input vertices can be projected on the plane orthogonal to given direction, then the center point of all input vertices is found, and each segment of the searched loop is within infinite pie sector with this center and the borders passing via two sorted input vertices. \\ingroup MeshSegmentationGroup \\param keyVertices contain all vertices in arbitrary order that returned loop must pass (should have at least 2 elements) \\param edgeMetric returned loop will minimize the sum of this metric \\param dir direction approximately orthogonal to the loop
str mrmeshpy.systemToUtf8 | ( | str | system | ) |
converts system encoded string to UTF8-encoded string
std_array_VoxelsVolumeMinMax_std_vector_float_3 mrmeshpy.teethMaskToDirectionVolume | ( | VdbVolume | volume, |
std_vector_int | additionalIds = '{}' ) |
A shortcut for \\ref TeethMaskToDirectionVolumeConvertor::create and \\ref TeethMaskToDirectionVolumeConvertor::convertAll
Mesh mrmeshpy.terrainTriangulation | ( | std_vector_Vector3_float | points, |
func_bool_from_float | cb = '{}' ) |
Creates Delaunay triangulation using only XY components of points points will be changed inside this function take argument by value
Mesh mrmeshpy.thickenMesh | ( | Mesh | mesh, |
float | offset, | ||
GeneralOffsetParameters | params = '{}' ) |
in case of positive offset, returns the mesh consisting of offset mesh merged with inversed original mesh (thickening mode); in case of negative offset, returns the mesh consisting of inversed offset mesh merged with original mesh (hollowing mode); if your input mesh is open then please specify params.signDetectionMode = SignDetectionMode::Unsigned, and you will get open mesh (with several components) on output if your input mesh is closed then please specify another sign detection mode, and you will get closed mesh (with several components) on output;
str mrmeshpy.toLower | ( | str | str | ) |
return a copy of the string with all alphabetic characters replaced with upper-case variants
MeshTopology mrmeshpy.topologyFromTriangles | ( | Triangulation | t, |
MeshBuilder.BuildSettings | settings = '{}', | ||
func_bool_from_float | progressCb = '{}' ) |
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
str mrmeshpy.toString | ( | DimensionsVisualizePropertyType | value | ) |
str mrmeshpy.toString | ( | PathError | error | ) |
std_vector_Id_EdgeTag mrmeshpy.trackLeftBoundaryLoop | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
Id_EdgeTag | e0 ) |
std_vector_Id_EdgeTag mrmeshpy.trackLeftBoundaryLoop | ( | MeshTopology | topology, |
Id_EdgeTag | e0, | ||
FaceBitSet | region = None ) |
returns closed loop of region boundary starting from given region boundary edge (region faces on the left, and not-region faces or holes on the right); if more than two boundary edges connect in one vertex, then the function makes the most abrupt turn to right
std_vector_Id_EdgeTag mrmeshpy.trackRightBoundaryLoop | ( | MeshTopology | topology, |
FaceBitSet | region, | ||
Id_EdgeTag | e0 ) |
std_vector_Id_EdgeTag mrmeshpy.trackRightBoundaryLoop | ( | MeshTopology | topology, |
Id_EdgeTag | e0, | ||
FaceBitSet | region = None ) |
returns closed loop of region boundary starting from given region boundary edge (region faces on the right, and not-region faces or holes on the left); if more than two boundary edges connect in one vertex, then the function makes the most abrupt turn to left
std_vector_EdgePoint mrmeshpy.trackSection | ( | MeshPart | mp, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
Vector3f | direction, | ||
float | distance ) |
track section of plane set by start point, direction and surface normal in start point in given direction while given distance or mesh boundary is not reached, or track looped negative distance means moving in opposite direction returns track on surface and end point (same as start if path has looped)
std_vector_EdgePoint mrmeshpy.trackSection | ( | MeshPart | mp, |
MeshTriPoint | start, | ||
MeshTriPoint | end, | ||
Vector3f | planePoint, | ||
bool | ccw ) |
track section of plane set by start point, end point and planePoint from start to end \\param ccw - if true use start->end->planePoint plane, otherwise use start->planePoint->end (changes direction of plane tracking) returns track on surface without end point (return error if path was looped or reached boundary)
VertCoords mrmeshpy.transformNormals | ( | VertCoords | normals, |
VertBitSet | validVerts, | ||
Matrix3d | m, | ||
VertCoords | buf ) |
if (m) is null then just returns (normals); otherwise copies transformed normals in (buf) and returns it
VertCoords mrmeshpy.transformPoints | ( | VertCoords | verts, |
VertBitSet | validVerts, | ||
AffineXf3d | xf, | ||
VertCoords | buf, | ||
VertRenumber | vertRenumber = None ) |
if (xf) is null then just returns (verts); otherwise copies transformed points in (buf) and returns it
TransformVdbVolumeResult mrmeshpy.transformVdbVolume | ( | VdbVolume | volume, |
AffineXf3f | xf, | ||
bool | fixBox = False, | ||
Box3f | box = '{}' ) |
Transform volume @param volume Volume to transform @param xf The transformation @param fixBox If true, and if \\p box is valid and represents the bounding box of the \\p volume, then the result will be shifted so that no data has negative coordinate by any of dimensions
Mesh mrmeshpy.triangulateContours | ( | std_vector_std_vector_Vector2_double | contours, |
std_vector_std_vector_Id_VertTag | holeVertsIds = None ) |
@brief triangulate 2d contours only closed contours are allowed (first point of each contour should be the same as last point of the contour) @param holeVertsIds if set merge only points with same vertex id, otherwise merge all points with same coordinates @return return created mesh
Mesh mrmeshpy.triangulateContours | ( | std_vector_std_vector_Vector2_float | contours, |
std_vector_std_vector_Id_VertTag | holeVertsIds = None ) |
Mesh mrmeshpy.triangulatePointCloud | ( | PointCloud | pointCloud, |
TriangulationParameters | params = '{}', | ||
func_bool_from_float | progressCb = '{}' ) |
\\brief Creates mesh from given point cloud according params Returns empty optional if was interrupted by progress bar \\ingroup PointCloudTriangulationGroup <table border=0> <caption id="triangulatePointCloud_examples"></caption> <tr> <td> \\image html triangulate/triangulate_0.png "Before" width = 350cm </td> <td> \\image html triangulate/triangulate_3.png "After" width = 350cm </td> </tr> </table>
\\brief computes the closest points on two triangles, and returns the squared distance between them. \\param s,t are the triangles, stored tri[point][dimension]. \\details If the triangles are disjoint, p and q give the closest points of s and t respectively. However, if the triangles overlap, p and q are basically a random pair of points from the triangles, not coincident points on the intersection of the triangles, as might be expected.
str mrmeshpy.trimRight | ( | str | str | ) |
Removes all whitespace character (detected by std::isspace) at the end of string view
None mrmeshpy.trimWithPlane | ( | Mesh | mesh, |
Plane3f | plane, | ||
std_vector_std_vector_Id_EdgeTag | outCutContours, | ||
phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2Old = None, | ||
float | eps = 0, | ||
func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = None ) |
\\brief trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal \\param mesh Input mesh that will be cut \\param plane Input plane to cut mesh with \\param outCutContours optionally return newly appeared hole contours where each edge does not have right face \\param new2Old receive mapping from newly appeared triangle to its original triangle (part to full) \\param eps if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
None mrmeshpy.trimWithPlane | ( | Mesh | mesh, |
Plane3f | plane, | ||
UndirectedEdgeBitSet | outCutEdges = None, | ||
phmap_flat_hash_map_Id_FaceTag_Id_FaceTag | new2Old = None, | ||
float | eps = 0, | ||
func_void_from_Id_EdgeTag_Id_EdgeTag_float | onEdgeSplitCallback = None ) |
\\brief trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal \\param mesh Input mesh that will be cut \\param plane Input plane to cut mesh with \\param outCutEdges optionally return newly appeared hole boundary edges \\param new2Old receive mapping from newly appeared triangle to its original triangle (part to full) \\param eps if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones \\param onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
None mrmeshpy.trimWithPlane | ( | Mesh | mesh, |
TrimWithPlaneParams | params, | ||
TrimOptionalOutput | optOut = '{}' ) |
\\brief trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal \\param mesh Input mesh that will be cut \\param params stores basic params for trimWithPlane function \\param optOut stores optional output params for trimWithPlane function
IteratorRange_UndirectedEdgeIterator mrmeshpy.undirectedEdges | ( | MeshTopology | topology | ) |
IteratorRange_PolylineUndirectedEdgeIterator mrmeshpy.undirectedEdges | ( | PolylineTopology | topology | ) |
int mrmeshpy.uniteCloseVertices | ( | Mesh | mesh, |
float | closeDist, | ||
bool | uniteOnlyBd = True, | ||
VertMap | optionalVertOldToNew = None ) |
the function finds groups of mesh vertices located closer to each other than \\param closeDist, and unites such vertices in one; then the mesh is rebuilt from the remaining triangles \\param optionalVertOldToNew is the mapping of vertices: before -> after \\param uniteOnlyBd if true then only boundary vertices can be united, all internal vertices (even close ones) will remain \\return the number of vertices united, 0 means no change in the mesh
AllLocalTriangulations mrmeshpy.uniteLocalTriangulations | ( | std_vector_SomeLocalTriangulations | in_, |
func_bool_from_float | progress = '{}' ) |
converts a set of SomeLocalTriangulations containing local triangulations of all points arbitrary distributed among them into one AllLocalTriangulations with records for all points
Mesh mrmeshpy.uniteManyMeshes | ( | std_vector_Mesh_const | meshes, |
UniteManyMeshesParams | params = '{}' ) |
Computes the surface of objects' union each of which is defined by its own surface mesh - merge non intersecting meshes first - unite merged groups
Vector3d mrmeshpy.unitVector3_double | ( | float | azimuth, |
float | altitude ) |
returns a point on unit sphere given two angles
Vector3f mrmeshpy.unitVector3_float | ( | float | azimuth, |
float | altitude ) |
returns a point on unit sphere given two angles
None mrmeshpy.updateGroupPairs | ( | ICPGroupPairs | pairs, |
Vector_MeshOrPointsXf_ObjId | objs, | ||
func_void_from_Vector3_float_MeshOrPoints_ProjectionResult_Id_ObjTag | srcProjector, | ||
func_void_from_Vector3_float_MeshOrPoints_ProjectionResult_Id_ObjTag | tgtProjector, | ||
float | cosThreshold, | ||
float | distThresholdSq, | ||
bool | mutualClosest ) |
in each pair updates the target data and performs basic filtering (activation)
None mrmeshpy.updateIndicator | ( | Mesh | mesh, |
UndirectedEdgeScalars | v, | ||
FaceNormals | normals, | ||
float | beta, | ||
float | gamma ) |
Compute edge indicator function (1 - smooth edge, 0 - crease edge) by solving large system of linear equations \\param mesh contains topology information and coordinates for equation weights \\param normals per-face normals \\param beta 0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20)
None mrmeshpy.updateIndicatorFast | ( | MeshTopology | topology, |
UndirectedEdgeScalars | v, | ||
FaceNormals | normals, | ||
float | beta, | ||
float | gamma ) |
Compute edge indicator function (1 - smooth edge, 0 - crease edge) by approximation without solving the system of linear equations \\param normals per-face normals \\param beta 0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges \\param gamma the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20)
None mrmeshpy.updatePointPairs | ( | PointPairs | pairs, |
MeshOrPointsXf | src, | ||
MeshOrPointsXf | tgt, | ||
float | cosThreshold, | ||
float | distThresholdSq, | ||
bool | mutualClosest ) |
in each pair updates the target data and performs basic filtering (activation)
str mrmeshpy.Utf16ToUtf8 | ( | str | utf16 | ) |
converts UTF16-encoded string to UTF8-encoded string
str mrmeshpy.utf8string | ( | os.PathLike | str | bytes | path | ) |
str mrmeshpy.utf8ToSystem | ( | str | utf8 | ) |
converts UTF8-encoded string to system encoded string, returns empty string if such conversion cannot be made
str mrmeshpy.utf8ToWide | ( | str | utf8 | ) |
converts UTF8-encoded string into UTF16-encoded string
SimpleVolumeMinMax mrmeshpy.vdbVolumeToSimpleVolume | ( | VdbVolume | vdbVolume, |
Box3i | activeBox = 'MR::Box3i()', | ||
func_bool_from_float | cb = '{}' ) |
make SimpleVolume from VdbVolume make copy of data
SimpleVolumeMinMax mrmeshpy.vdbVolumeToSimpleVolumeNorm | ( | VdbVolume | vdbVolume, |
Box3i | activeBox = 'MR::Box3i()', | ||
std_optional_Box_float | sourceScale = '{}', | ||
func_bool_from_float | cb = '{}' ) |
Makes normalized SimpleVolume from VdbVolume Normalisation consist of scaling values linearly from the source scale to the interval [0;1] @note Makes copy of data @param sourceScale if specified, defines the initial scale of voxels. If not specified, it is estimated as min. and max. values from the voxels
SimpleVolumeMinMaxU16 mrmeshpy.vdbVolumeToSimpleVolumeU16 | ( | VdbVolume | vdbVolume, |
Box3i | activeBox = 'MR::Box3i()', | ||
std_optional_Box_float | sourceScale = '{}', | ||
func_bool_from_float | cb = '{}' ) |
Makes SimpleVolumeU16 from VdbVolume Values are linearly scaled from the source scale to the range corresponding to uint16_t @note Makes copy of data @param sourceScale if specified, defines the initial scale of voxels. If not specified, it is estimated as min. and max. values from the voxels
VertCoords mrmeshpy.vertexAttributeGradient | ( | Mesh | mesh, |
VertScalars | vertexAttribute ) |
Calculates gradient for each vertex in mesh, based on vertexAttribute
computes position of a vertex, when all neighbor triangles have almost equal areas, more precisely it minimizes sum_i (area_i)^2 by adjusting the position of this vertex only
VertBitSet mrmeshpy.verticesGridSampling | ( | MeshPart | mp, |
float | voxelSize, | ||
func_bool_from_float | cb = '{}' ) |
performs sampling of mesh vertices; subdivides mesh bounding box on voxels of approximately given size and returns at most one vertex per voxel; returns std::nullopt if it was terminated by the callback
updates a2b map to a2c map using b2c map
returns map a2c from a2b and b2c maps
Intersect mesh A and mesh B.
Subtract mesh B from mesh A.
Unite mesh A and mesh B.
VdbVolume mrmeshpy.voxelFilter | ( | VdbVolume | volume, |
VoxelFilterType | type, | ||
int | width ) |
Performs voxels filtering. @param type Type of fitler @param width Width of the filtering window, must be an odd number greater or equal to 1.
float mrmeshpy.voxelizeAndComputeVolume | ( | std_vector_std_shared_ptr_Mesh | meshes, |
AffineXf3f | xf, | ||
Vector3f | voxelSize ) |
Computes summary volume of given meshes converting it to voxels of given size note that each mesh should have closed topology speed and precision depends on voxelSize (smaller voxel - faster, less precise; bigger voxel - slower, more precise)
bool mrmeshpy.voxelsApplyTransform | ( | ObjectVoxels | obj, |
AffineXf3f | xf, | ||
bool | fixBox ) |
Same as above but for the SceneObject @return true, if \\p fixBox is true and the box was "fixed" (see parameter `fixBox` of \\ref transformVdbVolume)
func_float_from_unsigned_long_long_unsigned_long_long mrmeshpy.voxelsExponentMetric | ( | VdbVolume | voxels, |
VoxelMetricParameters | parameters, | ||
float | modifier = -1.0 ) |
e^(modifier*(dens1+dens2))
func_float_from_unsigned_long_long_unsigned_long_long mrmeshpy.voxelsSumDiffsMetric | ( | VdbVolume | voxels, |
VoxelMetricParameters | parameters ) |
sum of dense differences with start and stop voxels
str mrmeshpy.wideToUtf8 | ( | str | wide | ) |
converts wide null terminating string to UTF8-encoded string
bool mrmeshpy.writeByBlocks | ( | typing.Any | out, |
str | data, | ||
int | dataSize, | ||
func_bool_from_float | callback = '{}', | ||
int | blockSize = 65536 ) |
\\brief write dataSize bytes from data to out stream by blocks blockSize bytes \\details if progress callback is not set, write all data by one block \\return false if process was canceled (callback is set and return false )
None mrmeshpy.writeRawTiff | ( | int | bytes, |
os.PathLike | str | bytes | path, | ||
BaseTiffParameters | params ) |
writes bytes to tiff file
None mrmeshpy.xyPlaneMeshIntersect | ( | MeshPart | meshPart, |
float | zLevel, | ||
FaceBitSet | fs, | ||
UndirectedEdgeBitSet | ues, | ||
VertBitSet | vs ) |
given mesh part and plane z=zLevel, outputs \\param fs triangles crossed or touched by the plane \\param ues edges of these triangles \\param vs vertices of these triangles
None mrmeshpy.zlibCompressStream | ( | typing.Any | in_, |
typing.Any | out, | ||
int | level = -1 ) |
@brief compress the input data using the Deflate algorithm @param in - input data stream @param out - output data stream @param level - compression level (0 - no compression, 1 - the fastest but the most inefficient compression, 9 - the most efficient but the slowest compression) @return nothing or error string
None mrmeshpy.zlibDecompressStream | ( | typing.Any | in_, |
typing.Any | out ) |
/brief decompress the input data compressed using the Deflate algorithm @param in - input data stream @param out - output data stream @return nothing or error string
mrmeshpy.AABBTreeNode_AABBTreeBase_ObjTreeTraits_Traits = AABBTreeNode_ObjTreeTraits |
mrmeshpy.AffineXf_Vector2d_M = Matrix2d |
mrmeshpy.AffineXf_Vector2f_M = Matrix2f |
mrmeshpy.AffineXf_Vector3d_M = Matrix3d |
mrmeshpy.AffineXf_Vector3f_M = Matrix3f |
mrmeshpy.AllVisualizeProperties = std_vector_ViewportMask |
mrmeshpy.Ball_double_VTraits = VectorTraits_double |
mrmeshpy.Ball_float_VTraits = VectorTraits_float |
mrmeshpy.Ball_Vector2d_VTraits = VectorTraits_Vector2d |
mrmeshpy.Ball_Vector2f_VTraits = VectorTraits_Vector2f |
mrmeshpy.Ball_Vector3d_VTraits = VectorTraits_Vector3d |
mrmeshpy.Ball_Vector3f_VTraits = VectorTraits_Vector3f |
mrmeshpy.BMap_TaggedBitSet_ICPElemtTag_IndexType_TaggedBitSet_ICPElemtTag_IndexType = BMap_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.BMap_TaggedBitSet_VoxelTag_IndexType_TaggedBitSet_VoxelTag_IndexType = BMap_Id_VoxelTag_Id_VoxelTag |
mrmeshpy.BooleanResMapObj = BooleanResultMapper.MapObject |
mrmeshpy.Box_double_VTraits = VectorTraits_double |
mrmeshpy.Box_float_VTraits = VectorTraits_float |
mrmeshpy.Box_int_VTraits = VectorTraits_int |
mrmeshpy.Box_long_long_VTraits = VectorTraits_long_long |
mrmeshpy.Box_Vector2d_VTraits = VectorTraits_Vector2d |
mrmeshpy.Box_Vector2f_VTraits = VectorTraits_Vector2f |
mrmeshpy.Box_Vector2i_VTraits = VectorTraits_Vector2i |
mrmeshpy.Box_Vector2ll_VTraits = VectorTraits_Vector2ll |
mrmeshpy.Box_Vector3d_VTraits = VectorTraits_Vector3d |
mrmeshpy.Box_Vector3f_VTraits = VectorTraits_Vector3f |
mrmeshpy.Box_Vector3i_VTraits = VectorTraits_Vector3i |
mrmeshpy.Box_Vector3ll_VTraits = VectorTraits_Vector3ll |
mrmeshpy.ColorMapAggregator_FaceTag_ColorMap = FaceColors |
mrmeshpy.ColorMapAggregator_FaceTag_ElementBitSet = FaceBitSet |
mrmeshpy.ColorMapAggregator_UndirectedEdgeTag_ColorMap = UndirectedEdgeColors |
mrmeshpy.ColorMapAggregator_UndirectedEdgeTag_ElementBitSet = UndirectedEdgeBitSet |
mrmeshpy.ColorMapAggregator_VertTag_ColorMap = VertColors |
mrmeshpy.ColorMapAggregator_VertTag_ElementBitSet = VertBitSet |
mrmeshpy.ContinuousContour = std_vector_VariableEdgeTri |
mrmeshpy.ContinuousContours = std_vector_std_vector_VariableEdgeTri |
mrmeshpy.Contour2d = std_vector_Vector2_double |
mrmeshpy.Contour2f = std_vector_Vector2_float |
mrmeshpy.Contour3d = std_vector_Vector3_double |
mrmeshpy.Contour3f = std_vector_Vector3_float |
mrmeshpy.Contours2d = std_vector_std_vector_Vector2_double |
mrmeshpy.Contours2f = std_vector_std_vector_Vector2_float |
mrmeshpy.Contours3d = std_vector_std_vector_Vector3_double |
mrmeshpy.Contours3f = std_vector_std_vector_Vector3_float |
mrmeshpy.copyMesh = Mesh |
mrmeshpy.DecimatePolylineSettings2 = DecimatePolylineSettings_Vector2f |
mrmeshpy.DecimatePolylineSettings3 = DecimatePolylineSettings_Vector3f |
mrmeshpy.EdgeHashMap = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
mrmeshpy.EdgeId = Id_EdgeTag |
mrmeshpy.EdgeLoop = std_vector_Id_EdgeTag |
mrmeshpy.EdgeLoops = std_vector_std_vector_Id_EdgeTag |
mrmeshpy.EdgePath = std_vector_Id_EdgeTag |
mrmeshpy.EdgePathsBuilder = EdgePathsBuilderT_TrivialMetricToPenalty |
mrmeshpy.FaceHashMap = phmap_flat_hash_map_Id_FaceTag_Id_FaceTag |
mrmeshpy.FaceTreeTraits3 = AABBTreeTraits_FaceTag_Box3f |
mrmeshpy.FeaturesPropertyTypesVariant = std_variant_float_Vector3_float |
mrmeshpy.FileNamesStack = std_vector_std_filesystem_path |
mrmeshpy.FixSelfIntersectionMethod = SelfIntersections.Settings.Method |
mrmeshpy.FixSelfIntersectionSettings = SelfIntersections.Settings |
mrmeshpy.FloatGrid = OpenVdbFloatGrid |
mrmeshpy.GcodeSource = std_vector_std_string |
mrmeshpy.GeneralOffsetParametersMode = OffsetMode |
mrmeshpy.HashMap_EdgeId_EdgeId = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
mrmeshpy.HashMap_TaggedBitSet_EdgeTag_IndexType_TaggedBitSet_EdgeTag_IndexType = phmap_flat_hash_map_Id_EdgeTag_Id_EdgeTag |
mrmeshpy.HashMap_TaggedBitSet_ICPElemtTag_IndexType_TaggedBitSet_ICPElemtTag_IndexType = phmap_flat_hash_map_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.HashMap_TaggedBitSet_VoxelTag_IndexType_TaggedBitSet_VoxelTag_IndexType = phmap_flat_hash_map_Id_VoxelTag_Id_VoxelTag |
mrmeshpy.HistoryActionsVector = std_vector_std_shared_ptr_HistoryAction |
mrmeshpy.ICPElementBitSet = TaggedBitSet_ICPElemtTag |
mrmeshpy.ICPElementId = Id_ICPElemtTag |
mrmeshpy.ICPObjects = Vector_MeshOrPointsXf_ObjId |
mrmeshpy.ICPPairsGrid = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.IOFilters = std_vector_IOFilter |
mrmeshpy.IsoLine = std_vector_EdgePoint |
mrmeshpy.IsoLines = std_vector_std_vector_EdgePoint |
mrmeshpy.IteratorRange_LeftRingIterator = IteratorRange_RingIterator_NextEdgeSameLeft |
mrmeshpy.IteratorRange_OrgRingIterator = IteratorRange_RingIterator_NextEdgeSameOrigin |
mrmeshpy.LaplacianEdgeWeightsParam = EdgeWeights |
mrmeshpy.LeftRingIterator = RingIterator_NextEdgeSameLeft |
mrmeshpy.Line3dMesh = Line3Mesh_double |
mrmeshpy.Line3fMesh = Line3Mesh_float |
mrmeshpy.LineTreeTraits2 = AABBTreeTraits_UndirectedEdgeTag_Box2f |
mrmeshpy.LineTreeTraits3 = AABBTreeTraits_UndirectedEdgeTag_Box3f |
mrmeshpy.LoadedObject = LoadedObjectT |
mrmeshpy.LoadedObjectLines = LoadedObjectT_ObjectLines |
mrmeshpy.LoadedObjectMesh = LoadedObjectT_ObjectMesh |
mrmeshpy.LoadedObjectPoints = LoadedObjectT_ObjectPoints |
mrmeshpy.LoadedObjectT_Object = LoadedObjectT |
mrmeshpy.LoadedObjectVoxels = LoadedObjectT_ObjectVoxels |
mrmeshpy.Matrix2_bool_VectorType = Vector2b |
mrmeshpy.Matrix2_double_VectorType = Vector2d |
mrmeshpy.Matrix2_float_VectorType = Vector2f |
mrmeshpy.Matrix2_int_VectorType = Vector2i |
mrmeshpy.Matrix2_long_long_VectorType = Vector2ll |
mrmeshpy.Matrix3_bool_VectorType = Vector3b |
mrmeshpy.Matrix3_double_VectorType = Vector3d |
mrmeshpy.Matrix3_float_VectorType = Vector3f |
mrmeshpy.Matrix3_int_VectorType = Vector3i |
mrmeshpy.Matrix3_long_long_VectorType = Vector3ll |
mrmeshpy.Matrix4_bool_VectorType = Vector4b |
mrmeshpy.Matrix4_double_VectorType = Vector4d |
mrmeshpy.Matrix4_float_VectorType = Vector4f |
mrmeshpy.Matrix4_int_VectorType = Vector4i |
mrmeshpy.Matrix4_long_long_VectorType = Vector4ll |
mrmeshpy.MeshBuilderSettings = MeshBuilder.BuildSettings |
mrmeshpy.MeshDistanceResult = MeshMeshDistanceResult |
mrmeshpy.MeshEdgePoint = EdgePoint |
mrmeshpy.MeshLabel = PositionedText |
mrmeshpy.MeshOnVoxelsFunction = MeshOnVoxelsT_Mesh_FunctionVolume |
mrmeshpy.MeshOnVoxelsFunctionC = MeshOnVoxelsT_const_Mesh_FunctionVolume |
mrmeshpy.MeshOnVoxelsSimple = MeshOnVoxelsT_Mesh_SimpleVolumeMinMax |
mrmeshpy.MeshOnVoxelsSimpleC = MeshOnVoxelsT_const_Mesh_SimpleVolumeMinMax |
mrmeshpy.MeshOnVoxelsVdb = MeshOnVoxelsT_Mesh_VdbVolume |
mrmeshpy.MeshOnVoxelsVdbC = MeshOnVoxelsT_const_Mesh_VdbVolume |
mrmeshpy.MeshSignedDistanceResult = MeshMeshSignedDistanceResult |
mrmeshpy.MeshToVolumeParamsType = MeshToVolumeParams.Type |
mrmeshpy.MinMax_VoxelsVolume_std_vector_unsigned_short_ValueType = Box_unsigned_short |
mrmeshpy.MinMaxd = Box1d |
mrmeshpy.MinMaxf = Box1f |
mrmeshpy.MultiObjsSamples = std_vector_ObjVertId |
mrmeshpy.ObjectPtr = Object |
mrmeshpy.OffsetContoursVertMap = std_vector_OffsetContoursOrigins |
mrmeshpy.OffsetContoursVertMaps = std_vector_std_vector_OffsetContoursOrigins |
mrmeshpy.OneMeshContours = std_vector_OneMeshContour |
mrmeshpy.OrgRingIterator = RingIterator_NextEdgeSameOrigin |
mrmeshpy.phmap_flat_hash_map_FaceId_FaceId = phmap_flat_hash_map_Id_FaceTag_Id_FaceTag |
mrmeshpy.phmap_flat_hash_map_GraphEdgeId_GraphEdgeId = phmap_flat_hash_map_Id_GraphEdgeTag_Id_GraphEdgeTag |
mrmeshpy.phmap_flat_hash_map_GraphVertId_GraphVertId = phmap_flat_hash_map_Id_GraphVertTag_Id_GraphVertTag |
mrmeshpy.phmap_flat_hash_map_int_Box3i_phmap_Hash_int32_t = phmap_flat_hash_map_int_Box_Vector3_int |
mrmeshpy.phmap_flat_hash_map_NodeId_NodeId = phmap_flat_hash_map_Id_NodeTag_Id_NodeTag |
mrmeshpy.phmap_flat_hash_map_ObjId_ObjId = phmap_flat_hash_map_Id_ObjTag_Id_ObjTag |
mrmeshpy.phmap_flat_hash_map_PixelId_PixelId = phmap_flat_hash_map_Id_PixelTag_Id_PixelTag |
mrmeshpy.phmap_flat_hash_map_RegionId_RegionId = phmap_flat_hash_map_Id_RegionTag_Id_RegionTag |
mrmeshpy.phmap_flat_hash_map_TextureId_TextureId = phmap_flat_hash_map_Id_TextureTag_Id_TextureTag |
mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_Id_EdgeTag = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |
mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_int = phmap_flat_hash_map_Id_UndirectedEdgeTag_int |
mrmeshpy.phmap_flat_hash_map_UndirectedEdgeId_UndirectedEdgeId = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag |
mrmeshpy.phmap_flat_hash_map_unsigned_long_long_std_array_VertId_3_phmap_Hash_uint64_t = phmap_flat_hash_map_unsigned_long_long_std_array_Id_VertTag_3 |
mrmeshpy.phmap_flat_hash_map_VertId_float = phmap_flat_hash_map_Id_VertTag_float |
mrmeshpy.phmap_flat_hash_map_VertId_FlowAggregator_Flows = phmap_flat_hash_map_Id_VertTag_FlowAggregator_Flows |
mrmeshpy.phmap_flat_hash_map_VertId_VertId = phmap_flat_hash_map_Id_VertTag_Id_VertTag |
mrmeshpy.phmap_flat_hash_map_VertId_VertPathInfo = phmap_flat_hash_map_Id_VertTag_VertPathInfo |
mrmeshpy.PickedPoint = std_variant_MeshTriPoint_EdgePoint_Id_VertTag_int |
mrmeshpy.PlaneSection = std_vector_EdgePoint |
mrmeshpy.PlaneSections = std_vector_std_vector_EdgePoint |
mrmeshpy.Polynomial_double_0ULL_0_0_0ULL_minus_1 = Polynomial_double_0 |
mrmeshpy.Polynomial_double_1ULL_0_0_1ULL_minus_1 = Polynomial_double_0 |
mrmeshpy.Polynomial_double_2ULL_0_0_2ULL_minus_1 = Polynomial_double_1 |
mrmeshpy.Polynomial_double_3ULL_0_0_3ULL_minus_1 = Polynomial_double_2 |
mrmeshpy.Polynomial_double_4ULL_0_0_4ULL_minus_1 = Polynomial_double_3 |
mrmeshpy.Polynomial_double_5ULL_0_0_5ULL_minus_1 = Polynomial_double_4 |
mrmeshpy.Polynomial_double_6ULL_0_0_6ULL_minus_1 = Polynomial_double_5 |
mrmeshpy.Polynomial_float_0ULL_0_0_0ULL_minus_1 = Polynomial_float_0 |
mrmeshpy.Polynomial_float_1ULL_0_0_1ULL_minus_1 = Polynomial_float_0 |
mrmeshpy.Polynomial_float_2ULL_0_0_2ULL_minus_1 = Polynomial_float_1 |
mrmeshpy.Polynomial_float_3ULL_0_0_3ULL_minus_1 = Polynomial_float_2 |
mrmeshpy.Polynomial_float_4ULL_0_0_4ULL_minus_1 = Polynomial_float_3 |
mrmeshpy.Polynomial_float_5ULL_0_0_5ULL_minus_1 = Polynomial_float_4 |
mrmeshpy.Polynomial_float_6ULL_0_0_6ULL_minus_1 = Polynomial_float_5 |
mrmeshpy.PolynomialWrapperd = PolynomialWrapper_double |
mrmeshpy.PolynomialWrapperf = PolynomialWrapper_float |
mrmeshpy.Polynomialx_double = std_variant_Polynomial_double_0_Polynomial_double_1_Polynomial_double_2_Polynomial_double_3_Polynomial_double_4_Polynomial_double_5_Polynomial_double_6 |
mrmeshpy.Polynomialx_float = std_variant_Polynomial_float_0_Polynomial_float_1_Polynomial_float_2_Polynomial_float_3_Polynomial_float_4_Polynomial_float_5_Polynomial_float_6 |
mrmeshpy.QuadraticForm_Vector2d_SM = SymMatrix2d |
mrmeshpy.QuadraticForm_Vector2f_SM = SymMatrix2f |
mrmeshpy.QuadraticForm_Vector3d_SM = SymMatrix3d |
mrmeshpy.QuadraticForm_Vector3f_SM = SymMatrix3f |
mrmeshpy.RigidScaleXf3_double_V = Vector3d |
mrmeshpy.RigidScaleXf3_float_V = Vector3f |
mrmeshpy.RigidXf3_double_V = Vector3d |
mrmeshpy.RigidXf3_float_V = Vector3f |
mrmeshpy.SeparationPointMap = phmap_flat_hash_map_unsigned_long_long_std_array_Id_VertTag_3 |
mrmeshpy.SeparationPointSet = std_array_Id_VertTag_3 |
mrmeshpy.std_array_AffineXf3d_4 = std_array_AffineXf_Vector3_double_4 |
mrmeshpy.std_array_AffineXf3f_4 = std_array_AffineXf_Vector3_float_4 |
mrmeshpy.std_array_BooleanResultMapper_Maps_size_t_MapObject_Count = std_array_BooleanResultMapper_Maps_2 |
mrmeshpy.std_array_SimpleVolumeMinMax_3 = std_array_VoxelsVolumeMinMax_std_vector_float_3 |
mrmeshpy.std_array_std_filesystem_path_size_t_SystemFontType_Count = std_array_std_filesystem_path_4 |
mrmeshpy.std_array_Vector3d_3 = std_array_Vector3_double_3 |
mrmeshpy.std_array_Vector3f_3 = std_array_Vector3_float_3 |
mrmeshpy.std_array_Vector3i_3 = std_array_Vector3_int_3 |
mrmeshpy.std_array_VertId_3 = std_array_Id_VertTag_3 |
mrmeshpy.std_optional_Box1f = std_optional_Box_float |
mrmeshpy.std_optional_Box3f = std_optional_Box_Vector3_float |
mrmeshpy.std_optional_Vector2f = std_optional_Vector2_float |
mrmeshpy.std_optional_Vector3f = std_optional_Vector3_float |
mrmeshpy.std_shared_ptr_ChangeActiveBoxAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_ChangeDualMarchingCubesAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_ChangeGridAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_ChangeIsoAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_ChangeSurfaceAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_ChangVoxelSelectionAction_Obj = ObjectVoxels |
mrmeshpy.std_shared_ptr_GcodeSource = std_vector_std_string |
mrmeshpy.std_unique_ptr_NoDefInit_Id_EdgeTag_pointer = NoDefInit_Id_EdgeTag |
mrmeshpy.std_unique_ptr_NoDefInit_Id_ICPElemtTag_pointer = NoDefInit_Id_ICPElemtTag |
mrmeshpy.std_unique_ptr_NoDefInit_Id_VoxelTag_pointer = NoDefInit_Id_VoxelTag |
mrmeshpy.std_variant_FaceId_Id_EdgeTag_VertId = std_variant_Id_FaceTag_Id_EdgeTag_Id_VertTag |
mrmeshpy.std_variant_float_Vector3f = std_variant_float_Vector3_float |
mrmeshpy.std_variant_MeshTriPoint_EdgePoint_VertId_int = std_variant_MeshTriPoint_EdgePoint_Id_VertTag_int |
mrmeshpy.std_variant_Sphere3f_Features_Primitives_ConeSegment_Features_Primitives_Plane = std_variant_Sphere_Vector3_float_Features_Primitives_ConeSegment_Features_Primitives_Plane |
mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_FaceTag_Box3f = std_vector_AABBTreeNode_AABBTreeTraits_FaceTag_Box_Vector3_float |
mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box2f = std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box_Vector2_float |
mrmeshpy.std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box3f = std_vector_AABBTreeNode_AABBTreeTraits_UndirectedEdgeTag_Box_Vector3_float |
mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_const_reference = AABBTreeNode_ObjTreeTraits |
mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_reference = AABBTreeNode_ObjTreeTraits |
mrmeshpy.std_vector_AABBTreeNode_ObjTreeTraits_value_type = AABBTreeNode_ObjTreeTraits |
mrmeshpy.std_vector_AABBTreePoints_Node_const_reference = AABBTreePoints.Node |
mrmeshpy.std_vector_AABBTreePoints_Node_reference = AABBTreePoints.Node |
mrmeshpy.std_vector_AABBTreePoints_Node_value_type = AABBTreePoints.Node |
mrmeshpy.std_vector_AffineXf3f = std_vector_AffineXf_Vector3_float |
mrmeshpy.std_vector_Color_const_reference = Color |
mrmeshpy.std_vector_Color_reference = Color |
mrmeshpy.std_vector_Color_value_type = Color |
mrmeshpy.std_vector_const_Mesh = std_vector_Mesh_const |
mrmeshpy.std_vector_ContinuousContour = std_vector_std_vector_VariableEdgeTri |
mrmeshpy.std_vector_Dipole_const_reference = Dipole |
mrmeshpy.std_vector_Dipole_reference = Dipole |
mrmeshpy.std_vector_Dipole_value_type = Dipole |
mrmeshpy.std_vector_EdgeBitSet = std_vector_TaggedBitSet_EdgeTag |
mrmeshpy.std_vector_EdgeId = std_vector_Id_EdgeTag |
mrmeshpy.std_vector_EdgeLoop = std_vector_std_vector_Id_EdgeTag |
mrmeshpy.std_vector_EdgePair = std_vector_std_pair_Id_EdgeTag_Id_EdgeTag |
mrmeshpy.std_vector_EdgePath = std_vector_std_vector_Id_EdgeTag |
mrmeshpy.std_vector_FaceBitSet = std_vector_TaggedBitSet_FaceTag |
mrmeshpy.std_vector_FaceId = std_vector_Id_FaceTag |
mrmeshpy.std_vector_FanRecord_const_reference = FanRecord |
mrmeshpy.std_vector_FanRecord_reference = FanRecord |
mrmeshpy.std_vector_FanRecord_value_type = FanRecord |
mrmeshpy.std_vector_Graph_EndVertices_const_reference = Graph.EndVertices |
mrmeshpy.std_vector_Graph_EndVertices_reference = Graph.EndVertices |
mrmeshpy.std_vector_Graph_EndVertices_value_type = Graph.EndVertices |
mrmeshpy.std_vector_GraphEdgeId = std_vector_Id_GraphEdgeTag |
mrmeshpy.std_vector_GraphVertId = std_vector_Id_GraphVertTag |
mrmeshpy.std_vector_Heap_float_GraphVertId_std_greater_float_Element = std_vector_Heap_float_Id_GraphVertTag_std_greater_float_Element |
mrmeshpy.std_vector_ICPGroupPairs_const_reference = ICPGroupPairs |
mrmeshpy.std_vector_ICPGroupPairs_reference = ICPGroupPairs |
mrmeshpy.std_vector_ICPGroupPairs_value_type = ICPGroupPairs |
mrmeshpy.std_vector_Id_EdgeTag_const_reference = Id_EdgeTag |
mrmeshpy.std_vector_Id_EdgeTag_reference = Id_EdgeTag |
mrmeshpy.std_vector_Id_EdgeTag_value_type = Id_EdgeTag |
mrmeshpy.std_vector_Id_ICPElemtTag_const_reference = Id_ICPElemtTag |
mrmeshpy.std_vector_Id_ICPElemtTag_reference = Id_ICPElemtTag |
mrmeshpy.std_vector_Id_ICPElemtTag_value_type = Id_ICPElemtTag |
mrmeshpy.std_vector_Id_VoxelTag_const_reference = Id_VoxelTag |
mrmeshpy.std_vector_Id_VoxelTag_reference = Id_VoxelTag |
mrmeshpy.std_vector_Id_VoxelTag_value_type = Id_VoxelTag |
mrmeshpy.std_vector_Line3dMesh = std_vector_Line3Mesh_double |
mrmeshpy.std_vector_Line3fMesh = std_vector_Line3Mesh_float |
mrmeshpy.std_vector_LineSegm3f = std_vector_LineSegm_Vector3_float |
mrmeshpy.std_vector_MeshBuilder_VertSpan_const_reference = MeshBuilder.VertSpan |
mrmeshpy.std_vector_MeshBuilder_VertSpan_reference = MeshBuilder.VertSpan |
mrmeshpy.std_vector_MeshBuilder_VertSpan_value_type = MeshBuilder.VertSpan |
mrmeshpy.std_vector_MeshEdgePoint = std_vector_EdgePoint |
mrmeshpy.std_vector_MeshOrPointsXf_const_reference = MeshOrPointsXf |
mrmeshpy.std_vector_MeshOrPointsXf_reference = MeshOrPointsXf |
mrmeshpy.std_vector_MeshOrPointsXf_value_type = MeshOrPointsXf |
mrmeshpy.std_vector_MeshTexture_const_reference = MeshTexture |
mrmeshpy.std_vector_MeshTexture_reference = MeshTexture |
mrmeshpy.std_vector_MeshTexture_value_type = MeshTexture |
mrmeshpy.std_vector_ModelPointsData_const_reference = ModelPointsData |
mrmeshpy.std_vector_ModelPointsData_reference = ModelPointsData |
mrmeshpy.std_vector_ModelPointsData_value_type = ModelPointsData |
mrmeshpy.std_vector_NodeId = std_vector_Id_NodeTag |
mrmeshpy.std_vector_ObjectPtr = std_vector_std_shared_ptr_Object |
mrmeshpy.std_vector_ObjId = std_vector_Id_ObjTag |
mrmeshpy.std_vector_OffsetContoursVertMap = std_vector_std_vector_OffsetContoursOrigins |
mrmeshpy.std_vector_PixelId = std_vector_Id_PixelTag |
mrmeshpy.std_vector_PlanarTriangulation_ContourIdMap = std_vector_std_vector_PlanarTriangulation_IntersectionInfo |
mrmeshpy.std_vector_Polyline3 = std_vector_Polyline_Vector3_float |
mrmeshpy.std_vector_QuadraticForm2f = std_vector_QuadraticForm_Vector2_float |
mrmeshpy.std_vector_QuadraticForm3f = std_vector_QuadraticForm_Vector3_float |
mrmeshpy.std_vector_RegionId = std_vector_Id_RegionTag |
mrmeshpy.std_vector_RigidXf3d = std_vector_RigidXf3_double |
mrmeshpy.std_vector_size_t = std_vector_unsigned_long_long |
mrmeshpy.std_vector_std_array_Vector3f_3 = std_vector_std_array_Vector3_float_3 |
mrmeshpy.std_vector_std_array_VertId_3 = std_vector_std_array_Id_VertTag_3 |
mrmeshpy.std_vector_std_pair_size_t_size_t = std_vector_std_pair_unsigned_long_long_unsigned_long_long |
mrmeshpy.std_vector_std_pair_Vector3f_Vector3f = std_vector_std_pair_Vector3_float_Vector3_float |
mrmeshpy.std_vector_std_pair_VertId_VertId = std_vector_std_pair_Id_VertTag_Id_VertTag |
mrmeshpy.std_vector_std_shared_ptr_const_Object = std_vector_std_shared_ptr_Object_const |
mrmeshpy.std_vector_std_variant_Sphere3f_Features_Primitives_ConeSegment_Features_Primitives_Plane = std_vector_std_variant_Sphere_Vector3_float_Features_Primitives_ConeSegment_Features_Primitives_Plane |
mrmeshpy.std_vector_std_vector_EdgePoint_const_reference = std_vector_EdgePoint |
mrmeshpy.std_vector_std_vector_EdgePoint_reference = std_vector_EdgePoint |
mrmeshpy.std_vector_std_vector_EdgePoint_value_type = std_vector_EdgePoint |
mrmeshpy.std_vector_std_vector_GraphEdgeId = std_vector_std_vector_Id_GraphEdgeTag |
mrmeshpy.std_vector_std_vector_ObjVertId_const_reference = std_vector_ObjVertId |
mrmeshpy.std_vector_std_vector_ObjVertId_reference = std_vector_ObjVertId |
mrmeshpy.std_vector_std_vector_ObjVertId_value_type = std_vector_ObjVertId |
mrmeshpy.std_vector_std_vector_Vector2d = std_vector_std_vector_Vector2_double |
mrmeshpy.std_vector_std_vector_Vector2f = std_vector_std_vector_Vector2_float |
mrmeshpy.std_vector_std_vector_Vector3d = std_vector_std_vector_Vector3_double |
mrmeshpy.std_vector_std_vector_Vector3f = std_vector_std_vector_Vector3_float |
mrmeshpy.std_vector_std_vector_VertId = std_vector_std_vector_Id_VertTag |
mrmeshpy.std_vector_SurfacePath = std_vector_std_vector_EdgePoint |
mrmeshpy.std_vector_SystemPath_SystemFontPaths = std_vector_std_array_std_filesystem_path_4 |
mrmeshpy.std_vector_TextureId = std_vector_Id_TextureTag |
mrmeshpy.std_vector_tl_expected_VoxelsLoad_DicomVolume_std_string = std_vector_tl_expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_std_vector_float_std_string |
mrmeshpy.std_vector_tl_expected_VoxelsLoad_DicomVolumeAsVdb_std_string = std_vector_tl_expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_std_shared_ptr_OpenVdbFloatGrid_std_string |
mrmeshpy.std_vector_TriPointf = std_vector_TriPoint_float |
mrmeshpy.std_vector_uint8_t = std_vector_unsigned_char |
mrmeshpy.std_vector_UndirectedEdgeBitSet = std_vector_TaggedBitSet_UndirectedEdgeTag |
mrmeshpy.std_vector_UndirectedEdgeId = std_vector_Id_UndirectedEdgeTag |
mrmeshpy.std_vector_VdbVolume = std_vector_VoxelsVolumeMinMax_std_shared_ptr_OpenVdbFloatGrid |
mrmeshpy.std_vector_Vector2d = std_vector_Vector2_double |
mrmeshpy.std_vector_Vector2f = std_vector_Vector2_float |
mrmeshpy.std_vector_Vector3d = std_vector_Vector3_double |
mrmeshpy.std_vector_Vector3f = std_vector_Vector3_float |
mrmeshpy.std_vector_Vector3i = std_vector_Vector3_int |
mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_const_reference = Vector_ICPGroupPairs_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_reference = Vector_ICPGroupPairs_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_ICPGroupPairs_Id_ICPElemtTag_value_type = Vector_ICPGroupPairs_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_const_reference = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_reference = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_std_vector_ObjVertId_Id_ICPElemtTag_value_type = Vector_std_vector_ObjVertId_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_const_reference = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_reference = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.std_vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_value_type = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.std_vector_VertBitSet = std_vector_TaggedBitSet_VertTag |
mrmeshpy.std_vector_VertId = std_vector_Id_VertTag |
mrmeshpy.std_vector_VoxelBitSet = std_vector_TaggedBitSet_VoxelTag |
mrmeshpy.std_vector_WatershedGraph_BasinInfo_const_reference = WatershedGraph.BasinInfo |
mrmeshpy.std_vector_WatershedGraph_BasinInfo_reference = WatershedGraph.BasinInfo |
mrmeshpy.std_vector_WatershedGraph_BasinInfo_value_type = WatershedGraph.BasinInfo |
mrmeshpy.std_vector_WatershedGraph_BdInfo_const_reference = WatershedGraph.BdInfo |
mrmeshpy.std_vector_WatershedGraph_BdInfo_reference = WatershedGraph.BdInfo |
mrmeshpy.std_vector_WatershedGraph_BdInfo_value_type = WatershedGraph.BdInfo |
mrmeshpy.SurfacePath = std_vector_EdgePoint |
mrmeshpy.SurfacePaths = std_vector_std_vector_EdgePoint |
mrmeshpy.TaggedBitSet_EdgeTag_IndexType = Id_EdgeTag |
mrmeshpy.TaggedBitSet_FaceTag_IndexType = FaceId |
mrmeshpy.TaggedBitSet_GraphEdgeTag_IndexType = GraphEdgeId |
mrmeshpy.TaggedBitSet_GraphVertTag_IndexType = GraphVertId |
mrmeshpy.TaggedBitSet_NodeTag_IndexType = NodeId |
mrmeshpy.TaggedBitSet_ObjTag_IndexType = ObjId |
mrmeshpy.TaggedBitSet_PixelTag_IndexType = PixelId |
mrmeshpy.TaggedBitSet_RegionTag_IndexType = RegionId |
mrmeshpy.TaggedBitSet_TextureTag_IndexType = TextureId |
mrmeshpy.TaggedBitSet_UndirectedEdgeTag_IndexType = UndirectedEdgeId |
mrmeshpy.TaggedBitSet_VertTag_IndexType = VertId |
mrmeshpy.TaggedBitSet_VoxelTag_IndexType = Id_VoxelTag |
mrmeshpy.TextAlignParams = TextMeshAlignParams |
mrmeshpy.ThreePoints = std_array_Vector3_float_3 |
mrmeshpy.ThreeVertIds = std_array_Id_VertTag_3 |
mrmeshpy.tl_expected_VoxelsLoad_DicomVolume_std_string = expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_std_vector_float_std_string |
mrmeshpy.tl_expected_VoxelsLoad_DicomVolumeAsVdb_std_string = expected_VoxelsLoad_DicomVolumeT_VoxelsVolumeMinMax_std_shared_ptr_OpenVdbFloatGrid_std_string |
mrmeshpy.Triangle3d = std_array_Vector3_double_3 |
mrmeshpy.Triangle3f = std_array_Vector3_float_3 |
mrmeshpy.Triangle3i = std_array_Vector3_int_3 |
mrmeshpy.TriangleCornerNormals = std_array_Vector3_float_3 |
mrmeshpy.TrianglesRepetitions = std_array_int_4 |
mrmeshpy.TriangulationHelpersSettings = TriangulationHelpers.Settings |
mrmeshpy.UndirectedEdgeHashMap = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_UndirectedEdgeTag |
mrmeshpy.UVCoord = Vector2f |
mrmeshpy.VdbVolumes = std_vector_VoxelsVolumeMinMax_std_shared_ptr_OpenVdbFloatGrid |
mrmeshpy.Vector2_bool_MatrixType = Matrix2b |
mrmeshpy.Vector2_bool_SymMatrixType = SymMatrix2b |
mrmeshpy.Vector2_double_MatrixType = Matrix2d |
mrmeshpy.Vector2_double_SymMatrixType = SymMatrix2d |
mrmeshpy.Vector2_float_MatrixType = Matrix2f |
mrmeshpy.Vector2_float_SymMatrixType = SymMatrix2f |
mrmeshpy.Vector2_int_MatrixType = Matrix2i |
mrmeshpy.Vector2_int_SymMatrixType = SymMatrix2i |
mrmeshpy.Vector2_long_long_MatrixType = Matrix2ll |
mrmeshpy.Vector2_long_long_SymMatrixType = SymMatrix2ll |
mrmeshpy.Vector3_bool_MatrixType = Matrix3b |
mrmeshpy.Vector3_bool_SymMatrixType = SymMatrix3b |
mrmeshpy.Vector3_double_MatrixType = Matrix3d |
mrmeshpy.Vector3_double_SymMatrixType = SymMatrix3d |
mrmeshpy.Vector3_float_MatrixType = Matrix3f |
mrmeshpy.Vector3_float_SymMatrixType = SymMatrix3f |
mrmeshpy.Vector3_int_MatrixType = Matrix3i |
mrmeshpy.Vector3_int_SymMatrixType = SymMatrix3i |
mrmeshpy.Vector3_long_long_MatrixType = Matrix3ll |
mrmeshpy.Vector3_long_long_SymMatrixType = SymMatrix3ll |
mrmeshpy.Vector4_bool_MatrixType = Matrix4b |
mrmeshpy.Vector4_bool_SymMatrixType = SymMatrix4b |
mrmeshpy.Vector4_double_MatrixType = Matrix4d |
mrmeshpy.Vector4_double_SymMatrixType = SymMatrix4d |
mrmeshpy.Vector4_float_MatrixType = Matrix4f |
mrmeshpy.Vector4_float_SymMatrixType = SymMatrix4f |
mrmeshpy.Vector4_int_MatrixType = Matrix4i |
mrmeshpy.Vector4_int_SymMatrixType = SymMatrix4i |
mrmeshpy.Vector4_long_long_MatrixType = Matrix4ll |
mrmeshpy.Vector4_long_long_SymMatrixType = SymMatrix4ll |
mrmeshpy.Vector_Color_FaceId_const_reference = Color |
mrmeshpy.Vector_Color_FaceId_reference = Color |
mrmeshpy.Vector_Color_FaceId_value_type = Color |
mrmeshpy.Vector_Color_Id_EdgeTag_const_reference = Color |
mrmeshpy.Vector_Color_Id_EdgeTag_reference = Color |
mrmeshpy.Vector_Color_Id_EdgeTag_value_type = Color |
mrmeshpy.Vector_Color_UndirectedEdgeId_const_reference = Color |
mrmeshpy.Vector_Color_UndirectedEdgeId_reference = Color |
mrmeshpy.Vector_Color_UndirectedEdgeId_value_type = Color |
mrmeshpy.Vector_Color_VertId_const_reference = Color |
mrmeshpy.Vector_Color_VertId_reference = Color |
mrmeshpy.Vector_Color_VertId_value_type = Color |
mrmeshpy.Vector_Dipole_NodeId_const_reference = Dipole |
mrmeshpy.Vector_Dipole_NodeId_reference = Dipole |
mrmeshpy.Vector_Dipole_NodeId_value_type = Dipole |
mrmeshpy.Vector_FaceId_FaceId_const_reference = FaceId |
mrmeshpy.Vector_FaceId_FaceId_reference = FaceId |
mrmeshpy.Vector_FaceId_FaceId_value_type = FaceId |
mrmeshpy.Vector_ICPPairsGrid_ICPLayer = Vector_Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag_int |
mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_const_reference = Id_EdgeTag |
mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_reference = Id_EdgeTag |
mrmeshpy.Vector_Id_EdgeTag_Id_EdgeTag_value_type = Id_EdgeTag |
mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_const_reference = Id_EdgeTag |
mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_reference = Id_EdgeTag |
mrmeshpy.Vector_Id_EdgeTag_UndirectedEdgeId_value_type = Id_EdgeTag |
mrmeshpy.Vector_ObjId_ObjId_const_reference = ObjId |
mrmeshpy.Vector_ObjId_ObjId_reference = ObjId |
mrmeshpy.Vector_ObjId_ObjId_value_type = ObjId |
mrmeshpy.Vector_RegionId_FaceId_const_reference = RegionId |
mrmeshpy.Vector_RegionId_FaceId_reference = RegionId |
mrmeshpy.Vector_RegionId_FaceId_value_type = RegionId |
mrmeshpy.Vector_RegionId_UndirectedEdgeId_const_reference = RegionId |
mrmeshpy.Vector_RegionId_UndirectedEdgeId_reference = RegionId |
mrmeshpy.Vector_RegionId_UndirectedEdgeId_value_type = RegionId |
mrmeshpy.Vector_RegionId_VertId_const_reference = RegionId |
mrmeshpy.Vector_RegionId_VertId_reference = RegionId |
mrmeshpy.Vector_RegionId_VertId_value_type = RegionId |
mrmeshpy.Vector_std_array_VertId_3_FaceId_const_reference = std_array_Id_VertTag_3 |
mrmeshpy.Vector_std_array_VertId_3_FaceId_reference = std_array_Id_VertTag_3 |
mrmeshpy.Vector_std_array_VertId_3_FaceId_value_type = std_array_Id_VertTag_3 |
mrmeshpy.Vector_TaggedBitSet_ICPElemtTag_IndexType_TaggedBitSet_ICPElemtTag_IndexType = Vector_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.Vector_TaggedBitSet_VoxelTag_IndexType_TaggedBitSet_VoxelTag_IndexType = Vector_Id_VoxelTag_Id_VoxelTag |
mrmeshpy.Vector_TextureId_FaceId_const_reference = TextureId |
mrmeshpy.Vector_TextureId_FaceId_reference = TextureId |
mrmeshpy.Vector_TextureId_FaceId_value_type = TextureId |
mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_const_reference = UndirectedEdgeId |
mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_reference = UndirectedEdgeId |
mrmeshpy.Vector_UndirectedEdgeId_UndirectedEdgeId_value_type = UndirectedEdgeId |
mrmeshpy.Vector_Vector2f_VertId_const_reference = Vector2f |
mrmeshpy.Vector_Vector2f_VertId_reference = Vector2f |
mrmeshpy.Vector_Vector2f_VertId_value_type = Vector2f |
mrmeshpy.Vector_Vector3f_FaceId_const_reference = Vector3f |
mrmeshpy.Vector_Vector3f_FaceId_reference = Vector3f |
mrmeshpy.Vector_Vector3f_FaceId_value_type = Vector3f |
mrmeshpy.Vector_Vector3f_VertId_const_reference = Vector3f |
mrmeshpy.Vector_Vector3f_VertId_reference = Vector3f |
mrmeshpy.Vector_Vector3f_VertId_value_type = Vector3f |
mrmeshpy.Vector_Vector_ICPGroupPairs_ICPElementId_ICPElementId = Vector_Vector_ICPGroupPairs_Id_ICPElemtTag_Id_ICPElemtTag |
mrmeshpy.Vector_VertId_VertId_const_reference = VertId |
mrmeshpy.Vector_VertId_VertId_reference = VertId |
mrmeshpy.Vector_VertId_VertId_value_type = VertId |
mrmeshpy.vectorConstMeshPtr = std_vector_Mesh_const |
mrmeshpy.vectorEdges = std_vector_Id_EdgeTag |
mrmeshpy.VertHashMap = phmap_flat_hash_map_Id_VertTag_Id_VertTag |
mrmeshpy.VertNormals = VertCoords |
mrmeshpy.VertPathInfoMap = phmap_flat_hash_map_Id_VertTag_VertPathInfo |
mrmeshpy.ViewportProperty_uint8_t = ViewportProperty_unsigned_char |
mrmeshpy.VoxelId = Id_VoxelTag |
mrmeshpy.VoxelsSaveSavingSettings = VoxelsSave.SavingSettings |
mrmeshpy.WholeEdgeHashMap = phmap_flat_hash_map_Id_UndirectedEdgeTag_Id_EdgeTag |