MeshLib C# Docs
Loading...
Searching...
No Matches
MR Class Reference

Public Types

enum  BooleanOperation {
  InsideA , InsideB , OutsideA , OutsideB ,
  Union , Intersection , DifferenceBA , DifferenceAB ,
  Count
}
 
enum  FlipEdge { Can , Cannot , Must }
 
enum  PathError { StartEndNotConnected , InternalError }
 
enum  DirtyFlags
 
enum  SlicePlane
 
enum  PdfBuildinFont : int {
  Courier = 0 , CourierBold = 1 , CourierOblique = 2 , CourierBoldOblique = 3 ,
  Helvetica = 4 , HelveticaBold = 5 , HelveticaOblique = 6 , HelveticaBoldOblique = 7 ,
  TimesRoman = 8 , TimesBold = 9 , TimesItalic = 10 , TimesBoldItalic = 11 ,
  Symbol = 12 , ZapfDingbats = 13 , Count = 14
}
 Fonts included in libharu please note that using default font does not allow UTF-8 encoding.
 
enum  Axis : int { X = 0 , Y = 1 , Z = 2 , Count = 3 }
 
enum  BooleanOperation : int {
  InsideA = 0 , InsideB = 1 , OutsideA = 2 , OutsideB = 3 ,
  Union = 4 , Intersection = 5 , DifferenceBA = 6 , DifferenceAB = 7 ,
  Count = 8
}
 Enum class of available CSG operations. More...
 
enum  ConeFitterType : int { ApproximationPCM = 0 , HemisphereSearchFit = 1 , SpecificAxisFit = 2 }
 
enum  FilterType : byte { Linear = 0 , Discrete = 1 }
 
enum  WrapType : byte { Repeat = 0 , Mirror = 1 , Clamp = 2 }
 
enum  Reorder : byte { None = 0 , Lexicographically = 1 , AABBTree = 2 }
 determines how points to be ordered More...
 
enum  VertexMass : int { Unit = 0 , NeiArea = 1 }
 determines the weight or mass of each vertex in applications like Laplacian More...
 
enum  EdgeWeights : int { Unit = 0 , Cotan = 1 }
 determines the weight of each edge in applications like Laplacian More...
 
enum  Processing : byte { Continue = 0 , Stop = 1 }
 typically returned from callbacks to control the behavior of main algorithm This enum is intended to be boolean.
 
enum  OrientNormals : int { TowardOrigin = 0 , AwayFromOrigin = 1 , Smart = 2 }
 the method how to choose between two opposite normal orientations
 
enum  OffsetMode : int { Smooth = 0 , Standard = 1 , Sharpening = 2 }
 
enum  ColoringType : int {
  SolidColor = 0 , PrimitivesColorMap = 1 , FacesColorMap = 1 , LinesColorMap = 1 ,
  VertsColorMap = 2
}
 Type of object coloring,. More...
 
enum  UseAABBTree : byte { No = 0 , Yes = 1 , YesIfAlreadyConstructed = 2 }
 
enum  GeodesicPathApprox : byte { DijkstraBiDir = 0 , DijkstraAStar = 1 , FastMarching = 2 }
 the algorithm to compute approximately geodesic path More...
 
enum  Turn : byte { Leftmost = 0 , Rightmost = 1 }
 what way a path can follow in case of several alternatives This enum is intended to be boolean.
 
enum  FeaturesObjectKind : int {
  Point = 0 , Line = 1 , Plane = 2 , Circle = 3 ,
  Sphere = 4 , Cylinder = 5 , Cone = 6 , Count = 7
}
 Which object type we're adding. Update ObjKindTraits if you change this enum.
 
enum  FeaturePropertyKind : int {
  Position = 0 , LinearDimension = 1 , Direction = 2 , Angle = 3 ,
  Other = 4
}
 
enum  FeatureVisualizePropertyType : int { Subfeatures = 0 , DetailsOnNameTag = 1 , Count = 2 }
 
enum  ICPMethod : int { Combined = 0 , PointToPoint = 1 , PointToPlane = 2 }
 The method how to update transformation from point pairs. More...
 
enum  ICPMode : int {
  RigidScale = 0 , AnyRigidXf = 1 , OrthogonalAxis = 2 , FixedAxis = 3 ,
  TranslationOnly = 4
}
 The group of transformations, each with its own degrees of freedom. More...
 
enum  ICPExitType : int {
  NotStarted = 0 , NotFoundSolution = 1 , MaxIterations = 2 , MaxBadIterations = 3 ,
  StopMsdReached = 4
}
 
enum  Side : int { Negative = 0 , Positive = 1 }
 
enum  DepthFunction : int {
  Never = 0 , Less = 1 , Equal = 2 , Greater = 4 ,
  LessOrEqual = 3 , GreaterOrEqual = 6 , NotEqual = 5 , Always = 7 ,
  Default = 8
}
 
enum  DecimateStrategy : int { MinimizeError = 0 , ShortestEdgeFirst = 1 }
 Defines the order of edge collapses inside Decimate algorithm.
 
enum  FlipEdge : int { Can = 0 , Cannot = 1 , Must = 2 }
 
enum  ProcessOneResult : byte { StopProcessing = 0 , ContinueProcessing = 1 }
 This enum is intended to be boolean.
 
enum  DimensionsVisualizePropertyType : int { Diameter = 0 , Angle = 1 , Length = 2 , Count = 3 }
 
enum  LinesVisualizePropertyType : int { Points = 0 , Smooth = 1 , Dashed = 2 , Count = 3 }
 
enum  MeshVisualizePropertyType : int {
  Faces = 0 , Texture = 1 , Edges = 2 , Points = 3 ,
  SelectedFaces = 4 , SelectedEdges = 5 , EnableShading = 6 , FlatShading = 7 ,
  OnlyOddFragments = 8 , BordersHighlight = 9 , PolygonOffsetFromCamera = 10 , Count = 11
}
 
enum  PointsVisualizePropertyType : int { SelectedVertices = 0 , Count = 1 }
 
enum  ObjectSelectivityType : int {
  Selectable = 0 , LocalSelectable = 1 , Selected = 2 , LocalSelected = 3 ,
  Any = 4
}
 
enum  OutlierTypeMask : int {
  SmallComponents = 1 , WeaklyConnected = 2 , FarSurface = 4 , AwayNormal = 8 ,
  All = 15
}
 Types of outlier points. More...
 
enum  PointMeasurementVisualizePropertyType : int { CapVisibility = 0 , Count = 1 }
 
enum  OutEdge2 : sbyte {
  Invalid = -1 , PlusY = 0 , MinusY = 1 , PlusX = 2 ,
  MinusX = 3 , Count = 4
}
 
enum  RelaxApproxType : int { Planar = 0 , Quadric = 1 }
 
enum  RenderModelPassMask : int {
  Opaque = 1 , Transparent = 2 , VolumeRendering = 4 , NoDepthTest = 8 ,
  All = 15
}
 Various passes of the 3D rendering.
 
enum  NeighborDir : int { X = 0 , Y = 1 , Z = 2 , Count = 3 }
 
enum  SignDetectionMode : int {
  Unsigned = 0 , OpenVDB = 1 , ProjectionNormal = 2 , WindingRule = 3 ,
  HoleWindingRule = 4
}
 how to determine the sign of distances from a mesh More...
 
enum  SignDetectionModeShort : int { Auto = 0 , HoleWindingNumber = 1 , ProjectionNormal = 2 }
 how to determine the sign of distances from a mesh, short version including auto-detection More...
 
enum  PathError : int { StartEndNotConnected = 0 , InternalError = 1 }
 
enum  ExtremeEdgeType : int { Ridge = 0 , Gorge = 1 }
 
enum  NestedComponenetsMode : int { Remove = 0 , Merge = 1 , Union = 2 }
 Mode of processing components. More...
 
enum  NoUnit : int { Count = 0 }
 
enum  LengthUnit : int {
  Microns = 0 , Millimeters = 1 , Centimeters = 2 , Meters = 3 ,
  Inches = 4 , Feet = 5 , Count = 6
}
 
enum  AngleUnit : int { Radians = 0 , Degrees = 1 , Count = 2 }
 
enum  PixelSizeUnit : int { Pixels = 0 , Count = 1 }
 
enum  RatioUnit : int { Factor = 0 , Percents = 1 , Count = 2 }
 
enum  TimeUnit : int { Seconds = 0 , Milliseconds = 1 , Count = 2 }
 
enum  MovementSpeedUnit : int {
  MicronsPerSecond = 0 , MillimetersPerSecond = 1 , CentimetersPerSecond = 2 , MetersPerSecond = 3 ,
  InchesPerSecond = 4 , FeetPerSecond = 5 , Count = 6
}
 
enum  AreaUnit : int {
  Microns2 = 0 , Millimeters2 = 1 , Centimeters2 = 2 , Meters2 = 3 ,
  Inches2 = 4 , Feet2 = 5 , Count = 6
}
 
enum  VolumeUnit : int {
  Microns3 = 0 , Millimeters3 = 1 , Centimeters3 = 2 , Meters3 = 3 ,
  Inches3 = 4 , Feet3 = 5 , Count = 6
}
 
enum  InvLengthUnit : int {
  InvMicrons = 0 , InvMillimeters = 1 , InvCentimeters = 2 , InvMeters = 3 ,
  InvInches = 4 , InvFeet = 5 , Count = 6
}
 
enum  VisualizeMaskType : int {
  Visibility = 0 , InvertedNormals = 1 , Name = 2 , ClippedByPlane = 3 ,
  DepthTest = 4 , Count = 5
}
 
enum  DirtyFlags : int {
  DIRTYNONE = 0 , DIRTYPOSITION = 1 , DIRTYUV = 2 , DIRTYVERTSRENDERNORMAL = 4 ,
  DIRTYFACESRENDERNORMAL = 8 , DIRTYCORNERSRENDERNORMAL = 16 , DIRTYRENDERNORMALS = 28 , DIRTYSELECTION = 32 ,
  DIRTYTEXTURE = 64 , DIRTYPRIMITIVES = 128 , DIRTYFACE = 128 , DIRTYVERTSCOLORMAP = 256 ,
  DIRTYPRIMITIVECOLORMAP = 512 , DIRTYFACESCOLORMAP = 512 , DIRTYTEXTUREPERFACE = 1024 , DIRTYMESH = 2047 ,
  DIRTYBOUNDINGBOX = 2048 , DIRTYBORDERLINES = 4096 , DIRTYEDGESSELECTION = 8192 , DIRTYCACHES = 2048 ,
  DIRTYVOLUME = 16384 , DIRTYALL = 32767
}
 
enum  OutEdge : sbyte {
  Invalid = -1 , PlusZ = 0 , MinusZ = 1 , PlusY = 2 ,
  MinusY = 3 , PlusX = 4 , MinusX = 5 , Count = 6
}
 
enum  LabelVisualizePropertyType : int {
  SourcePoint = 0 , LeaderLine = 1 , Background = 2 , Contour = 3 ,
  Count = 4
}
 
enum  AlignType : int { Left = 0 , Center = 1 , Right = 2 }
 
enum  ScalarType : int {
  UInt8 = 0 , Int8 = 1 , UInt16 = 2 , Int16 = 3 ,
  UInt32 = 4 , Int32 = 5 , UInt64 = 6 , Int64 = 7 ,
  Float32 = 8 , Float64 = 9 , Float32_4 = 10 , Unknown = 11 ,
  Count = 12
}
 scalar value's binary format type More...
 
enum  BypassDirection : int { Clockwise = 0 , CounterClockwise = 1 }
 
enum  MoveType : int {
  None = -1 , FastLinear = 0 , Linear = 1 , ArcCW = 2 ,
  ArcCCW = 3
}
 
enum  ArcPlane : int { None = -1 , XY = 17 , XZ = 18 , YZ = 19 }
 
enum  VoxelFilterType : int { Median = 0 , Mean = 1 , Gaussian = 2 }
 
enum  QuarterBit : byte {
  LeftLeft = 1 , LeftRight = 2 , RightLeft = 4 , RightRight = 8 ,
  All = 15
}
 
enum  SlicePlane : int { YZ = 0 , ZX = 1 , XY = 2 , None = 3 }
 Plane of slice in which to find path. More...
 
typedef std::vector< VarEdgeTri > PreciseCollisionResult
 
typedef std::function< ProcessOneResult(const Vector3f &p, FaceId f, const Vector3f &q, float distSq)> TriangleCallback
 
typedef std::function< bool(const MeshIntersectionResult &)> MeshIntersectionCallback
 
typedef std::function< Processing(FaceId found, Ball3f &ball)> FoundBoxedTriCallback
 
typedef std::function< Processing(const MeshProjectionResult &found, Ball3f &ball)> FoundTriCallback
 
typedef std::vector< OneMeshContour > OneMeshContours
 
typedef VertPair MultipleEdge
 
typedef std::array< Vector3f, 3 > TriangleCornerNormals
 
typedef std::function< bool(float)> ProgressCallback
 

Static Public Member Functions

static unsafe MR.LoadedObjectT deserializeObjectTreeFrom3mf (string file, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.deserializeObjectTreeFrom3mf. Parameter callback defaults to {}.
 
static unsafe MR.LoadedObjectT deserializeObjectTreeFromModel (string file, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.deserializeObjectTreeFromModel. Parameter callback defaults to {}.
 
static unsafe MR.Object deserializeObjectTreeFromGltf (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.deserializeObjectTreeFromGltf. Parameter callback defaults to {}.
 
static unsafe void serializeObjectTreeToGltf (MR.Const_Object root, string file, MR.ObjectSave.Const_Settings settings)
 Generated from function MR.serializeObjectTreeToGltf.
 
static void loadIOExtras ()
 Generated from function MR.loadIOExtras.
 
static unsafe void zlibCompressStream (MR.Std.Istream in_, MR.Std.Ostream out_, int? level=null)
 compress the input data using the Deflate algorithm
 
static unsafe void zlibDecompressStream (MR.Std.Istream in_, MR.Std.Ostream out_)
 /brief decompress the input data compressed using the Deflate algorithm
 
static int getNumNodes (int numLeaves)
 returns the number of nodes in the binary tree with given number of leaves Generated from function MR.getNumNodes.
 
static int getNumNodesPoints (int numPoints)
 Generated from function MR.getNumNodesPoints.
 
static unsafe void addNoise (MR.VertCoords points, MR.Const_VertBitSet validVerts, MR._ByValue_NoiseSettings settings)
 Generated from function MR.addNoise.
 
static unsafe void addNoise (MR.Mesh mesh, MR.Const_VertBitSet? region=null, MR.Const_NoiseSettings? settings=null)
 Generated from function MR.addNoise. Parameter settings defaults to {}.
 
static unsafe MR.Mesh alignContoursToMesh (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMRVector2f contours, MR.Const_ContoursMeshAlignParams params_)
 Creates planar mesh out of given contour and aligns it to given surface Generated from function MR.alignContoursToMesh.
 
static unsafe MR.Mesh bendContoursAlongCurve (MR.Std.Const_Vector_StdVectorMRVector2f contours, MR.Std.Const_Function_MRCurvePointFuncFromFloat curve, MR.Const_BendContoursAlongCurveParams params_)
 Converts contours in thick mesh, and deforms it along given path Generated from function MR.bendContoursAlongCurve.
 
static unsafe MR.Mesh bendContoursAlongSurfacePath (MR.Std.Const_Vector_StdVectorMRVector2f contours, MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Std.Const_Vector_MREdgePoint path, MR.Const_MeshTriPoint end, MR.Const_BendContoursAlongCurveParams params_)
 Converts contours in thick mesh, and deforms it along given surface path: start->path->end Generated from function MR.bendContoursAlongSurfacePath.
 
static unsafe MR.Mesh bendContoursAlongSurfacePath (MR.Std.Const_Vector_StdVectorMRVector2f contours, MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint path, MR.Const_BendContoursAlongCurveParams params_)
 Converts contours in thick mesh, and deforms it along given surface path Generated from function MR.bendContoursAlongSurfacePath.
 
static unsafe MR.Std.Vector_Float findPartialLens (MR.Std.Const_Vector_MRCurvePoint cp, bool? unitLength=null, MR.Misc.InOut< float >? outCurveLen=null)
 given a polyline by its vertices, computes partial lengths along the polyline from the initial point; return an error if the polyline is less than 2 points or all points have exactly the same location
 
static unsafe MR.CurvePoint getCurvePoint (MR.Std.Const_Vector_MRCurvePoint cp, MR.Std.Const_Vector_Float lens, float p)
 given a polyline by its vertices, and partial lengths as computed by findPartialLens, finds the location of curve point at the given parameter with extrapolation if p outside [0, lens.back()], execution time is logarithmic relative to the number of points Generated from function MR.getCurvePoint.
 
static unsafe MR.Std.Function_MRCurvePointFuncFromFloat curveFromPoints (MR.Std.Const_Vector_MRCurvePoint cp, bool? unitLength=null, MR.Misc.InOut< float >? outCurveLen=null)
 given a polyline by its vertices, returns curve function representing it; return an error if the polyline is less than 2 points or all points have exactly the same location
 
static unsafe MR.Std.Function_MRCurvePointFuncFromFloat curveFromPoints (MR.Misc._Moved< MR.Std.Vector_MRCurvePoint > cp, bool? unitLength=null, MR.Misc.InOut< float >? outCurveLen=null)
 Generated from function MR.curveFromPoints. Parameter unitLength defaults to true.
 
static unsafe MR.Std.Vector_MRCurvePoint meshPathCurvePoints (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Std.Const_Vector_MREdgePoint path, MR.Const_MeshTriPoint end)
 converts polyline given as a number of MeshTriPoint/MeshEdgePoint into CurvePoints Generated from function MR.meshPathCurvePoints.
 
static unsafe MR.Std.Vector_MRCurvePoint meshPathCurvePoints (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint path)
 Generated from function MR.meshPathCurvePoints.
 
static unsafe void addBaseToPlanarMesh (MR.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 note that this function also packs the mesh Generated from function MR.addBaseToPlanarMesh.
 
static unsafe MR.Mesh makeArrow (in MR.Vector3f base_, in MR.Vector3f vert, float? thickness=null, float? coneRadius=null, float? coneSize=null, int? qual=null)
 Generated from function MR.makeArrow. Parameter thickness defaults to 0.0500000007f. Parameter coneRadius defaults to 0.100000001f. Parameter coneSize defaults to 0.200000003f. Parameter qual defaults to 32.
 
static unsafe MR.Mesh makeBasisAxes (float? size=null, float? thickness=null, float? coneRadius=null, float? coneSize=null, int? qual=null)
 Generated from function MR.makeBasisAxes. Parameter size defaults to 1.0f. Parameter thickness defaults to 0.0500000007f. Parameter coneRadius defaults to 0.100000001f. Parameter coneSize defaults to 0.200000003f. Parameter qual defaults to 32.
 
static unsafe MR.Std.String encode64 (byte? data, ulong size)
 encodes binary data into textual Base64 format Generated from function MR.encode64.
 
static unsafe MR.Std.Vector_UnsignedChar decode64 (string val)
 decodes Base64 format into binary data Generated from function MR.decode64.
 
static unsafe double computeBasinVolume (MR.Const_Mesh mesh, MR.Const_FaceBitSet faces, float level)
 computes the volume of given mesh basin below given water level;
 
static unsafe void accumulatePoints (MR.PointAccumulator accum, MR.Std.Const_Vector_MRVector3f points, MR.AffineXf3f? xf=null)
 Adds in existing PointAccumulator all given points Generated from function MR.accumulatePoints.
 
static unsafe void accumulateWeighedPoints (MR.PointAccumulator accum, MR.Std.Const_Vector_MRVector3f points, MR.Std.Const_Vector_Float weights, MR.AffineXf3f? xf=null)
 Adds in existing PointAccumulator all given weighed points Generated from function MR.accumulateWeighedPoints.
 
static unsafe void accumulateFaceCenters (MR.PointAccumulator accum, MR.Const_MeshPart mp, MR.AffineXf3f? xf=null)
 Adds in existing PointAccumulator all mesh face centers with the weight equal to face area Generated from function MR.accumulateFaceCenters.
 
static unsafe void accumulateLineCenters (MR.PointAccumulator accum, MR.Const_Polyline3 pl, MR.AffineXf3f? xf=null)
 Adds in existing PointAccumulator all line centers with the weight equal to the length line Generated from function MR.accumulateLineCenters.
 
static unsafe void accumulatePoints (MR.PointAccumulator accum, MR.Const_PointCloudPart pcp, MR.AffineXf3f? xf=null)
 Adds in existing PointAccumulator all points from the cloud (region) with weight 1 Generated from function MR.accumulatePoints.
 
static bool canSolvePolynomial (ulong degree)
 Generated from function MR.canSolvePolynomial<MR_uint64_t>.
 
static bool canMinimizePolynomial (ulong degree)
 Generated from function MR.canMinimizePolynomial<MR_uint64_t>.
 
static unsafe ulong heapBytes (MR.Const_BitSet bs)
 returns the amount of memory given BitSet occupies on heap Generated from function MR.heapBytes.
 
static unsafe bool contains (MR.Const_FaceBitSet? bitset, MR.FaceId id)
 Generated from function MR.contains<MR.FaceId>.
 
static unsafe MR.Mesh doBooleanOperation (MR.Misc._Moved< MR.Mesh > meshACut, MR.Misc._Moved< MR.Mesh > meshBCut, MR.Std.Const_Vector_StdVectorMREdgeId cutEdgesA, MR.Std.Const_Vector_StdVectorMREdgeId cutEdgesB, MR.BooleanOperation operation, MR.AffineXf3f? rigidB2A=null, MR.BooleanResultMapper? mapper=null, bool? mergeAllNonIntersectingComponents=null, MR.Const_BooleanInternalParameters? intParams=null)
 Perform boolean operation on cut meshes.
 
static unsafe MR.UndirectedEdgeId getAt (MR.Const_Buffer_MRUndirectedEdgeId_MRUndirectedEdgeId bmap, MR.UndirectedEdgeId key, MR._InOpt_UndirectedEdgeId def=default)
 given some buffer map and a key, returns the value associated with the key, or default value if key is invalid Generated from function MR.getAt<MR.UndirectedEdgeId, MR.UndirectedEdgeId>. Parameter def defaults to {}.
 
static unsafe ulong chunkCount (ulong totalSize, ulong chunkSize, ulong? overlap=null)
 returns the amount of chunks of given size required to cover the full array Generated from function MR.chunkCount. Parameter overlap defaults to 0.
 
static unsafe MR.IteratorRange_MRChunkIterator splitByChunks (ulong totalSize, ulong chunkSize, ulong? overlap=null)
 returns a pair of iterators for chunks covering the array of given size Generated from function MR.splitByChunks. Parameter overlap defaults to 0.
 
static unsafe MR.PointAndDistance findClosestWeightedPoint (in MR.Vector3f loc, MR.Const_AABBTreePoints tree, MR.Const_DistanceFromWeightedPointsComputeParams params_)
 consider a point cloud where each point has additive weight, and the distance to a point is considered equal to (euclidean distance - weight), finds the point with minimal distance to given 3D location Generated from function MR.findClosestWeightedPoint.
 
static unsafe MR.MeshPointAndDistance findClosestWeightedMeshPoint (in MR.Vector3f loc, MR.Const_Mesh mesh, MR.Const_DistanceFromWeightedPointsComputeParams params_)
 consider a mesh where each vertex has additive weight, and this weight is linearly interpolated in mesh triangles, and the distance to a point is considered equal to (euclidean distance - weight), finds the point on given mesh with minimal distance to given 3D location Generated from function MR.findClosestWeightedMeshPoint.
 
static unsafe MR.Std.Optional_MRVertMap findSmallestCloseVertices (MR.Const_Mesh mesh, float closeDist, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.findSmallestCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertMap findSmallestCloseVertices (MR.Const_PointCloud cloud, float closeDist, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.findSmallestCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertMap findSmallestCloseVertices (MR.Const_VertCoords points, float closeDist, MR.Const_VertBitSet? valid=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.findSmallestCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertMap findSmallestCloseVerticesUsingTree (MR.Const_VertCoords points, float closeDist, MR.Const_AABBTreePoints tree, MR.Const_VertBitSet? valid, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.findSmallestCloseVerticesUsingTree. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertBitSet findCloseVertices (MR.Const_Mesh mesh, float closeDist, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 finds all close vertices, where for each vertex there is another one located within given distance Generated from function MR.findCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertBitSet findCloseVertices (MR.Const_PointCloud cloud, float closeDist, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 finds all close vertices, where for each vertex there is another one located within given distance Generated from function MR.findCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertBitSet findCloseVertices (MR.Const_VertCoords points, float closeDist, MR.Const_VertBitSet? valid=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 finds all close vertices, where for each vertex there is another one located within given distance Generated from function MR.findCloseVertices. Parameter cb defaults to {}.
 
static unsafe MR.VertBitSet findCloseVertices (MR.Const_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 Generated from function MR.findCloseVertices.
 
static unsafe MR.Std.Vector_StdPairMREdgeIdMREdgeId findTwinEdgePairs (MR.Const_Mesh mesh, float closeDist)
 finds pairs of twin edges (each twin edge will be present at least in one of pairs) Generated from function MR.findTwinEdgePairs.
 
static unsafe MR.EdgeBitSet findTwinEdges (MR.Const_Mesh mesh, float closeDist)
 finds all directed twin edges Generated from function MR.findTwinEdges.
 
static unsafe MR.EdgeBitSet findTwinEdges (MR.Std.Const_Vector_StdPairMREdgeIdMREdgeId pairs)
 Generated from function MR.findTwinEdges.
 
static unsafe MR.UndirectedEdgeBitSet findTwinUndirectedEdges (MR.Const_Mesh mesh, float closeDist)
 finds all undirected twin edges Generated from function MR.findTwinUndirectedEdges.
 
static unsafe MR.UndirectedEdgeBitSet findTwinUndirectedEdges (MR.Std.Const_Vector_StdPairMREdgeIdMREdgeId pairs)
 Generated from function MR.findTwinUndirectedEdges.
 
static unsafe MR.Phmap.FlatHashMap_MRUndirectedEdgeId_MRUndirectedEdgeId findTwinUndirectedEdgeHashMap (MR.Const_Mesh mesh, float closeDist)
 provided that each edge has at most one twin, composes bidirectional mapping between twins Generated from function MR.findTwinUndirectedEdgeHashMap.
 
static unsafe MR.Phmap.FlatHashMap_MRUndirectedEdgeId_MRUndirectedEdgeId findTwinUndirectedEdgeHashMap (MR.Std.Const_Vector_StdPairMREdgeIdMREdgeId pairs)
 Generated from function MR.findTwinUndirectedEdgeHashMap.
 
static unsafe MR.Color blend (in MR.Color front, in MR.Color back)
 Blend two colors together.
 
static unsafe float calcOrientedArea (MR.Std.Const_Vector_MRVector2f contour)
 >0 for clockwise loop, < 0 for CCW loop
 
static unsafe double calcOrientedArea (MR.Std.Const_Vector_MRVector2d contour)
 >0 for clockwise loop, < 0 for CCW loop
 
static unsafe MR.Vector3f calcOrientedArea (MR.Std.Const_Vector_MRVector3f contour)
 returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip
 
static unsafe MR.Vector3d calcOrientedArea (MR.Std.Const_Vector_MRVector3d contour)
 returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip
 
static unsafe float calcLength (MR.Std.Const_Vector_MRVector2f contour)
 returns sum length of the given contour
 
static unsafe double calcLength (MR.Std.Const_Vector_MRVector2d contour)
 returns sum length of the given contour
 
static unsafe float calcLength (MR.Std.Const_Vector_MRVector3f contour)
 returns sum length of the given contour
 
static unsafe double calcLength (MR.Std.Const_Vector_MRVector3d contour)
 returns sum length of the given contour
 
static unsafe MR.Std.Vector_MRVector2f convertContourTo2f (MR.Std.Const_Vector_MRVector2f from)
 Generated from function MR.convertContourTo2f<std.vector<MR.Vector2f>>.
 
static unsafe MR.Std.Vector_MRVector2f convertContourTo2f (MR.Std.Const_Vector_MRVector2d from)
 Generated from function MR.convertContourTo2f<std.vector<MR.Vector2d>>.
 
static unsafe MR.Std.Vector_MRVector2f convertContourTo2f (MR.Std.Const_Vector_MRVector3f from)
 Generated from function MR.convertContourTo2f<std.vector<MR.Vector3f>>.
 
static unsafe MR.Std.Vector_MRVector2f convertContourTo2f (MR.Std.Const_Vector_MRVector3d from)
 Generated from function MR.convertContourTo2f<std.vector<MR.Vector3d>>.
 
static unsafe MR.Std.Vector_MRVector3f convertContourTo3f (MR.Std.Const_Vector_MRVector2f from)
 Generated from function MR.convertContourTo3f<std.vector<MR.Vector2f>>.
 
static unsafe MR.Std.Vector_MRVector3f convertContourTo3f (MR.Std.Const_Vector_MRVector2d from)
 Generated from function MR.convertContourTo3f<std.vector<MR.Vector2d>>.
 
static unsafe MR.Std.Vector_MRVector3f convertContourTo3f (MR.Std.Const_Vector_MRVector3f from)
 Generated from function MR.convertContourTo3f<std.vector<MR.Vector3f>>.
 
static unsafe MR.Std.Vector_MRVector3f convertContourTo3f (MR.Std.Const_Vector_MRVector3d from)
 Generated from function MR.convertContourTo3f<std.vector<MR.Vector3d>>.
 
static unsafe MR.Std.Vector_MRVector2d convertContourTo2d (MR.Std.Const_Vector_MRVector2f from)
 Generated from function MR.convertContourTo2d<std.vector<MR.Vector2f>>.
 
static unsafe MR.Std.Vector_MRVector2d convertContourTo2d (MR.Std.Const_Vector_MRVector2d from)
 Generated from function MR.convertContourTo2d<std.vector<MR.Vector2d>>.
 
static unsafe MR.Std.Vector_MRVector2d convertContourTo2d (MR.Std.Const_Vector_MRVector3f from)
 Generated from function MR.convertContourTo2d<std.vector<MR.Vector3f>>.
 
static unsafe MR.Std.Vector_MRVector2d convertContourTo2d (MR.Std.Const_Vector_MRVector3d from)
 Generated from function MR.convertContourTo2d<std.vector<MR.Vector3d>>.
 
static unsafe MR.Std.Vector_MRVector3d convertContourTo3d (MR.Std.Const_Vector_MRVector2f from)
 Generated from function MR.convertContourTo3d<std.vector<MR.Vector2f>>.
 
static unsafe MR.Std.Vector_MRVector3d convertContourTo3d (MR.Std.Const_Vector_MRVector2d from)
 Generated from function MR.convertContourTo3d<std.vector<MR.Vector2d>>.
 
static unsafe MR.Std.Vector_MRVector3d convertContourTo3d (MR.Std.Const_Vector_MRVector3f from)
 Generated from function MR.convertContourTo3d<std.vector<MR.Vector3f>>.
 
static unsafe MR.Std.Vector_MRVector3d convertContourTo3d (MR.Std.Const_Vector_MRVector3d from)
 Generated from function MR.convertContourTo3d<std.vector<MR.Vector3d>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f convertContoursTo2f (MR.Std.Const_Vector_StdVectorMRVector2f from)
 Generated from function MR.convertContoursTo2f<std.vector<std.vector<MR.Vector2f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f convertContoursTo2f (MR.Std.Const_Vector_StdVectorMRVector2d from)
 Generated from function MR.convertContoursTo2f<std.vector<std.vector<MR.Vector2d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f convertContoursTo2f (MR.Std.Const_Vector_StdVectorMRVector3f from)
 Generated from function MR.convertContoursTo2f<std.vector<std.vector<MR.Vector3f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f convertContoursTo2f (MR.Std.Const_Vector_StdVectorMRVector3d from)
 Generated from function MR.convertContoursTo2f<std.vector<std.vector<MR.Vector3d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f convertContoursTo3f (MR.Std.Const_Vector_StdVectorMRVector2f from)
 Generated from function MR.convertContoursTo3f<std.vector<std.vector<MR.Vector2f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f convertContoursTo3f (MR.Std.Const_Vector_StdVectorMRVector2d from)
 Generated from function MR.convertContoursTo3f<std.vector<std.vector<MR.Vector2d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f convertContoursTo3f (MR.Std.Const_Vector_StdVectorMRVector3f from)
 Generated from function MR.convertContoursTo3f<std.vector<std.vector<MR.Vector3f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f convertContoursTo3f (MR.Std.Const_Vector_StdVectorMRVector3d from)
 Generated from function MR.convertContoursTo3f<std.vector<std.vector<MR.Vector3d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2d convertContoursTo2d (MR.Std.Const_Vector_StdVectorMRVector2f from)
 Generated from function MR.convertContoursTo2d<std.vector<std.vector<MR.Vector2f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2d convertContoursTo2d (MR.Std.Const_Vector_StdVectorMRVector2d from)
 Generated from function MR.convertContoursTo2d<std.vector<std.vector<MR.Vector2d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2d convertContoursTo2d (MR.Std.Const_Vector_StdVectorMRVector3f from)
 Generated from function MR.convertContoursTo2d<std.vector<std.vector<MR.Vector3f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector2d convertContoursTo2d (MR.Std.Const_Vector_StdVectorMRVector3d from)
 Generated from function MR.convertContoursTo2d<std.vector<std.vector<MR.Vector3d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3d convertContoursTo3d (MR.Std.Const_Vector_StdVectorMRVector2f from)
 Generated from function MR.convertContoursTo3d<std.vector<std.vector<MR.Vector2f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3d convertContoursTo3d (MR.Std.Const_Vector_StdVectorMRVector2d from)
 Generated from function MR.convertContoursTo3d<std.vector<std.vector<MR.Vector2d>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3d convertContoursTo3d (MR.Std.Const_Vector_StdVectorMRVector3f from)
 Generated from function MR.convertContoursTo3d<std.vector<std.vector<MR.Vector3f>>>.
 
static unsafe MR.Std.Vector_StdVectorMRVector3d convertContoursTo3d (MR.Std.Const_Vector_StdVectorMRVector3d from)
 Generated from function MR.convertContoursTo3d<std.vector<std.vector<MR.Vector3d>>>.
 
static unsafe MR.CutMeshResult cutMesh (MR.Mesh mesh, MR.Std.Const_Vector_MROneMeshContour contours, MR.Const_CutMeshParameters? params_=null)
 Cuts mesh by given contours This function cuts mesh making new edges paths on place of input contours.
 
static unsafe MR.FaceBitSet cutMeshByContour (MR.Mesh mesh, MR.Std.Const_Vector_MRVector3f contour, MR.AffineXf3f? xf=null)
 Cuts mesh by contour by projecting all the points.
 
static unsafe MR.FaceBitSet cutMeshByContours (MR.Mesh mesh, MR.Std.Const_Vector_StdVectorMRVector3f contours, MR.AffineXf3f? xf=null)
 Cuts mesh by contours by projecting all the points.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId cutMeshByProjection (MR.Mesh mesh, MR.Std.Const_Vector_StdVectorMRVector3f contours, MR.Const_CutByProjectionSettings settings)
 Performs orthographic projection with of given contours to mesh and cut result lines, fails if any point of contours has missed mesh on projection stage or cut contours contains self-intersections.
 
static unsafe MR.Std.Vector_MROneMeshContour convertMeshTriPointsSurfaceOffsetToMeshContours (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, float offset, MR.Const_SearchPathSettings? searchSettings=null)
 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 surfaceLine and build offset contour on surface for MR.cutMesh input.
 
static unsafe MR.Std.Vector_MROneMeshContour convertMeshTriPointsSurfaceOffsetToMeshContours (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, MR.Std.Const_Function_FloatFuncFromInt offsetAtPoint, MR.Const_SearchPathSettings? searchSettings=null)
 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 surfaceLine and build offset contour on surface for MR.cutMesh input.
 
static unsafe MR.Std.Vector_MRFaceBitSet separateClosedContour (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRVector3f contour, MR.Std.Const_Function_VoidFuncFromConstMREdgePointRef? cb=null)
 Generated from function MR.separateClosedContour. Parameter cb defaults to {}.
 
static unsafe void stitchContours (MR.MeshTopology topology, MR.Std.Const_Vector_MREdgeId c0, MR.Std.Const_Vector_MREdgeId 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 Generated from function MR.stitchContours.
 
static unsafe MR.Std.Vector_MREdgeId cutAlongEdgeLoop (MR.MeshTopology topology, MR.Std.Const_Vector_MREdgeId 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; Generated from function MR.cutAlongEdgeLoop.
 
static unsafe MR.Std.Vector_MREdgeId cutAlongEdgeLoop (MR.Mesh mesh, MR.Std.Const_Vector_MREdgeId 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 Generated from function MR.cutAlongEdgeLoop.
 
static unsafe MR.Mesh makeConvexHull (MR.Const_VertCoords points, MR.Const_VertBitSet validPoints)
 Generated from function MR.makeConvexHull.
 
static unsafe MR.Mesh makeConvexHull (MR.Const_Mesh in_)
 Generated from function MR.makeConvexHull.
 
static unsafe MR.Mesh makeConvexHull (MR.Const_PointCloud in_)
 Generated from function MR.makeConvexHull.
 
static unsafe MR.Std.Vector_MRVector2f makeConvexHull (MR.Std._ByValue_Vector_MRVector2f points)
 Generated from function MR.makeConvexHull.
 
static unsafe MR.MeshTopology makeCubeTopology ()
 creates cube's topology with 8 vertices, 12 triangular faces, 18 undirected edges. The order of vertices: 0_v: x=min, y=min, z=min 1_v: x=min, y=max, z=min 2_v: x=max, y=max, z=min 3_v: x=max, y=min, z=min 4_v: x=min, y=min, z=max 5_v: x=min, y=max, z=max 6_v: x=max, y=max, z=max 7_v: x=max, y=min, z=max Generated from function MR.makeCubeTopology.
 
static unsafe MR.Mesh makeCube (MR.Vector3f? size=null, MR.Vector3f? base_=null)
 creates box mesh with given min-corner (base) and given size in every dimension; with default parameters, creates unit cube mesh with the centroid in (0,0,0) Generated from function MR.makeCube. Parameter size defaults to Vector3f.diagonal(1.0f). Parameter base_ defaults to Vector3f.diagonal(-0.5f).
 
static unsafe MR.Mesh makeParallelepiped (MR.Vector3f? side, in MR.Vector3f base_)
 creates parallelepiped mesh with given min-corner base and given directional vectors size Generated from function MR.makeParallelepiped.
 
static unsafe MR.Mesh makeBoxMesh (in MR.Box3f box)
 creates mesh visualizing a box Generated from function MR.makeBoxMesh.
 
static unsafe MR.Mesh makeCylinder (float? radius=null, float? length=null, int? resolution=null)
 Generated from function MR.makeCylinder. Parameter radius defaults to 0.100000001f. Parameter length defaults to 1.0f. Parameter resolution defaults to 16.
 
static unsafe MR.Mesh makeOpenCylinder (float? radius=null, float? z1=null, float? z2=null, int? numCircleSegments=null)
 Generated from function MR.makeOpenCylinder. Parameter radius defaults to 1. Parameter z1 defaults to -1. Parameter z2 defaults to 1. Parameter numCircleSegments defaults to 16.
 
static unsafe MR.Mesh makeOpenCone (float? radius=null, float? zApex=null, float? zBase=null, int? numCircleSegments=null)
 Generated from function MR.makeOpenCone. Parameter radius defaults to 1. Parameter zApex defaults to 0. Parameter zBase defaults to 1. Parameter numCircleSegments defaults to 16.
 
static unsafe MR.Mesh makeCylinderAdvanced (float? radius0=null, float? radius1=null, float? start_angle=null, float? arc_size=null, float? length=null, int? resolution=null)
 Generated from function MR.makeCylinderAdvanced. Parameter radius0 defaults to 0.100000001f. Parameter radius1 defaults to 0.100000001f. Parameter start_angle defaults to 0.0f. Parameter arc_size defaults to 2.0f*PI_F. Parameter length defaults to 1.0f. Parameter resolution defaults to 16.
 
static unsafe MR.Mesh makeCone (float? radius0=null, float? length=null, int? resolution=null)
 Generated from function MR.makeCone. Parameter radius0 defaults to 0.100000001f. Parameter length defaults to 1.0f. Parameter resolution defaults to 32.
 
static unsafe void calcDipoles (MR.Dipoles dipoles, MR.Const_AABBTree tree, MR.Const_Mesh mesh)
 calculates dipoles for given mesh and AABB-tree Generated from function MR.calcDipoles.
 
static unsafe MR.Dipoles calcDipoles (MR.Const_AABBTree tree, MR.Const_Mesh mesh)
 Generated from function MR.calcDipoles.
 
static unsafe float calcFastWindingNumber (MR.Const_Dipoles dipoles, MR.Const_AABBTree tree, MR.Const_Mesh mesh, in MR.Vector3f q, float beta, MR.FaceId skipFace)
 compute approximate winding number at
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_Mesh m, MR.UseAABBTree? u=null)
 finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_MeshPart mp, MR.UseAABBTree? u=null)
 finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_MeshVertPart mp, MR.UseAABBTree? u=null)
 finds the vertex in the mesh part having the largest projection on given direction, optionally uses aabb-points-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_Polyline3 polyline, MR.UseAABBTree? u=null)
 finds the vertex in the polyline having the largest projection on given direction, optionally uses aabb-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector2f dir, MR.Const_Polyline2 polyline, MR.UseAABBTree? u=null)
 finds the vertex in the polyline having the largest projection on given direction, optionally uses aabb-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_PointCloud cloud, MR.Const_VertBitSet? region=null, MR.UseAABBTree? u=null)
 finds the point in the cloud having the largest projection on given direction, optionally uses aabb-tree inside for faster computation Generated from function MR.findDirMax. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.VertId findDirMax (in MR.Vector3f dir, MR.Const_AABBTreePoints tree, MR.Const_VertBitSet? region=null)
 finds the point in the tree having the largest projection on given direction Generated from function MR.findDirMax.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector3f dir, MR.Const_VertCoords points, MR.Const_VertBitSet? region=null)
 finds the point having the largest projection on given direction by traversing all region points Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector2f dir, MR.Const_VertCoords2 points, MR.Const_VertBitSet? region=null)
 finds the point having the largest projection on given direction by traversing all region points Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector3f dir, MR.Const_PointCloud cloud, MR.Const_VertBitSet? region=null)
 finds the point in the cloud having the largest projection on given direction by traversing all valid points Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector3f dir, MR.Const_Polyline3 polyline)
 finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector2f dir, MR.Const_Polyline2 polyline)
 finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector3f dir, MR.Const_MeshPart mp)
 finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) faces Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.VertId findDirMaxBruteForce (in MR.Vector3f dir, MR.Const_MeshVertPart mp)
 finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) vertices Generated from function MR.findDirMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector3f dir, MR.Const_VertCoords points, MR.Const_VertBitSet? region=null)
 finds the points having the smallest and the largest projections on given direction by traversing all region points Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector2f dir, MR.Const_VertCoords2 points, MR.Const_VertBitSet? region=null)
 finds the points having the smallest and the largest projections on given direction by traversing all region points Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector3f dir, MR.Const_PointCloud cloud, MR.Const_VertBitSet? region=null)
 finds the points in the cloud having the smallest and the largest projections on given direction by traversing all valid points Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector3f dir, MR.Const_Polyline3 polyline)
 finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector2f dir, MR.Const_Polyline2 polyline)
 finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector3f dir, MR.Const_MeshPart mp)
 finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) faces Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.MinMaxArg_Float_MRVertId findDirMinMaxBruteForce (in MR.Vector3f dir, MR.Const_MeshVertPart mp)
 finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) vertices Generated from function MR.findDirMinMaxBruteForce.
 
static unsafe MR.DistanceMap combineXYderivativeMaps (MR.Std._ByValue_Pair_MRDistanceMap_MRDistanceMap XYderivativeMaps)
 fill another distance map pair with gradients across X and Y axes of the argument map Generated from function MR.combineXYderivativeMaps.
 
static unsafe MR.DistanceMap computeDistanceMap (MR.Const_MeshPart mp, MR.Const_MeshToDistanceMapParams params_, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.Std.Vector_MRMeshTriPoint? outSamples=null)
 computes distance (height) map for given projection parameters using float-precision for finding ray-mesh intersections, which is faster but less reliable Generated from function MR.computeDistanceMap. Parameter cb defaults to {}.
 
static unsafe MR.DistanceMap computeDistanceMapD (MR.Const_MeshPart mp, MR.Const_MeshToDistanceMapParams params_, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.Std.Vector_MRMeshTriPoint? outSamples=null)
 computes distance (height) map for given projection parameters using double-precision for finding ray-mesh intersections, which is slower but more reliable Generated from function MR.computeDistanceMapD. Parameter cb defaults to {}.
 
static unsafe MR.DistanceMap distanceMapFromContours (MR.Const_Polyline2 contours, MR.Const_ContourToDistanceMapParams params_, MR.Const_ContoursDistanceMapOptions? options=null)
 Computes distance of 2d contours according ContourToDistanceMapParams.
 
static unsafe void distanceMapFromContours (MR.DistanceMap distMap, MR.Const_Polyline2 polyline, MR.Const_ContourToDistanceMapParams params_, MR.Const_ContoursDistanceMapOptions? options=null)
 Computes distance of 2d contours according ContourToDistanceMapParams.
 
static unsafe MR.Std.Vector_MRVector3f edgePointsFromContours (MR.Const_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.
 
static unsafe MR.Polyline2 distanceMapTo2DIsoPolyline (MR.Const_DistanceMap distMap, float isoValue)
 converts distance map to 2d iso-lines: iso-lines are created in space DistanceMap ( plane OXY with pixelSize = (1, 1) ) Generated from function MR.distanceMapTo2DIsoPolyline.
 
static unsafe MR.Polyline2 distanceMapTo2DIsoPolyline (MR.Const_DistanceMap distMap, MR.Const_ContourToDistanceMapParams params_, float isoValue)
 iso-lines are created in real space ( plane OXY with parameters according ContourToDistanceMapParams ) Generated from function MR.distanceMapTo2DIsoPolyline.
 
static unsafe MR.Std.Pair_MRPolyline2_MRAffineXf3f distanceMapTo2DIsoPolyline (MR.Const_DistanceMap distMap, in MR.AffineXf3f xf, float isoValue, bool? useDepth=null)
 computes iso-lines of distance map corresponding to given iso-value; in second returns the transformation from 0XY plane to world;
 
static unsafe MR.Polyline2 distanceMapTo2DIsoPolyline (MR.Const_DistanceMap distMap, float pixelSize, float isoValue)
 Generated from function MR.distanceMapTo2DIsoPolyline.
 
static unsafe MR.Polyline2 polylineOffset (MR.Const_Polyline2 polyline, float pixelSize, float offset)
 constructs an offset contour for given polyline Generated from function MR.polylineOffset.
 
static unsafe MR.Polyline2 contourUnion (MR.Const_Polyline2 contoursA, MR.Const_Polyline2 contoursB, MR.Const_ContourToDistanceMapParams params_, float? offsetInside=null)
 computes the union of the shapes bounded by input 2d contours
 
static unsafe MR.Polyline2 contourIntersection (MR.Const_Polyline2 contoursA, MR.Const_Polyline2 contoursB, MR.Const_ContourToDistanceMapParams params_, float? offsetInside=null)
 computes the intersection of the shapes bounded by input 2d contours
 
static unsafe MR.Polyline2 contourSubtract (MR.Const_Polyline2 contoursA, MR.Const_Polyline2 contoursB, MR.Const_ContourToDistanceMapParams params_, float? offsetInside=null)
 computes the difference between the shapes bounded by contoursA and the shapes bounded by contoursB
 
static unsafe MR.Mesh distanceMapToMesh (MR.Const_DistanceMap distMap, in MR.AffineXf3f toWorld, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 converts distance map into mesh and applies a transformation to all points Generated from function MR.distanceMapToMesh. Parameter cb defaults to {}.
 
static unsafe MR.Image convertDistanceMapToImage (MR.Const_DistanceMap distMap, float? threshold=null)
 export distance map to a grayscale image
 
static unsafe MR.DistanceMap convertImageToDistanceMap (MR.Const_Image image, float? threshold=null, bool? invert=null)
 load distance map from a grayscale image:
 
static unsafe MR.IteratorRange_MRUndirectedEdgeIterator undirectedEdges (MR.Const_MeshTopology topology)
 Generated from function MR.undirectedEdges.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId identityMetric ()
 metric returning 1 for every edge Generated from function MR.identityMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId edgeLengthMetric (MR.Const_Mesh mesh)
 returns edge's length as a metric; this metric is symmetric: m(e) == m(e.sym()) Generated from function MR.edgeLengthMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId edgeLengthMetric (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 Generated from function MR.edgeLengthMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId discreteAbsMeanCurvatureMetric (MR.Const_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()) Generated from function MR.discreteAbsMeanCurvatureMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId discreteAbsMeanCurvatureMetric (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 Generated from function MR.discreteAbsMeanCurvatureMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId discreteMinusAbsMeanCurvatureMetric (MR.Const_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()) Generated from function MR.discreteMinusAbsMeanCurvatureMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId discreteMinusAbsMeanCurvatureMetric (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 Generated from function MR.discreteMinusAbsMeanCurvatureMetric.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId edgeCurvMetric (MR.Const_Mesh mesh, float? angleSinFactor=null, float? angleSinForBoundary=null)
 returns edge's metric that depends both on edge's length and on the angle between its left and right faces
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId edgeCurvMetric (MR.Const_MeshTopology topology, MR.Const_VertCoords points, float? angleSinFactor=null, float? angleSinForBoundary=null)
 Generated from function MR.edgeCurvMetric. Parameter angleSinFactor defaults to 2. Parameter angleSinForBoundary defaults to 0.
 
static unsafe MR.Std.Function_FloatFuncFromMREdgeId edgeTableSymMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId 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()) Generated from function MR.edgeTableSymMetric.
 
static unsafe bool isEdgePath (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId edges)
 returns true if every next edge starts where previous edge ends Generated from function MR.isEdgePath.
 
static unsafe bool isEdgeLoop (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId edges)
 returns true if every next edge starts where previous edge ends, and start vertex coincides with finish vertex Generated from function MR.isEdgeLoop.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId splitOnSimpleLoops (MR.Const_MeshTopology topology, MR.Misc._Moved< MR.Std.Vector_StdVectorMREdgeId > loops)
 given a number of edge loops, splits every loop that passes via a vertex more than once on smaller loops without self-intersections Generated from function MR.splitOnSimpleLoops.
 
static unsafe void reverse (MR.Std.Vector_MREdgeId path)
 reverses the order of edges and flips each edge orientation, thus making the opposite directed edge path Generated from function MR.reverse.
 
static unsafe void reverse (MR.Std.Vector_StdVectorMREdgeId paths)
 reverse every path in the vector Generated from function MR.reverse.
 
static unsafe double calcPathMetric (MR.Std.Const_Vector_MREdgeId path, MR.Std._ByValue_Function_FloatFuncFromMREdgeId metric)
 computes summed metric of all edges in the path Generated from function MR.calcPathMetric.
 
static unsafe double calcPathLength (MR.Std.Const_Vector_MREdgeId path, MR.Const_Mesh mesh)
 Generated from function MR.calcPathLength.
 
static unsafe MR.Vector3d calcOrientedArea (MR.Std.Const_Vector_MREdgeId loop, MR.Const_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 Generated from function MR.calcOrientedArea.
 
static unsafe void sortPathsByMetric (MR.Std.Vector_StdVectorMREdgeId paths, MR.Std._ByValue_Function_FloatFuncFromMREdgeId metric)
 sorts given paths in ascending order of their metrics Generated from function MR.sortPathsByMetric.
 
static unsafe void sortPathsByLength (MR.Std.Vector_StdVectorMREdgeId paths, MR.Const_Mesh mesh)
 Generated from function MR.sortPathsByLength.
 
static unsafe void addLeftBand (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId loop, MR.FaceBitSet addHere)
 adds all faces incident to loop vertices and located to the left from the loop to given FaceBitSet Generated from function MR.addLeftBand.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPath (MR.Const_Mesh mesh, MR.VertId start, MR.VertId finish, float? maxPathLen=null)
 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 Generated from function MR.buildShortestPath. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPathBiDir (MR.Const_Mesh mesh, MR.VertId start, MR.VertId finish, float? maxPathLen=null)
 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 Generated from function MR.buildShortestPathBiDir. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPathBiDir (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint finish, MR.Misc.InOut< MR.VertId >? outPathStart=null, MR.Misc.InOut< MR.VertId >? outPathFinish=null, float? maxPathLen=null)
 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 Generated from function MR.buildShortestPathBiDir. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPathAStar (MR.Const_Mesh mesh, MR.VertId start, MR.VertId finish, float? maxPathLen=null)
 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 Generated from function MR.buildShortestPathAStar. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPathAStar (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint finish, MR.Misc.InOut< MR.VertId >? outPathStart=null, MR.Misc.InOut< MR.VertId >? outPathFinish=null, float? maxPathLen=null)
 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 Generated from function MR.buildShortestPathAStar. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildShortestPath (MR.Const_Mesh mesh, MR.VertId start, MR.Const_VertBitSet finish, float? maxPathLen=null)
 builds shortest path in euclidean metric from start to finish vertices; if no path can be found then empty path is returned Generated from function MR.buildShortestPath. Parameter maxPathLen defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildSmallestMetricPath (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.VertId start, MR.VertId finish, float? maxPathMetric=null)
 builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned Generated from function MR.buildSmallestMetricPath. Parameter maxPathMetric defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildSmallestMetricPathBiDir (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.VertId start, MR.VertId finish, float? maxPathMetric=null)
 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 Generated from function MR.buildSmallestMetricPathBiDir. Parameter maxPathMetric defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildSmallestMetricPathBiDir (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Const_TerminalVertex? starts, int numStarts, MR.Const_TerminalVertex? finishes, int numFinishes, MR.Misc.InOut< MR.VertId >? outPathStart=null, MR.Misc.InOut< MR.VertId >? outPathFinish=null, float? maxPathMetric=null)
 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 Generated from function MR.buildSmallestMetricPathBiDir. Parameter maxPathMetric defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MREdgeId buildSmallestMetricPath (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.VertId start, MR.Const_VertBitSet finish, float? maxPathMetric=null)
 builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned Generated from function MR.buildSmallestMetricPath. Parameter maxPathMetric defaults to 3.40282347e38f.
 
static unsafe MR.Std.Vector_MRVertId getVertexOrdering (MR.Const_MeshTopology topology, MR._ByValue_VertBitSet region)
 returns all vertices from given region ordered in each connected component in breadth-first way Generated from function MR.getVertexOrdering.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId extractClosedLoops (MR.Const_MeshTopology topology, MR.EdgeBitSet edges)
 finds all closed loops from given edges and removes them from edges Generated from function MR.extractClosedLoops.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId extractClosedLoops (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId inEdges, MR.EdgeBitSet? outNotLoopEdges=null)
 Generated from function MR.extractClosedLoops.
 
static unsafe MR.Std.Vector_MREdgeId extractLongestClosedLoop (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgeId inEdges)
 Generated from function MR.extractLongestClosedLoop.
 
static unsafe bool dilateRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 expands the region (of faces or vertices) on given metric value. returns false if callback also returns false Generated from function MR.dilateRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool dilateRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool dilateRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool erodeRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 shrinks the region (of faces or vertices) on given metric value. returns false if callback also returns false Generated from function MR.erodeRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool erodeRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool erodeRegionByMetric (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegionByMetric. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_Mesh mesh, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 expands the region (of faces or vertices) on given value (in meters). returns false if callback also returns false Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_Mesh mesh, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_Mesh mesh, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool dilateRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.dilateRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_Mesh mesh, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 shrinks the region (of faces or vertices) on given value (in meters). returns false if callback also returns false Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_Mesh mesh, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_Mesh mesh, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.erodeRegion. Parameter callback defaults to {}.
 
static unsafe int getPathPlaneIntersections (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgeId path, MR.Const_Plane3f plane, MR.Std.Vector_MREdgePoint? outIntersections=null)
 finds all intersection points between given path and plane, adds them in outIntersections and returns their number Generated from function MR.getPathPlaneIntersections.
 
static unsafe int getContourPlaneIntersections (MR.Std.Const_Vector_MRVector3f path, MR.Const_Plane3f plane, MR.Std.Vector_MRVector3f? outIntersections=null)
 finds all intersection points between given contour and plane, adds them in outIntersections and returns their number Generated from function MR.getContourPlaneIntersections.
 
static unsafe int getPathEdgesInPlane (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgeId path, MR.Const_Plane3f plane, float? tolerance=null, MR.Std.Vector_MREdgeId? outInPlaneEdges=null)
 finds all path edges located in given plane with given tolerance, adds them in outInPlaneEdges and returns their number Generated from function MR.getPathEdgesInPlane. Parameter tolerance defaults to 0.0f.
 
static unsafe bool same (MR.Const_MeshTopology topology, MR.Const_EdgePoint lhs, MR.Const_EdgePoint rhs)
 returns true if two edge-points are equal considering different representations Generated from function MR.same.
 
static unsafe MR.Mesh embedStructureToTerrain (MR.Const_Mesh terrain, MR.Const_Mesh structure, MR.Const_EmbeddedStructureParameters params_)
 Generated from function MR.embedStructureToTerrain.
 
static unsafe MR.VertScalars computeSpaceDistances (MR.Const_Mesh mesh, MR.Const_PointOnFace start, float range)
 computes Euclidean 3D distances from given start point to all neighbor vertices within given
 
static unsafe MR.VertBitSet findNeighborVerts (MR.Const_Mesh mesh, MR.Const_PointOnFace start, float rangeSq)
 calculates all neighbor vertices within a given
 
static unsafe? byte asString (MR.ColoringType ct)
 returns string representation of enum values Generated from function MR.asString.
 
static unsafe void expand (MR.Const_MeshTopology topology, MR.FaceBitSet region, int? hops=null)
 adds to the region all faces within given number of hops (stars) from the initial region boundary Generated from function MR.expand. Parameter hops defaults to 1.
 
static unsafe MR.FaceBitSet expand (MR.Const_MeshTopology topology, MR.FaceId f, int hops)
 returns the region of all faces within given number of hops (stars) from the initial face Generated from function MR.expand.
 
static unsafe void expand (MR.Const_MeshTopology topology, MR.VertBitSet region, int? hops=null)
 Generated from function MR.expand. Parameter hops defaults to 1.
 
static unsafe MR.VertBitSet expand (MR.Const_MeshTopology topology, MR.VertId v, int hops)
 returns the region of all vertices within given number of hops (stars) from the initial vertex Generated from function MR.expand.
 
static unsafe void shrink (MR.Const_MeshTopology topology, MR.FaceBitSet region, int? hops=null)
 removes from the region all faces within given number of hops (stars) from the initial region boundary Generated from function MR.shrink. Parameter hops defaults to 1.
 
static unsafe void shrink (MR.Const_MeshTopology topology, MR.VertBitSet region, int? hops=null)
 removes from the region all vertices within given number of hops (stars) from the initial region boundary Generated from function MR.shrink. Parameter hops defaults to 1.
 
static unsafe MR.FaceBitSet expandFaces (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region, MR.Const_UndirectedEdgeBitSet? stopEdges=null)
 returns given region with all faces sharing an edge with a region face;
 
static unsafe MR.FaceBitSet shrinkFaces (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region, MR.Const_UndirectedEdgeBitSet? stopEdges=null)
 returns given region without all faces sharing an edge with not-region face;
 
static unsafe MR.FaceBitSet getBoundaryFaces (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region)
 returns faces from given region that have at least one neighbor face with shared edge not from the region Generated from function MR.getBoundaryFaces.
 
static unsafe MR.Std.Vector_StdVectorMREdgePoint extractIsolines (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMRVertId vertValues, MR.Const_FaceBitSet? region=null)
 extracts all iso-lines from given scalar field and iso-value=0 Generated from function MR.extractIsolines.
 
static unsafe bool hasAnyIsoline (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMRVertId vertValues, MR.Const_FaceBitSet? region=null)
 quickly returns true if extractIsolines produce not-empty set for the same arguments Generated from function MR.hasAnyIsoline.
 
static unsafe MR.Std.Vector_StdVectorMREdgePoint extractIsolines (MR.Const_MeshTopology topology, MR.Const_VertScalars vertValues, float isoValue, MR.Const_FaceBitSet? region=null)
 extracts all iso-lines from given scalar field and iso-value Generated from function MR.extractIsolines.
 
static unsafe bool hasAnyIsoline (MR.Const_MeshTopology topology, MR.Const_VertScalars vertValues, float isoValue, MR.Const_FaceBitSet? region=null)
 quickly returns true if extractIsolines produce not-empty set for the same arguments Generated from function MR.hasAnyIsoline.
 
static unsafe MR.Std.Vector_StdVectorMREdgePoint extractPlaneSections (MR.Const_MeshPart mp, MR.Const_Plane3f plane, MR.UseAABBTree? u=null)
 extracts all plane sections of given mesh Generated from function MR.extractPlaneSections. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe bool hasAnyPlaneSection (MR.Const_MeshPart mp, MR.Const_Plane3f plane, MR.UseAABBTree? u=null)
 quickly returns true if extractPlaneSections produce not-empty set for the same arguments Generated from function MR.hasAnyPlaneSection. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.Std.Vector_StdVectorMREdgePoint extractXYPlaneSections (MR.Const_MeshPart mp, float zLevel, MR.UseAABBTree? u=null)
 extracts all sections of given mesh with the plane z=zLevel Generated from function MR.extractXYPlaneSections. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe bool hasAnyXYPlaneSection (MR.Const_MeshPart mp, float zLevel, MR.UseAABBTree? u=null)
 quickly returns true if extractXYPlaneSections produce not-empty set for the same arguments Generated from function MR.hasAnyXYPlaneSection. Parameter u defaults to UseAABBTree.Yes.
 
static unsafe MR.Std.Vector_MRLineSegm3f findTriangleSectionsByXYPlane (MR.Const_MeshPart mp, float zLevel, MR.Std.Vector_MRFaceId? faces=null, MR.UseAABBTree? u=null)
 finds all intersected triangles by the plane z=zLevel
 
static unsafe MR.Std.Vector_MREdgePoint trackSection (MR.Const_MeshPart mp, MR.Const_MeshTriPoint start, MR.MeshTriPoint end, in MR.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) Generated from function MR.trackSection.
 
static unsafe MR.Std.Vector_MREdgePoint trackSection (MR.Const_MeshPart mp, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, in MR.Vector3f planePoint, bool ccw)
 track section of plane set by start point, end point and planePoint from start to end
 
static unsafe bool isConsistentlyOriented (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgePoint 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 Generated from function MR.isConsistentlyOriented.
 
static unsafe MR.FaceBitSet getCrossedFaces (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgePoint isoline)
 for a consistently oriented isoline, returns all faces it goes inside Generated from function MR.getCrossedFaces.
 
static unsafe MR.Std.Vector_MRVector2f planeSectionToContour2f (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint section, in MR.AffineXf3f meshToPlane)
 converts PlaneSections in 2D contours by computing coordinate of each point, applying given xf to it, and retaining only x and y Generated from function MR.planeSectionToContour2f.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f planeSectionsToContours2f (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMREdgePoint sections, in MR.AffineXf3f meshToPlane)
 Generated from function MR.planeSectionsToContours2f.
 
static unsafe MR.Std.Optional_MRFaceScalars calcFaceDistances (MR.Const_MeshTopology topology, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Const_FaceBitSet starts, MR.Const_FaceDistancesSettings? settings=null)
 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;
 
static unsafe MR.VisualObject makeObjectFromEnum (MR.FeaturesObjectKind kind)
 Allocates an object of type kind, passing params... to its constructor. Generated from function MR.makeObjectFromEnum<>.
 
static unsafe MR.VisualObject makeObjectFromClassName (string className)
 Allocates an object of type kind, passing params... to its constructor. Generated from function MR.makeObjectFromClassName<>.
 
static unsafe MR.Std.Optional_MRVector3f getFeatureNormal (MR.FeatureObject? feature)
 Generated from function MR.getFeatureNormal.
 
static unsafe MR.Std.Optional_MRVector3f getFeatureDirection (MR.FeatureObject? feature)
 Generated from function MR.getFeatureDirection.
 
static unsafe MR.Std.UnorderedSet_StdString getFeaturesTypeWithNormals ()
 Generated from function MR.getFeaturesTypeWithNormals.
 
static unsafe MR.Std.UnorderedSet_StdString getFeaturesTypeWithDirections ()
 Generated from function MR.getFeaturesTypeWithDirections.
 
static unsafe MR.AffineXf3f refineFeatureObject (MR.Const_FeatureObject featObj, MR.Const_Mesh mesh, MR.Const_RefineParameters? params_=null)
 Recalculate the feature object's position so it would better fit with the given mesh Generated from function MR.refineFeatureObject. Parameter params_ defaults to {}.
 
static unsafe MR.AffineXf3f refineFeatureObject (MR.Const_FeatureObject featObj, MR.Const_PointCloud pointCloud, MR.Const_RefineParameters? params_=null)
 Recalculate the feature object's position so it would better fit with the given point cloud Generated from function MR.refineFeatureObject. Parameter params_ defaults to {}.
 
static unsafe MR.FaceBitSet fillContourLeft (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId contour)
 Generated from function MR.fillContourLeft.
 
static unsafe MR.FaceBitSet fillContourLeft (MR.Const_MeshTopology topology, MR.Std.Const_Vector_StdVectorMREdgeId contours)
 Generated from function MR.fillContourLeft.
 
static unsafe MR.FaceBitSet fillContourLeftByGraphCut (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId contour, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Fills region located to the left from given contour, by minimizing the sum of metric over the boundary If the computations are terminated by progress, then returns the best approximation found by the moment of termination Generated from function MR.fillContourLeftByGraphCut. Parameter progress defaults to {}.
 
static unsafe MR.FaceBitSet fillContourLeftByGraphCut (MR.Const_MeshTopology topology, MR.Std.Const_Vector_StdVectorMREdgeId contours, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Fills region located to the left from given contours, by minimizing the sum of metric over the boundary If the computations are terminated by progress, then returns the best approximation found by the moment of termination Generated from function MR.fillContourLeftByGraphCut. Parameter progress defaults to {}.
 
static unsafe MR.FaceBitSet segmentByGraphCut (MR.Const_MeshTopology topology, MR.Const_FaceBitSet source, MR.Const_FaceBitSet sink, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Finds segment that divide mesh on source and sink (source included, sink excluded), by minimizing the sum of metric over the boundary If the computations are terminated by progress, then returns the best approximation found by the moment of termination Generated from function MR.segmentByGraphCut. Parameter progress defaults to {}.
 
static unsafe void fillContours2D (MR.Mesh mesh, MR.Std.Const_Vector_MREdgeId holeRepresentativeEdges)
 fill holes with border in same plane (i.e. after cut by plane)
 
static unsafe MR.AffineXf3f getXfFromOxyPlane (MR.Std.Const_Vector_StdVectorMRVector3f contours)
 computes the transformation that maps O into center mass of contours' points OXY into best plane containing the points Generated from function MR.getXfFromOxyPlane.
 
static unsafe MR.AffineXf3f getXfFromOxyPlane (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMREdgeId paths)
 Generated from function MR.getXfFromOxyPlane.
 
static unsafe void fillPlanarHole (MR.ObjectMeshData data, MR.Std.Vector_StdVectorMREdgeId holeContours)
 given an ObjectMeshData and the contours of a planar hole in it, fills the hole using fillContours2D function and updates all per-element attributes; if some contours were not closed on input, then it closes them by adding a bridge edge in each Generated from function MR.fillPlanarHole.
 
static unsafe MR.FaceBitSet fillHoleNicely (MR.Mesh mesh, MR.EdgeId holeEdge, MR.Const_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
 
static unsafe void filterCreaseEdges (MR.Const_Mesh mesh, MR.UndirectedEdgeBitSet creaseEdges, float critLength, bool? filterComponents=null, bool? filterBranches=null)
 filters given edges using the following criteria: if
 
static unsafe MR.Std.Vector_MRVector3f makeFreeFormOriginGrid (in MR.Box3f box, in MR.Vector3i resolution)
 Returns positions of grid points in given box with given resolution Generated from function MR.makeFreeFormOriginGrid.
 
static unsafe MR.Std.Vector_MRVector3f findBestFreeformDeformation (in MR.Box3f box, MR.Std.Const_Vector_MRVector3f source, MR.Std.Const_Vector_MRVector3f target, MR.Vector3i? resolution=null, MR.AffineXf3f? samplesToBox=null)
 Generated from function MR.findBestFreeformDeformation. Parameter resolution defaults to Vector3i.diagonal(2).
 
static unsafe bool reducePathViaVertex (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.VertId v, MR.Const_MeshTriPoint end, MR.Std.Vector_MREdgePoint outPath, MR.Std.Vector_MRVector2f tmp, MR.Std.Vector_MREdgePoint cachePath)
 given path s-v-e, tries to decrease its length by moving away from v
 
static unsafe int reducePath (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Std.Vector_MREdgePoint path, MR.Const_MeshTriPoint end, int? maxIter=null)
 converts any input surface path into geodesic path (so reduces its length): start-path-end; returns actual number of iterations performed Generated from function MR.reducePath. Parameter maxIter defaults to 5.
 
static unsafe MR.Std.Optional_MRVertBitSet verticesGridSampling (MR.Const_MeshPart mp, float voxelSize, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 performs sampling of mesh vertices; subdivides mesh bounding box on voxels of approximately given size and returns at most one vertex per voxel; if voxelSize<=0 then returns all region vertices as samples; returns std.nullopt if it was terminated by the callback Generated from function MR.verticesGridSampling. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVertBitSet pointGridSampling (MR.Const_PointCloudPart pcp, float voxelSize, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 performs sampling of cloud points; subdivides point cloud bounding box on voxels of approximately given size and returns at most one point per voxel; if voxelSize<=0 then returns all valid points as samples; returns std.nullopt if it was terminated by the callback Generated from function MR.pointGridSampling. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_StdVectorMRObjVertId multiModelGridSampling (MR.Const_Vector_MRModelPointsData_MRObjId models, float voxelSize, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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; if voxelSize<=0 then returns all points from all models as samples; returns std.nullopt if it was terminated by the callback Generated from function MR.multiModelGridSampling. Parameter cb defaults to {}.
 
static unsafe ulong heapBytes (MR.Std.Const_Vector_MRColor vec)
 returns the amount of memory given vector occupies on heap Generated from function MR.heapBytes<MR.Color>.
 
static unsafe ulong heapBytes (MR.Std.Const_Vector_StdSharedPtrMRObject vec)
 returns the amount of memory given vector occupies on heap Generated from function MR.heapBytes<std.shared_ptr<MR.Object>>.
 
static unsafe ulong heapBytes (MR.Std.Const_Vector_Float vec)
 returns the amount of memory given vector occupies on heap Generated from function MR.heapBytes<float>.
 
static unsafe ulong heapBytes (MR.Std.Const_Vector_MRUint64T vec)
 returns the amount of memory given vector occupies on heap Generated from function MR.heapBytes<MR_uint64_t>.
 
static unsafe ulong heapBytes (MR.Const_Vector_MRMeshTexture_MRTextureId vec)
 Generated from function MR.heapBytes<MR.MeshTexture, MR.TextureId>.
 
static unsafe ulong heapBytes (MR.Const_Mesh ptr)
 returns the amount of memory this smart pointer and its pointed object own together on heap Generated from function MR.heapBytes<MR.Mesh>.
 
static unsafe ulong heapBytes (MR.Const_Object ptr)
 returns the amount of memory this smart pointer and its pointed object own together on heap Generated from function MR.heapBytes<MR.Object>.
 
static unsafe ulong heapBytes (MR.Const_PointCloud ptr)
 returns the amount of memory this smart pointer and its pointed object own together on heap Generated from function MR.heapBytes<MR.PointCloud>.
 
static unsafe ulong heapBytes (MR.Const_Polyline3 ptr)
 returns the amount of memory this smart pointer and its pointed object own together on heap Generated from function MR.heapBytes<MR.Polyline3>.
 
static unsafe MR.Std.Pair_Bool_Int filterHistoryActionsVector (MR.Std.Vector_StdSharedPtrMRHistoryAction historyVector, MR.Std._ByValue_Function_BoolFuncFromConstStdSharedPtrMRHistoryActionRef filteringCondition, ulong? firstRedoIndex=null, bool? deepFiltering=null)
 Remove actions from history actions vector that match the condition.
 
static unsafe ulong getNumSamples (MR.Const_IPointPairs pairs)
 returns the number of samples able to form pairs Generated from function MR.getNumSamples.
 
static unsafe ulong getNumActivePairs (MR.Const_IPointPairs pairs)
 computes the number of active pairs Generated from function MR.getNumActivePairs.
 
static unsafe MR.NumSum getSumSqDistToPoint (MR.Const_IPointPairs pairs, double? inaccuracy=null)
 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 Generated from function MR.getSumSqDistToPoint.
 
static unsafe MR.NumSum getSumSqDistToPlane (MR.Const_IPointPairs pairs, double? inaccuracy=null)
 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 Generated from function MR.getSumSqDistToPlane.
 
static unsafe float getMeanSqDistToPoint (MR.Const_IPointPairs pairs)
 computes root-mean-square deviation between points Generated from function MR.getMeanSqDistToPoint.
 
static unsafe float getMeanSqDistToPlane (MR.Const_IPointPairs pairs)
 computes root-mean-square deviation from points to target planes Generated from function MR.getMeanSqDistToPlane.
 
static unsafe MR.Std.String getICPStatusInfo (int iterations, MR.ICPExitType exitType)
 returns status info string Generated from function MR.getICPStatusInfo.
 
static unsafe MR.AffineXf3d getAligningXf (MR.Const_PointToPlaneAligningTransform p2pl, MR.ICPMode mode, float angleLimit, float scaleLimit, in MR.Vector3f fixedRotationAxis)
 given prepared (p2pl) object, finds the best transformation from it of given type with given limitations on rotation angle and global scale Generated from function MR.getAligningXf.
 
static unsafe ulong deactivateFarPairs (MR.IPointPairs pairs, float maxDistSq)
 reset active bit if pair distance is further than maxDistSq Generated from function MR.deactivateFarPairs.
 
static unsafe void updatePointPairs (MR.PointPairs pairs, MR.Const_MeshOrPointsXf src, MR.Const_MeshOrPointsXf tgt, float cosThreshold, float distThresholdSq, bool mutualClosest)
 in each pair updates the target data and performs basic filtering (activation) Generated from function MR.updatePointPairs.
 
static unsafe bool improveSampling (MR.Const_PointCloud cloud, MR.VertBitSet samples, MR.Const_ImproveSamplingSettings settings)
 Finds more representative sampling starting from a given one following k-means method;.
 
static unsafe MR.ShellVertexInfo classifyShellVert (MR.Const_MeshPart mp, in MR.Vector3f shellPoint, MR.Const_FindInnerShellSettings? settings=null)
 Tests.
 
static unsafe MR.VertBitSet findInnerShellVerts (MR.Const_MeshPart mp, MR.Const_Mesh shell, MR.Const_FindInnerShellSettings? settings=null)
 Finds inner-shell vertices on bidirectional.
 
static unsafe MR.FaceBitSet findInnerShellFacesWithSplits (MR.Const_MeshPart mp, MR.Mesh shell, MR.Const_FindInnerShellSettings? settings=null)
 Finds inner-shell faces on bidirectional.
 
static unsafe MR.Std.Optional_MRVector2f intersection (MR.Const_LineSegm2f segm1, MR.Const_LineSegm2f segm2)
 finds an intersection between a segm1 and a segm2
 
static unsafe MR.Std.Vector_StdVectorMRVarEdgeTri orderIntersectionContours (MR.Const_MeshTopology topologyA, MR.Const_MeshTopology topologyB, MR.Std.Const_Vector_MRVarEdgeTri intersections)
 Combines unordered input intersections (and flips orientation of intersected edges from mesh B) into ordered oriented contours with the properties:
 
static unsafe MR.Std.Vector_StdVectorMRVarEdgeTri orderSelfIntersectionContours (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeTri intersections)
 Combines unordered input self-intersections (and flips orientation of some intersected edges) into ordered oriented contours with the properties:
 
static unsafe bool isClosed (MR.Std.Const_Vector_MRVarEdgeTri contour)
 returns true if contour is closed Generated from function MR.isClosed.
 
static unsafe MR.Std.Vector_Int detectLoneContours (MR.Std.Const_Vector_StdVectorMRVarEdgeTri contours, bool? ignoreOpen=null)
 Detects contours that fully lay inside one triangle if ignoreOpen then do not mark non-closed contours as lone, even if they really are returns they indices in contours Generated from function MR.detectLoneContours. Parameter ignoreOpen defaults to false.
 
static unsafe void removeLoneDegeneratedContours (MR.Const_MeshTopology edgesTopology, MR.Std.Vector_MROneMeshContour faceContours, MR.Std.Vector_MROneMeshContour 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) Generated from function MR.removeLoneDegeneratedContours.
 
static unsafe void removeLoneContours (MR.Std.Vector_StdVectorMRVarEdgeTri contours, bool? ignoreOpen=null)
 Removes contours that fully lay inside one triangle from the contours if ignoreOpen then do not consider non-closed contours as lone, even if they really are Generated from function MR.removeLoneContours. Parameter ignoreOpen defaults to false.
 
static unsafe MR.Std.Optional_MRIOFilter findFilter (MR.Std.Const_Vector_MRIOFilter filters, string extension)
 find a corresponding filter for a given extension Generated from function MR.findFilter.
 
static unsafe MR.Std.Vector_MRUint64T splitByLines (byte? data, ulong size)
 Generated from function MR.splitByLines.
 
static unsafe void parseFirstNum (string str, ref int num)
 Generated from function MR.parseFirstNum.
 
static unsafe void parsePolygon (string str, MR.Misc.InOut< MR.VertId >? vertId, MR.Misc.InOut< int >? numPoints)
 Generated from function MR.parsePolygon.
 
static MR.DepthFunction bitand (MR.DepthFunction a, MR.DepthFunction b)
 Generated from function MR.operator&.
 
static MR.DepthFunction bitor (MR.DepthFunction a, MR.DepthFunction b)
 Generated from function MR.operator|.
 
static MR.DepthFunction compl (MR.DepthFunction a)
 Generated from function MR.operator~.
 
static unsafe ref MR.DepthFunction bitandAssign (ref MR.DepthFunction a, MR.DepthFunction b)
 Generated from function MR.operator&=.
 
static unsafe ref MR.DepthFunction bitorAssign (ref MR.DepthFunction a, MR.DepthFunction b)
 Generated from function MR.operator|=.
 
static MR.DepthFunction mul (MR.DepthFunction a, bool b)
 Generated from function MR.operator*.
 
static MR.DepthFunction mul (bool a, MR.DepthFunction b)
 Generated from function MR.operator*.
 
static unsafe ref MR.DepthFunction mulAssign (ref MR.DepthFunction a, bool b)
 Generated from function MR.operator*=.
 
static MR.BasicUiRenderTask.InteractionMask bitand (MR.BasicUiRenderTask.InteractionMask a, MR.BasicUiRenderTask.InteractionMask b)
 Generated from function MR.operator&.
 
static MR.BasicUiRenderTask.InteractionMask bitor (MR.BasicUiRenderTask.InteractionMask a, MR.BasicUiRenderTask.InteractionMask b)
 Generated from function MR.operator|.
 
static MR.BasicUiRenderTask.InteractionMask compl (MR.BasicUiRenderTask.InteractionMask a)
 Generated from function MR.operator~.
 
static unsafe ref MR.BasicUiRenderTask.InteractionMask bitandAssign (ref MR.BasicUiRenderTask.InteractionMask a, MR.BasicUiRenderTask.InteractionMask b)
 Generated from function MR.operator&=.
 
static unsafe ref MR.BasicUiRenderTask.InteractionMask bitorAssign (ref MR.BasicUiRenderTask.InteractionMask a, MR.BasicUiRenderTask.InteractionMask b)
 Generated from function MR.operator|=.
 
static MR.BasicUiRenderTask.InteractionMask mul (MR.BasicUiRenderTask.InteractionMask a, bool b)
 Generated from function MR.operator*.
 
static MR.BasicUiRenderTask.InteractionMask mul (bool a, MR.BasicUiRenderTask.InteractionMask b)
 Generated from function MR.operator*.
 
static unsafe ref MR.BasicUiRenderTask.InteractionMask mulAssign (ref MR.BasicUiRenderTask.InteractionMask a, bool b)
 Generated from function MR.operator*=.
 
static bool isNanFast (float f)
 quickly tests whether given float is not-a-number Generated from function MR.isNanFast.
 
static unsafe MR.Std.Optional_MRVertBitSet pointIterativeSampling (MR.Const_PointCloud cloud, int numSamples, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.pointIterativeSampling. Parameter cb defaults to {}.
 
static unsafe MR.ChunkIterator begin (MR.Const_IteratorRange_MRChunkIterator range)
 Generated from function MR.begin.
 
static unsafe MR.ChunkIterator end (MR.Const_IteratorRange_MRChunkIterator range)
 Generated from function MR.end.
 
static unsafe MR.UndirectedEdgeIterator begin (MR.Const_IteratorRange_MRUndirectedEdgeIterator range)
 Generated from function MR.begin.
 
static unsafe MR.UndirectedEdgeIterator end (MR.Const_IteratorRange_MRUndirectedEdgeIterator range)
 Generated from function MR.end.
 
static unsafe MR.RingIterator_MRNextEdgeSameOrigin begin (MR.Const_IteratorRange_MRRingIteratorMRNextEdgeSameOrigin range)
 Generated from function MR.begin.
 
static unsafe MR.RingIterator_MRNextEdgeSameOrigin end (MR.Const_IteratorRange_MRRingIteratorMRNextEdgeSameOrigin range)
 Generated from function MR.end.
 
static unsafe MR.RingIterator_MRNextEdgeSameLeft begin (MR.Const_IteratorRange_MRRingIteratorMRNextEdgeSameLeft range)
 Generated from function MR.begin.
 
static unsafe MR.RingIterator_MRNextEdgeSameLeft end (MR.Const_IteratorRange_MRRingIteratorMRNextEdgeSameLeft range)
 Generated from function MR.end.
 
static unsafe MR.PolylineUndirectedEdgeIterator begin (MR.Const_IteratorRange_MRPolylineUndirectedEdgeIterator range)
 Generated from function MR.begin.
 
static unsafe MR.PolylineUndirectedEdgeIterator end (MR.Const_IteratorRange_MRPolylineUndirectedEdgeIterator range)
 Generated from function MR.end.
 
static unsafe MR.Object makeLevelOfDetails (MR.Misc._Moved< MR.Mesh > mesh, int maxDepth)
 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. Generated from function MR.makeLevelOfDetails.
 
static unsafe bool doSegmentsIntersect (MR.Const_LineSegm2f x, MR.Const_LineSegm2f y, MR.Misc.InOut< float >? xPos=null, MR.Misc.InOut< float >? yPos=null)
 returns true if two 2D segments intersect, optionally outputs intersection point as a parameter on both segments Generated from function MR.doSegmentsIntersect<MR.Vector2f>.
 
static unsafe bool doSegmentsIntersect (MR.Const_LineSegm2d x, MR.Const_LineSegm2d y, MR.Misc.InOut< double >? xPos=null, MR.Misc.InOut< double >? yPos=null)
 returns true if two 2D segments intersect, optionally outputs intersection point as a parameter on both segments Generated from function MR.doSegmentsIntersect<MR.Vector2d>.
 
static unsafe bool doSegmentLineIntersect (MR.Const_LineSegm2f x, MR.Const_Line2f y, MR.Misc.InOut< float >? xPos=null, MR.Misc.InOut< float >? yPos=null)
 returns true if 2D line segment and 2D line intersect, optionally outputs intersection point as a parameter on both Generated from function MR.doSegmentLineIntersect<MR.Vector2f>.
 
static unsafe bool doSegmentLineIntersect (MR.Const_LineSegm2d x, MR.Const_Line2d y, MR.Misc.InOut< double >? xPos=null, MR.Misc.InOut< double >? yPos=null)
 returns true if 2D line segment and 2D line intersect, optionally outputs intersection point as a parameter on both Generated from function MR.doSegmentLineIntersect<MR.Vector2d>.
 
static unsafe MR.Std.Optional_MRAllLocalTriangulations uniteLocalTriangulations (MR.Std.Const_Vector_MRSomeLocalTriangulations in_, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 converts a set of SomeLocalTriangulations containing local triangulations of all points arbitrary distributed among them into one AllLocalTriangulations with records for all points Generated from function MR.uniteLocalTriangulations. Parameter progress defaults to {}.
 
static unsafe MR.Vector3f computeNormal (MR.Const_AllLocalTriangulations triangs, MR.Const_VertCoords points, MR.VertId v)
 compute normal at point by averaging neighbor triangle normals weighted by triangle's angle at the point Generated from function MR.computeNormal.
 
static unsafe void orientLocalTriangulations (MR.AllLocalTriangulations triangs, MR.Const_VertCoords coords, MR.Const_VertBitSet region, MR.Const_VertCoords targetDir)
 orient neighbors around each point in
 
static unsafe void orientLocalTriangulations (MR.AllLocalTriangulations triangs, MR.Const_VertCoords coords, MR.Const_VertBitSet region, MR.Std.Const_Function_MRVector3fFuncFromMRVertId targetDir)
 Generated from function MR.orientLocalTriangulations.
 
static unsafe bool autoOrientLocalTriangulations (MR.Const_PointCloud pointCloud, MR.AllLocalTriangulations triangs, MR.Const_VertBitSet region, MR.Std._ByValue_Function_BoolFuncFromFloat? progress=null, MR.Triangulation? outRep3=null, MR.Triangulation? outRep2=null)
 orient neighbors around each point in
 
static unsafe MR.Std.Array_Int_4 computeTrianglesRepetitions (MR.Const_AllLocalTriangulations triangs)
 computes statistics about the number of triangle repetitions in local triangulations Generated from function MR.computeTrianglesRepetitions.
 
static unsafe MR.Std.Vector_MRUnorientedTriangle findRepeatedUnorientedTriangles (MR.Const_AllLocalTriangulations triangs, int repetitions)
 from local triangulations returns all unoriented triangles with given number of repetitions each in [1,3] Generated from function MR.findRepeatedUnorientedTriangles.
 
static unsafe MR.Triangulation findRepeatedOrientedTriangles (MR.Const_AllLocalTriangulations triangs, int repetitions)
 from local triangulations returns all oriented triangles with given number of repetitions each in [1,3] Generated from function MR.findRepeatedOrientedTriangles.
 
static unsafe void findRepeatedOrientedTriangles (MR.Const_AllLocalTriangulations triangs, MR.Triangulation? outRep3, MR.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 Generated from function MR.findRepeatedOrientedTriangles.
 
static unsafe MR.Mesh makePlane ()
 Generated from function MR.makePlane.
 
static unsafe MR.AffineXf3d makeRigidXf (MR.Const_MeshPart mp, in MR.AffineXf3d meshXf)
 given a mesh part and its arbitrary transformation, computes and returns the rigid transformation that best approximates meshXf Generated from function MR.makeRigidXf.
 
static unsafe MR.AffineXf3f makeRigidXf (MR.Const_MeshPart mp, in MR.AffineXf3f meshXf)
 Generated from function MR.makeRigidXf.
 
static unsafe MR.Mesh makeSphere (MR.Const_SphereParams params_)
 creates a mesh of sphere with irregular triangulation Generated from function MR.makeSphere.
 
static unsafe MR.Mesh makeUVSphere (float? radius=null, int? horisontalResolution=null, int? verticalResolution=null)
 creates a mesh of sphere with regular triangulation (parallels and meridians) Generated from function MR.makeUVSphere. Parameter radius defaults to 1.0. Parameter horisontalResolution defaults to 16. Parameter verticalResolution defaults to 16.
 
static unsafe MR.EdgeId mapEdge (MR.Const_WholeEdgeMap map, MR.EdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.UndirectedEdgeId mapEdge (MR.Const_WholeEdgeMap map, MR.UndirectedEdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.EdgeId mapEdge (MR.Phmap.Const_FlatHashMap_MRUndirectedEdgeId_MREdgeId map, MR.EdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.UndirectedEdgeId mapEdge (MR.Phmap.Const_FlatHashMap_MRUndirectedEdgeId_MREdgeId map, MR.UndirectedEdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.EdgeId mapEdge (MR.Const_MapOrHashMap_MRUndirectedEdgeId_MREdgeId m, MR.EdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.UndirectedEdgeId mapEdge (MR.Const_MapOrHashMap_MRUndirectedEdgeId_MREdgeId m, MR.UndirectedEdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.UndirectedEdgeId mapEdge (MR.Const_UndirectedEdgeBMap map, MR.UndirectedEdgeId src)
 given input edge (src), converts its id using given map Generated from function MR.mapEdge.
 
static unsafe MR.UndirectedEdgeBitSet mapEdges (MR.Const_WholeEdgeMap map, MR.Const_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 Generated from function MR.mapEdges.
 
static unsafe MR.UndirectedEdgeBitSet mapEdges (MR.Phmap.Const_FlatHashMap_MRUndirectedEdgeId_MREdgeId map, MR.Const_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 Generated from function MR.mapEdges.
 
static unsafe MR.UndirectedEdgeBitSet mapEdges (MR.Const_UndirectedEdgeBMap map, MR.Const_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 Generated from function MR.mapEdges.
 
static unsafe bool isClosed (MR.Std.Const_Vector_MRVector3f c)
 Generated from function MR.isClosed.
 
static unsafe MR.MarkedContour3f markedContour (MR.Std._ByValue_Vector_MRVector3f in_)
 
static unsafe MR.MarkedContour3f markedFirstLast (MR.Std._ByValue_Vector_MRVector3f in_)
 
static unsafe MR.MarkedContour3f resample (MR.Const_MarkedContour3f in_, float minStep, MR.Std.Vector_MRVector3f? normals=null)
 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
 
static unsafe MR.MarkedContour3f makeSpline (MR._ByValue_MarkedContour3f in_, float? markStability=null, MR.Std.Const_Vector_MRVector3f? normals=null)
 
static unsafe MR.MarkedContour3f makeSpline (MR._ByValue_MarkedContour3f in_, MR.Std.Const_Vector_MRVector3f normals, float? markStability=null)
 
static unsafe MR.MarkedContour3f makeSpline (MR.Std.Const_Vector_MRVector3f controlPoints, MR.Const_SplineSettings settings)
 
static unsafe MR.BooleanResult boolean (MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.BooleanOperation operation, MR.AffineXf3f? rigidB2A, MR.BooleanResultMapper? mapper=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Performs CSG operation on two meshes Makes new mesh - result of boolean operation on mesh A and mesh B
 
static unsafe MR.BooleanResult boolean (MR.Misc._Moved< MR.Mesh > meshA, MR.Misc._Moved< MR.Mesh > meshB, MR.BooleanOperation operation, MR.AffineXf3f? rigidB2A, MR.BooleanResultMapper? mapper=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.boolean. Parameter cb defaults to {}.
 
static unsafe MR.BooleanResult boolean (MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.BooleanOperation operation, MR.Const_BooleanParameters? params_=null)
 Generated from function MR.boolean. Parameter params_ defaults to {}.
 
static unsafe MR.BooleanResult boolean (MR.Misc._Moved< MR.Mesh > meshA, MR.Misc._Moved< MR.Mesh > meshB, MR.BooleanOperation operation, MR.Const_BooleanParameters? params_=null)
 Generated from function MR.boolean. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh selfBoolean (MR.Const_Mesh mesh)
 performs boolean operation on mesh with itself, cutting simple intersections contours and flipping their connectivity this function is experimental and likely to change signature and/or behavior in future Generated from function MR.selfBoolean.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f findIntersectionContours (MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.AffineXf3f? rigidB2A=null)
 returns intersection contours of given meshes Generated from function MR.findIntersectionContours.
 
static unsafe MR.BooleanResultPoints getBooleanPoints (MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.BooleanOperation operation, MR.AffineXf3f? rigidB2A=null)
 Returns the points of mesh boolean's result mesh 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.)
 
static unsafe void convertIntFloatAllVerts (MR.Mesh mesh, MR.Const_CoordinateConverters conv)
 converts all vertices of the mesh first in integer-coordinates, and then back in float-coordinates; this is necessary to avoid small self-intersections near newly introduced vertices on cut-contours; this actually sligntly moves only small perentage of vertices near x=0 or y=0 or z=0 planes, where float-precision is higher than int-precision; newly introduced vertices on cut-contours are also converted, but we expected that they remain unchanged due to idempotent property of the conversion Generated from function MR.convertIntFloatAllVerts.
 
static unsafe void straightenBoundary (MR.Mesh mesh, MR.EdgeId bd, float minNeiNormalsDot, float maxTriAspectRatio, MR.FaceBitSet? newFaces=null)
 adds triangles along the boundary to straighten it;
 
static unsafe MR.Std.Vector_MRFaceFace findCollidingTriangles (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null, bool? firstIntersectionOnly=null)
 finds all pairs of colliding triangles from two meshes or two mesh regions
 
static unsafe MR.Std.Pair_MRFaceBitSet_MRFaceBitSet findCollidingTriangleBitsets (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null)
 the same as findCollidingTriangles, but returns one bite set per mesh with colliding triangles Generated from function MR.findCollidingTriangleBitsets.
 
static unsafe bool findSelfCollidingTriangles (MR.Const_MeshPart mp, MR.Std.Vector_MRFaceFace? outCollidingPairs, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.Const_Face2RegionMap? regionMap=null, bool? touchIsIntersection=null)
 finds all pairs (or the fact of any self-collision) of colliding triangles from one mesh or a region Generated from function MR.findSelfCollidingTriangles. Parameter cb defaults to {}. Parameter touchIsIntersection defaults to false.
 
static unsafe MR.Std.Vector_MRFaceFace findSelfCollidingTriangles (MR.Const_MeshPart mp, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.Const_Face2RegionMap? regionMap=null, bool? touchIsIntersection=null)
 finds all pairs of colliding triangles from one mesh or a region Generated from function MR.findSelfCollidingTriangles. Parameter cb defaults to {}. Parameter touchIsIntersection defaults to false.
 
static unsafe MR.FaceBitSet findSelfCollidingTrianglesBS (MR.Const_MeshPart mp, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.Const_Face2RegionMap? regionMap=null, bool? touchIsIntersection=null)
 the same findSelfCollidingTriangles but returns the union of all self-intersecting faces Generated from function MR.findSelfCollidingTrianglesBS. Parameter cb defaults to {}. Parameter touchIsIntersection defaults to false.
 
static unsafe bool isInside (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null)
 checks that arbitrary mesh part A is inside of closed mesh part B
 
static unsafe bool isNonIntersectingInside (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null)
 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
 
static unsafe bool isNonIntersectingInside (MR.Const_Mesh a, MR.FaceId partFace, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null)
 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
 
static unsafe MR.Std.Vector_MRVarEdgeTri findCollidingEdgeTrisPrecise (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv, MR.AffineXf3f? rigidB2A=null, bool? anyIntersection=null)
 finds all pairs of colliding edges from one mesh and triangle from another mesh
 
static unsafe MR.Std.Vector_MREdgeTri findSelfCollidingEdgeTrisPrecise (MR.Const_MeshPart mp, MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv, bool? anyIntersection=null, MR.AffineXf3f? rigidB2A=null, int? aVertSizes=null)
 finds all pairs of colliding edges and triangle within one mesh
 
static unsafe MR.Std.Vector_MREdgeTri findCollidingEdgeTrisPrecise (MR.Const_Mesh a, MR.Std.Const_Vector_MREdgeId edgesA, MR.Const_Mesh b, MR.Std.Const_Vector_MRFaceId facesB, MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv, MR.AffineXf3f? rigidB2A=null)
 finds all intersections between every given edge from A and given triangles from B Generated from function MR.findCollidingEdgeTrisPrecise.
 
static unsafe MR.Std.Vector_MREdgeTri findCollidingEdgeTrisPrecise (MR.Const_Mesh a, MR.Std.Const_Vector_MRFaceId facesA, MR.Const_Mesh b, MR.Std.Const_Vector_MREdgeId edgesB, MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv, MR.AffineXf3f? rigidB2A=null)
 finds all intersections between every given triangle from A and given edge from B Generated from function MR.findCollidingEdgeTrisPrecise.
 
static unsafe MR.CoordinateConverters getVectorConverters (MR.Const_MeshPart a)
 creates simple converters from Vector3f to Vector3i and back in mesh part area range Generated from function MR.getVectorConverters.
 
static unsafe MR.CoordinateConverters getVectorConverters (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null)
 creates simple converters from Vector3f to Vector3i and back in mesh parts area range
 
static unsafe MR.DecimateResult decimateMesh (MR.Mesh mesh, MR.Const_DecimateSettings? settings=null)
 Performs mesh simplification in mesh region according to the settings.
 
static unsafe MR.DecimateResult decimateObjectMeshData (MR.ObjectMeshData data, MR.Const_DecimateSettings settings)
 Performs mesh simplification with per-element attributes according to given settings; \detail settings.region must be null, and real simplification region will be data face selection (or whole mesh if no face selection) Generated from function MR.decimateObjectMeshData.
 
static unsafe MR.Std.Optional_MRObjectMeshData makeDecimatedObjectMeshData (MR.Const_ObjectMesh obj, MR.Const_DecimateSettings settings, MR.DecimateResult? outRes=null)
 returns the data of decimated mesh given ObjectMesh (which remains unchanged) and decimation parameters Generated from function MR.makeDecimatedObjectMeshData.
 
static unsafe MR.QuadraticForm3f computeFormAtVertex (MR.Const_MeshPart mp, MR.VertId v, float stabilizer, bool angleWeigted, MR.Const_UndirectedEdgeBitSet? creases=null)
 Computes quadratic form at given vertex of the initial surface before decimation Generated from function MR.computeFormAtVertex.
 
static unsafe MR.Vector_MRQuadraticForm3f_MRVertId computeFormsAtVertices (MR.Const_MeshPart mp, float stabilizer, bool angleWeigted, MR.Const_UndirectedEdgeBitSet? creases=null)
 Computes quadratic forms at every vertex of mesh part before decimation Generated from function MR.computeFormsAtVertices.
 
static unsafe MR.FaceBitSet getSubdividePart (MR.Const_FaceBitSet valids, ulong subdivideParts, ulong myPart)
 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 Generated from function MR.getSubdividePart.
 
static unsafe bool resolveMeshDegenerations (MR.Mesh mesh, MR.Const_ResolveMeshDegenSettings? settings=null)
 Removes degenerate triangles in a mesh by calling decimateMesh function with appropriate settings.
 
static unsafe bool remesh (MR.Mesh mesh, MR.Const_RemeshSettings settings)
 Generated from function MR.remesh.
 
static unsafe MR.Std.Function_BoolFuncFromMREdgeIdConstMRVector3fRef meshPreCollapseVertAttribute (MR.Const_Mesh mesh, MR.Const_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 } ); Generated from function MR.meshPreCollapseVertAttribute.
 
static unsafe void deleteTargetFaces (MR.Mesh obj, in MR.Vector3f targetCenter)
 deletes object faces with normals pointed to the target geometry center Generated from function MR.deleteTargetFaces.
 
static unsafe void deleteTargetFaces (MR.Mesh obj, MR.Const_Mesh target)
 Generated from function MR.deleteTargetFaces.
 
static unsafe bool checkDeloneQuadrangle (in MR.Vector3d a, in MR.Vector3d b, in MR.Vector3d c, in MR.Vector3d d, double? maxAngleChange=null)
 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) Generated from function MR.checkDeloneQuadrangle. Parameter maxAngleChange defaults to 1.7976931348623157e308.
 
static unsafe bool checkDeloneQuadrangle (in MR.Vector3f a, in MR.Vector3f b, in MR.Vector3f c, in MR.Vector3f d, float? maxAngleChange=null)
 converts arguments in double and calls above function Generated from function MR.checkDeloneQuadrangle. Parameter maxAngleChange defaults to 3.40282347e38f.
 
static unsafe MR.FlipEdge canFlipEdge (MR.Const_MeshTopology topology, MR.EdgeId edge, MR.Const_FaceBitSet? region=null, MR.Const_UndirectedEdgeBitSet? notFlippable=null, MR.Const_VertBitSet? vertRegion=null)
 consider topology and constraints to decide about flip possibility Generated from function MR.canFlipEdge.
 
static unsafe bool checkDeloneQuadrangleInMesh (MR.Const_Mesh mesh, MR.EdgeId edge, MR.Const_DeloneSettings? settings=null, MR.Misc.InOut< float >? deviationSqAfterFlip=null)
 consider quadrangle formed by left and right triangles of given edge, and checks whether this edge satisfies Delone's condition in the quadrangle;
 
static unsafe bool checkDeloneQuadrangleInMesh (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId edge, MR.Const_DeloneSettings? settings=null, MR.Misc.InOut< float >? deviationSqAfterFlip=null)
 Generated from function MR.checkDeloneQuadrangleInMesh. Parameter settings defaults to {}.
 
static unsafe bool bestQuadrangleDiagonal (in MR.Vector3f a, in MR.Vector3f b, in MR.Vector3f c, in MR.Vector3f d)
 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 Generated from function MR.bestQuadrangleDiagonal.
 
static unsafe void makeDeloneOriginRing (MR.Mesh mesh, MR.EdgeId e, MR.Const_DeloneSettings? settings=null)
 improves mesh triangulation in a ring of vertices with common origin and represented by edge e Generated from function MR.makeDeloneOriginRing. Parameter settings defaults to {}.
 
static unsafe void makeDeloneOriginRing (MR.MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e, MR.Const_DeloneSettings? settings=null)
 Generated from function MR.makeDeloneOriginRing. Parameter settings defaults to {}.
 
static unsafe int makeDeloneEdgeFlips (MR.Mesh mesh, MR.Const_DeloneSettings? settings=null, int? numIters=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCallback=null)
 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,
 
static unsafe int makeDeloneEdgeFlips (MR.MeshTopology topology, MR.Const_VertCoords points, MR.Const_DeloneSettings? settings=null, int? numIters=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCallback=null)
 Generated from function MR.makeDeloneEdgeFlips. Parameter settings defaults to {}. Parameter numIters defaults to 1. Parameter progressCallback defaults to {}.
 
static unsafe int makeDeloneEdgeFlips (MR.EdgeLengthMesh mesh, MR.Const_IntrinsicDeloneSettings? settings=null, int? numIters=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCallback=null)
 improves mesh triangulation by performing flipping of edges to satisfy Intrinsic Delaunay local property, consider every edge at most numIters times,
 
static unsafe void processCloseTriangles (MR.Const_MeshPart mp, in MR.Std.Array_MRVector3f_3 t, float rangeSq, MR.Std.Const_Function_MRProcessOneResultFuncFromConstMRVector3fRefMRFaceIdConstMRVector3fRefFloat call)
 invokes given callback for all triangles from given mesh part located not further than given squared distance from t-triangle Generated from function MR.processCloseTriangles.
 
static unsafe MR.Std.Optional_Float signedDistanceToMesh (MR.Const_MeshPart mp, in MR.Vector3f p, MR.Const_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) Generated from function MR.signedDistanceToMesh.
 
static unsafe MR.FaceBitSet findOuterLayer (MR.Const_Mesh mesh)
 given a double-layer mesh with one layer having normals outside and the other layer - inside, finds all faces of the outer layer; the algorithm first detects some seed faces of each layer by casting a ray from triangle's center in both directions along the normal; then remaining faces are redistributed toward the closest seed face Generated from function MR.findOuterLayer.
 
static unsafe void makeDegenerateBandAroundRegion (MR.Mesh mesh, MR.Const_FaceBitSet region, MR.Const_MakeDegenerateBandAroundRegionParams? params_=null)
 Create a band of degenerate faces along the border of the specified region and the rest of the mesh.
 
static unsafe void buildCylinderBetweenTwoHoles (MR.Mesh mesh, MR.EdgeId a, MR.EdgeId b, MR.Const_StitchHolesParams? params_=null)
 Stitches two holes in Mesh
Build cylindrical patch to fill space between two holes represented by one of their edges each,
default metric: ComplexStitchMetric.
 
static unsafe bool buildCylinderBetweenTwoHoles (MR.Mesh mesh, MR.Const_StitchHolesParams? params_=null)
 this version finds holes in the mesh by itself and returns false if they are not found Generated from function MR.buildCylinderBetweenTwoHoles. Parameter params_ defaults to {}.
 
static unsafe void fillHole (MR.Mesh mesh, MR.EdgeId a, MR.Const_FillHoleParams? params_=null)
 Fills hole in mesh
Fills given hole represented by one of its edges (having no valid left face),
uses fillHoleTrivially if cannot fill hole without multiple edges,
default metric: CircumscribedFillMetric.
 
static unsafe void fillHoles (MR.Mesh mesh, MR.Std.Const_Vector_MREdgeId as_, MR.Const_FillHoleParams? params_=null)
 fill all holes given by their representative edges in
 
static unsafe bool isHoleBd (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId loop)
 returns true if given loop is a boundary of one hole in given mesh topology:
 
static unsafe MR.HoleFillPlan getHoleFillPlan (MR.Const_Mesh mesh, MR.EdgeId e, MR.Const_FillHoleParams? params_=null)
 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 Generated from function MR.getHoleFillPlan. Parameter params_ defaults to {}.
 
static unsafe MR.Std.Vector_MRHoleFillPlan getHoleFillPlans (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgeId holeRepresentativeEdges, MR.Const_FillHoleParams? params_=null)
 prepares the plans how to triangulate the faces or holes, each given by a boundary edge (with filling target to the left), the plans are prepared in parallel with minimal memory allocation compared to manual calling of several getHoleFillPlan(), but it can inefficient when some holes are very complex Generated from function MR.getHoleFillPlans. Parameter params_ defaults to {}.
 
static unsafe MR.HoleFillPlan getPlanarHoleFillPlan (MR.Const_Mesh mesh, MR.EdgeId 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 Generated from function MR.getPlanarHoleFillPlan.
 
static unsafe MR.Std.Vector_MRHoleFillPlan getPlanarHoleFillPlans (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgeId holeRepresentativeEdges)
 prepares the plans how to triangulate the planar faces or holes, each given by a boundary edge (with filling target to the left), the plans are prepared in parallel with minimal memory allocation compared to manual calling of several getPlanarHoleFillPlan(), but it can inefficient when some holes are very complex Generated from function MR.getPlanarHoleFillPlans.
 
static unsafe void executeHoleFillPlan (MR.Mesh mesh, MR.EdgeId a0, MR.HoleFillPlan plan, MR.FaceBitSet? outNewFaces=null)
 quickly triangulates the face or hole to the left of (e) given the plan (quickly compared to fillHole function) Generated from function MR.executeHoleFillPlan.
 
static unsafe MR.VertId fillHoleTrivially (MR.Mesh mesh, MR.EdgeId a, MR.FaceBitSet? outNewFaces=null)
 Triangulates face of hole in mesh trivially
Fills given hole represented by one of its edges (having no valid left face)
by creating one new vertex in the centroid of boundary vertices and connecting new vertex with all boundary vertices.
 
static unsafe MR.EdgeId extendHole (MR.Mesh mesh, MR.EdgeId a, MR.Const_Plane3f plane, MR.FaceBitSet? outNewFaces=null)
 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;
 
static unsafe MR.Std.Vector_MREdgeId extendAllHoles (MR.Mesh mesh, MR.Const_Plane3f plane, MR.FaceBitSet? outNewFaces=null)
 adds cylindrical extension of too all holes of the mesh by calling extendHole(...);
 
static unsafe MR.EdgeId extendHole (MR.Mesh mesh, MR.EdgeId a, MR.Std._ByValue_Function_MRVector3fFuncFromConstMRVector3fRef getVertPos, MR.FaceBitSet? outNewFaces=null)
 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 );
 
static unsafe MR.EdgeId buildBottom (MR.Mesh mesh, MR.EdgeId a, MR.Vector3f dir, float holeExtension, MR.FaceBitSet? outNewFaces=null)
 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;
 
static unsafe MR.EdgeId makeDegenerateBandAroundHole (MR.Mesh mesh, MR.EdgeId a, MR.FaceBitSet? outNewFaces=null)
 creates a band of degenerate triangles around given hole;
 
static unsafe MR.MakeBridgeResult makeQuadBridge (MR.MeshTopology topology, MR.EdgeId a, MR.EdgeId b, MR.FaceBitSet? outNewFaces=null)
 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;
 
static unsafe MR.MakeBridgeResult makeBridge (MR.MeshTopology topology, MR.EdgeId a, MR.EdgeId b, MR.FaceBitSet? outNewFaces=null)
 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;
 
static unsafe MR.MakeBridgeResult makeSmoothBridge (MR.Mesh mesh, MR.EdgeId a, MR.EdgeId b, float samplingStep, MR.FaceBitSet? outNewFaces=null)
 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;
 
static unsafe MR.EdgeId makeBridgeEdge (MR.MeshTopology topology, MR.EdgeId a, MR.EdgeId b)
 creates a new bridge edge between origins of two boundary edges a and b (both having no valid left face);
 
static unsafe void splitQuad (MR.MeshTopology topology, MR.EdgeId a, MR.FaceBitSet? outNewFaces=null)
 given quadrangle face to the left of a, splits it in two triangles with new diagonal edge via dest(a) Generated from function MR.splitQuad.
 
static unsafe int duplicateMultiHoleVertices (MR.Mesh mesh)
 Duplicates all vertices having more than two boundary edges (and returns the number of duplications); Generated from function MR.duplicateMultiHoleVertices.
 
static unsafe MR.Std.Vector_StdPairMRVertIdMRVertId findMultipleEdges (MR.Const_MeshTopology topology, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.findMultipleEdges. Parameter cb defaults to {}.
 
static unsafe bool hasMultipleEdges (MR.Const_MeshTopology topology)
 Generated from function MR.hasMultipleEdges.
 
static unsafe void fixMultipleEdges (MR.Mesh mesh, MR.Std.Const_Vector_StdPairMRVertIdMRVertId multipleEdges)
 resolves given multiple edges, but splitting all but one edge in each group Generated from function MR.fixMultipleEdges.
 
static unsafe void fixMultipleEdges (MR.Mesh mesh)
 finds and resolves multiple edges Generated from function MR.fixMultipleEdges.
 
static unsafe MR.FaceBitSet findDegenerateFaces (MR.Const_MeshPart mp, float? criticalAspectRatio=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 finds faces having aspect ratio >= criticalAspectRatio Generated from function MR.findDegenerateFaces. Parameter criticalAspectRatio defaults to 3.40282347e38f. Parameter cb defaults to {}.
 
static unsafe MR.FaceBitSet findNotSmoothFaces (MR.Const_MeshPart mp, float? minAngle=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 find inner faces of the given mesh part, which has large angles with its 3 neighbours
 
static unsafe MR.UndirectedEdgeBitSet findShortEdges (MR.Const_MeshPart mp, float criticalLength, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 finds edges having length <= criticalLength Generated from function MR.findShortEdges. Parameter cb defaults to {}.
 
static unsafe void fixMeshDegeneracies (MR.Mesh mesh, MR.Const_FixMeshDegeneraciesParams params_)
 Fixes degenerate faces and short edges in mesh (changes topology) Generated from function MR.fixMeshDegeneracies.
 
static unsafe MR.VertBitSet findNRingVerts (MR.Const_MeshTopology topology, int n, MR.Const_VertBitSet? region=null)
 finds vertices in region with complete ring of N edges Generated from function MR.findNRingVerts.
 
static unsafe bool isEdgeBetweenDoubleTris (MR.Const_MeshTopology topology, MR.EdgeId e)
 returns true if the edge e has both left and right triangular faces and the degree of dest( e ) is 2 Generated from function MR.isEdgeBetweenDoubleTris.
 
static unsafe MR.EdgeId eliminateDoubleTris (MR.MeshTopology topology, MR.EdgeId e, MR.FaceBitSet? region=null)
 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 Generated from function MR.eliminateDoubleTris.
 
static unsafe void eliminateDoubleTrisAround (MR.MeshTopology topology, MR.VertId v, MR.FaceBitSet? region=null)
 eliminates all double triangles around given vertex preserving vertex valid; if region is provided then eliminated triangles are excluded from it Generated from function MR.eliminateDoubleTrisAround.
 
static unsafe bool isDegree3Dest (MR.Const_MeshTopology topology, MR.EdgeId e)
 returns true if the destination of given edge has degree 3 and 3 incident triangles Generated from function MR.isDegree3Dest.
 
static unsafe MR.EdgeId eliminateDegree3Dest (MR.MeshTopology topology, MR.EdgeId e, MR.FaceBitSet? region=null)
 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 Generated from function MR.eliminateDegree3Dest.
 
static unsafe int eliminateDegree3Vertices (MR.MeshTopology topology, MR.VertBitSet region, MR.FaceBitSet? fs=null)
 eliminates from the mesh all vertices having degree 3 and 3 incident triangles from given region (which is updated); if
 
static unsafe MR.EdgeId isVertexRepeatedOnHoleBd (MR.Const_MeshTopology topology, MR.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) Generated from function MR.isVertexRepeatedOnHoleBd.
 
static unsafe MR.VertBitSet findRepeatedVertsOnHoleBd (MR.Const_MeshTopology topology)
 returns set bits for all vertices present on the boundary of a hole several times; Generated from function MR.findRepeatedVertsOnHoleBd.
 
static unsafe MR.FaceBitSet findHoleComplicatingFaces (MR.Const_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 Generated from function MR.findHoleComplicatingFaces.
 
static unsafe void fixMeshCreases (MR.Mesh mesh, MR.Const_FixCreasesParams? params_=null)
 Finds creases edges and re-triangulates planar areas around them, useful to fix double faces Generated from function MR.fixMeshCreases. Parameter params_ defaults to {}.
 
static unsafe MR.FaceBitSet findDisorientedFaces (MR.Const_Mesh mesh, MR.Const_FindDisorientationParams? params_=null)
 returns all faces that are oriented inconsistently, based on number of ray intersections Generated from function MR.findDisorientedFaces. Parameter params_ defaults to {}.
 
static unsafe MR.MeshIntersectionResult rayMeshIntersect (MR.Const_MeshPart meshPart, MR.Const_Line3f line, float? rayStart=null, float? rayEnd=null, MR.Const_IntersectionPrecomputes_Float? prec=null, bool? closestIntersect=null, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null)
 Finds ray and mesh intersection in float-precision. rayStart and rayEnd define the interval on the ray to detect an intersection. prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). vadidFaces if given then all faces for which false is returned will be skipped Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if !closestIntersect. Generated from function MR.rayMeshIntersect. Parameter rayStart defaults to 0.0f. Parameter rayEnd defaults to 3.40282347e38f. Parameter closestIntersect defaults to true. Parameter validFaces defaults to {}.
 
static unsafe MR.MeshIntersectionResult rayMeshIntersect (MR.Const_MeshPart meshPart, MR.Const_Line3d line, double? rayStart=null, double? rayEnd=null, MR.Const_IntersectionPrecomputes_Double? prec=null, bool? closestIntersect=null, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null)
 Finds ray and mesh intersection in double-precision. rayStart and rayEnd define the interval on the ray to detect an intersection. prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). vadidFaces if given then all faces for which false is returned will be skipped Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if !closestIntersect. Generated from function MR.rayMeshIntersect. Parameter rayStart defaults to 0.0. Parameter rayEnd defaults to 1.7976931348623157e308. Parameter closestIntersect defaults to true. Parameter validFaces defaults to {}.
 
static unsafe void multiRayMeshIntersect (MR.Const_MeshPart meshPart, MR.Std.Const_Vector_MRVector3f origins, MR.Std.Const_Vector_MRVector3f dirs, MR.Const_MultiRayMeshIntersectResult result, float? rayStart=null, float? rayEnd=null, bool? closestIntersect=null, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null)
 Finds intersections between a mesh and multiple rays in parallel (in float-precision). rayStart and rayEnd define the interval on all rays to detect an intersection. vadidFaces if given then all faces for which false is returned will be skipped Generated from function MR.multiRayMeshIntersect. Parameter rayStart defaults to 0.0f. Parameter rayEnd defaults to 3.40282347e38f. Parameter closestIntersect defaults to true. Parameter validFaces defaults to {}.
 
static unsafe MR.MultiMeshIntersectionResult rayMultiMeshAnyIntersect (MR.Std.Const_Vector_MRLine3MeshFloat lineMeshes, float? rayStart=null, float? rayEnd=null)
 Intersects ray with many meshes. Finds any intersection (not the closest) Generated from function MR.rayMultiMeshAnyIntersect. Parameter rayStart defaults to 0.0f. Parameter rayEnd defaults to 3.40282347e38f.
 
static unsafe MR.MultiMeshIntersectionResult rayMultiMeshAnyIntersect (MR.Std.Const_Vector_MRLine3MeshDouble lineMeshes, double? rayStart=null, double? rayEnd=null)
 Same as rayMultiMeshAnyIntersectF, but use double precision Generated from function MR.rayMultiMeshAnyIntersect. Parameter rayStart defaults to 0.0. Parameter rayEnd defaults to 1.7976931348623157e308.
 
static unsafe void rayMeshIntersectAll (MR.Const_MeshPart meshPart, MR.Const_Line3f line, MR.Std._ByValue_Function_BoolFuncFromConstMRMeshIntersectionResultRef callback, float? rayStart=null, float? rayEnd=null, MR.Const_IntersectionPrecomputes_Float? prec=null)
 Intersects ray with mesh. Finds all intersections Generated from function MR.rayMeshIntersectAll. Parameter rayStart defaults to 0.0f. Parameter rayEnd defaults to 3.40282347e38f.
 
static unsafe void rayMeshIntersectAll (MR.Const_MeshPart meshPart, MR.Const_Line3d line, MR.Std._ByValue_Function_BoolFuncFromConstMRMeshIntersectionResultRef callback, double? rayStart=null, double? rayEnd=null, MR.Const_IntersectionPrecomputes_Double? prec=null)
 Same as rayMeshIntersectAllF, but use double precision Generated from function MR.rayMeshIntersectAll. Parameter rayStart defaults to 0.0. Parameter rayEnd defaults to 1.7976931348623157e308.
 
static unsafe void planeMeshIntersect (MR.Const_MeshPart meshPart, MR.Const_Plane3f plane, MR.FaceBitSet? fs, MR.UndirectedEdgeBitSet? ues, MR.VertBitSet? vs, MR.Std.Vector_MRFaceId? fsVec=null)
 given mesh part and arbitrary plane, outputs
 
static unsafe void xyPlaneMeshIntersect (MR.Const_MeshPart meshPart, float zLevel, MR.FaceBitSet? fs, MR.UndirectedEdgeBitSet? ues, MR.VertBitSet? vs, MR.Std.Vector_MRFaceId? fsVec=null)
 given mesh part and plane z=zLevel, outputs
 
static unsafe MR.Mesh loadMrmesh (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in internal MeshLib format Generated from function MR.loadMrmesh. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadMrmesh (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in internal MeshLib format; important on Windows: in stream must be open in binary mode Generated from function MR.loadMrmesh. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadOff (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in .OFF format Generated from function MR.loadOff. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadOff (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in .OFF format Generated from function MR.loadOff. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadObj (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in .OBJ format Generated from function MR.loadObj. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadObj (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in .OBJ format; important on Windows: in stream must be open in binary mode Generated from function MR.loadObj. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadStl (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in any .STL format: both binary and ASCII Generated from function MR.loadStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadStl (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in any .STL format: both binary and ASCII; important on Windows: in stream must be open in binary mode Generated from function MR.loadStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadBinaryStl (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in binary .STL format Generated from function MR.loadBinaryStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadBinaryStl (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in binary .STL format; important on Windows: in stream must be open in binary mode Generated from function MR.loadBinaryStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadASCIIStl (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in textual .STL format Generated from function MR.loadASCIIStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadASCIIStl (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in textual .STL format Generated from function MR.loadASCIIStl. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadPly (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in .PLY format; Generated from function MR.loadPly. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadPly (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in .PLY format; important on Windows: in stream must be open in binary mode Generated from function MR.loadPly. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadDxf (string path, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in .DXF format; Generated from function MR.loadDxf. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadDxf (MR.Std.Istream in_, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in .DXF format; Generated from function MR.loadDxf. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadMesh (string file, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from file in the format detected from file extension Generated from function MR.loadMesh. Parameter settings defaults to {}.
 
static unsafe MR.Mesh loadMesh (MR.Std.Istream in_, string extension, MR.Const_MeshLoadSettings? settings=null)
 loads mesh from stream in the format detected from given extension-string (*.ext); important on Windows: in stream must be open in binary mode Generated from function MR.loadMesh. Parameter settings defaults to {}.
 
static unsafe MR.Vector3f orgPnt (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 returns coordinates of the edge origin Generated from function MR.orgPnt.
 
static unsafe MR.Vector3f destPnt (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 returns coordinates of the edge destination Generated from function MR.destPnt.
 
static unsafe MR.Vector3f edgeVector (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 returns vector equal to edge destination point minus edge origin point Generated from function MR.edgeVector.
 
static unsafe MR.LineSegm3f edgeSegment (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 returns line segment of given edge Generated from function MR.edgeSegment.
 
static unsafe MR.Vector3f edgePoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e, float f)
 returns a point on the edge: origin point for f=0 and destination point for f=1 Generated from function MR.edgePoint.
 
static unsafe MR.Vector3f edgePoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_EdgePoint ep)
 computes coordinates of point given as edge and relative position on it Generated from function MR.edgePoint.
 
static unsafe MR.Vector3f edgeCenter (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 computes the center of given edge Generated from function MR.edgeCenter.
 
static unsafe void getLeftTriPoints (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e, ref MR.Vector3f v0, ref MR.Vector3f v1, ref MR.Vector3f v2)
 returns three points of left face of e: v0 = orgPnt( e ), v1 = destPnt( e ) Generated from function MR.getLeftTriPoints.
 
static unsafe MR.Std.Array_MRVector3f_3 getLeftTriPoints (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 returns three points of left face of e: res[0] = orgPnt( e ), res[1] = destPnt( e ) Generated from function MR.getLeftTriPoints.
 
static unsafe void getTriPoints (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f, ref MR.Vector3f v0, ref MR.Vector3f v1, ref MR.Vector3f v2)
 returns three points of given face Generated from function MR.getTriPoints.
 
static unsafe MR.Std.Array_MRVector3f_3 getTriPoints (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns three points of given face Generated from function MR.getTriPoints.
 
static unsafe MR.Vector3f triPoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_MeshTriPoint p)
 computes coordinates of point given as face and barycentric representation Generated from function MR.triPoint.
 
static unsafe MR.Vector3f triCenter (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns the centroid of given triangle Generated from function MR.triCenter.
 
static unsafe float triangleAspectRatio (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns aspect ratio of given mesh triangle equal to the ratio of the circum-radius to twice its in-radius Generated from function MR.triangleAspectRatio.
 
static unsafe float circumcircleDiameterSq (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns squared circumcircle diameter of given mesh triangle Generated from function MR.circumcircleDiameterSq.
 
static unsafe float circumcircleDiameter (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns circumcircle diameter of given mesh triangle Generated from function MR.circumcircleDiameter.
 
static unsafe MR.MeshTriPoint toTriPoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f, in MR.Vector3f p)
 converts face id and 3d point into barycentric representation Generated from function MR.toTriPoint.
 
static unsafe MR.MeshTriPoint toTriPoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_PointOnFace p)
 converts face id and 3d point into barycentric representation Generated from function MR.toTriPoint.
 
static unsafe MR.EdgePoint toEdgePoint (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e, in MR.Vector3f p)
 converts edge and 3d point into edge-point representation Generated from function MR.toEdgePoint.
 
static unsafe MR.VertId getClosestVertex (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_PointOnFace p)
 returns one of three face vertices, closest to given point Generated from function MR.getClosestVertex.
 
static unsafe MR.VertId getClosestVertex (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_MeshTriPoint p)
 returns one of three face vertices, closest to given point Generated from function MR.getClosestVertex.
 
static unsafe MR.UndirectedEdgeId getClosestEdge (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_PointOnFace p)
 returns one of three face edges, closest to given point Generated from function MR.getClosestEdge.
 
static unsafe MR.UndirectedEdgeId getClosestEdge (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_MeshTriPoint p)
 returns one of three face edges, closest to given point Generated from function MR.getClosestEdge.
 
static unsafe float edgeLength (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 returns Euclidean length of the edge Generated from function MR.edgeLength.
 
static unsafe MR.UndirectedEdgeScalars edgeLengths (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 computes and returns the lengths of all edges in the mesh Generated from function MR.edgeLengths.
 
static unsafe float edgeLengthSq (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 returns squared Euclidean length of the edge (faster to compute than length) Generated from function MR.edgeLengthSq.
 
static unsafe MR.Vector3f leftDirDblArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes directed double area of left triangular face of given edge Generated from function MR.leftDirDblArea.
 
static unsafe MR.Vector3f dirDblArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 computes directed double area for a triangular face from its vertices Generated from function MR.dirDblArea.
 
static unsafe MR.VertCoords dirDblAreas (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_VertBitSet? region=null)
 computes and returns the directed double area for every (region) vertex in the mesh Generated from function MR.dirDblAreas.
 
static unsafe float dblArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns twice the area of given face Generated from function MR.dblArea.
 
static unsafe float area (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns the area of given face Generated from function MR.area.
 
static unsafe double area (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_FaceBitSet? fs=null)
 computes the area of given face-region (or whole mesh) Generated from function MR.area.
 
static unsafe MR.Vector3d dirArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_FaceBitSet? fs=null)
 computes the sum of directed areas for faces from given region (or whole mesh) Generated from function MR.dirArea.
 
static unsafe double projArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, in MR.Vector3f dir, MR.Const_FaceBitSet? fs=null)
 computes the sum of absolute projected area of faces from given region (or whole mesh) as visible if look from given direction Generated from function MR.projArea.
 
static unsafe double volume (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_FaceBitSet? region=null)
 returns volume of the object surrounded by given region (or whole mesh if (region) is nullptr); if the region has holes then each hole will be virtually filled by adding triangles for each edge and the hole's geometrical center Generated from function MR.volume.
 
static unsafe double holePerimeter (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes the perimeter of the hole specified by one of its edges with no valid left face (left is hole) Generated from function MR.holePerimeter.
 
static unsafe MR.Vector3d holeDirArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes directed area of the hole specified by one of its edges with no valid left face (left is hole); if the hole is planar then returned vector is orthogonal to the plane pointing outside and its magnitude is equal to hole area Generated from function MR.holeDirArea.
 
static unsafe MR.Vector3f leftTangent (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes unit vector that is both orthogonal to given edge and to the normal of its left triangle, the vector is directed inside left triangle Generated from function MR.leftTangent.
 
static unsafe MR.Vector3f leftNormal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes triangular face normal from its vertices Generated from function MR.leftNormal.
 
static unsafe MR.Vector3f normal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 computes triangular face normal from its vertices Generated from function MR.normal.
 
static unsafe MR.Plane3f getPlane3f (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 returns the plane containing given triangular face with normal looking outwards Generated from function MR.getPlane3f.
 
static unsafe MR.Plane3d getPlane3d (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.FaceId f)
 Generated from function MR.getPlane3d.
 
static unsafe MR.Vector3f dirDblArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v)
 computes sum of directed double areas of all triangles around given vertex Generated from function MR.dirDblArea.
 
static unsafe float dblArea (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v)
 computes the length of summed directed double areas of all triangles around given vertex Generated from function MR.dblArea.
 
static unsafe MR.Vector3f normal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v)
 computes normal in a vertex using sum of directed areas of neighboring triangles Generated from function MR.normal.
 
static unsafe MR.Vector3f normal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_MeshTriPoint p)
 computes normal in three vertices of p's triangle, then interpolates them using barycentric coordinates and normalizes again; this is the same normal as in rendering with smooth shading Generated from function MR.normal.
 
static unsafe MR.Vector3f pseudonormal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v, MR.Const_FaceBitSet? region=null)
 computes angle-weighted sum of normals of incident faces of given vertex (only (region) faces will be considered); the sum is normalized before returning Generated from function MR.pseudonormal.
 
static unsafe MR.Vector3f pseudonormal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e, MR.Const_FaceBitSet? region=null)
 computes normalized half sum of face normals sharing given edge (only (region) faces will be considered); Generated from function MR.pseudonormal.
 
static unsafe MR.Vector3f pseudonormal (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_MeshTriPoint p, MR.Const_FaceBitSet? region=null)
 returns pseudonormal in corresponding face/edge/vertex for signed distance calculation as suggested in the article "Signed Distance Computation Using the Angle Weighted Pseudonormal" by J. Andreas Baerentzen and Henrik Aanaes, https://backend.orbit.dtu.dk/ws/portalfiles/portal/3977815/B_rentzen.pdf unlike normal( const MeshTriPoint & p ), this is not a smooth function Generated from function MR.pseudonormal.
 
static unsafe float sumAngles (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v, MR.Misc.InOut< bool >? outBoundaryVert=null)
 computes the sum of triangle angles at given vertex; optionally returns whether the vertex is on boundary Generated from function MR.sumAngles.
 
static unsafe MR.VertBitSet findSpikeVertices (MR.Const_MeshTopology topology, MR.Const_VertCoords points, float minSumAngle, MR.Const_VertBitSet? region=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 returns vertices where the sum of triangle angles is below given threshold Generated from function MR.findSpikeVertices. Parameter cb defaults to {}.
 
static unsafe float dihedralAngleSin (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes sine of dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface Generated from function MR.dihedralAngleSin.
 
static unsafe float dihedralAngleCos (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes cosine of dihedral angle between them: 1 if both faces are in the same plane, 0 if the surface makes right angle turn at the edge, -1 if the faces overlap one another Generated from function MR.dihedralAngleCos.
 
static unsafe float dihedralAngle (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 given an edge between two triangular faces, computes the dihedral angle between them: 0 if both faces are in the same plane, positive if the faces form convex surface, negative if the faces form concave surface; please consider the usage of faster dihedralAngleSin(e) and dihedralAngleCos(e) Generated from function MR.dihedralAngle.
 
static unsafe float discreteMeanCurvature (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v)
 computes discrete mean curvature in given vertex, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface Generated from function MR.discreteMeanCurvature.
 
static unsafe float discreteMeanCurvature (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId e)
 computes discrete mean curvature in given edge, measures in length^-1; 0 for planar regions, positive for convex surface, negative for concave surface Generated from function MR.discreteMeanCurvature.
 
static unsafe float discreteGaussianCurvature (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v, MR.Misc.InOut< bool >? outBoundaryVert=null)
 computes discrete Gaussian curvature (or angle defect) at given vertex, which 0 in inner vertices on planar mesh parts and reaches 2*pi on needle's tip, see http://math.uchicago.edu/~may/REU2015/REUPapers/Upadhyay.pdf optionally returns whether the vertex is on boundary Generated from function MR.discreteGaussianCurvature.
 
static unsafe MR.UndirectedEdgeBitSet findCreaseEdges (MR.Const_MeshTopology topology, MR.Const_VertCoords points, float angleFromPlanar)
 finds all mesh edges where dihedral angle is distinct from planar PI angle on at least given value Generated from function MR.findCreaseEdges.
 
static unsafe float leftCotan (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.EdgeId e)
 computes cotangent of the angle in the left( e ) triangle opposite to e, and returns 0 if left face does not exist Generated from function MR.leftCotan.
 
static unsafe float cotan (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.UndirectedEdgeId ue)
 computes sum of cotangents of the angle in the left and right triangles opposite to given edge, consider cotangents zero for not existing triangles Generated from function MR.cotan.
 
static unsafe MR.QuadraticForm3f quadraticForm (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v, bool angleWeigted, MR.Const_FaceBitSet? region=null, MR.Const_UndirectedEdgeBitSet? creases=null)
 computes quadratic form in the vertex as the sum of squared distances from 1) planes of adjacent triangles, with the weight equal to the angle of adjacent triangle at this vertex divided on PI in case of angleWeigted=true; 2) lines of adjacent boundary and crease edges Generated from function MR.quadraticForm.
 
static unsafe MR.Box3f computeBoundingBox (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.Const_FaceBitSet? region, MR.AffineXf3f? toWorld=null)
 passes through all given faces (or whole mesh if region == null) and finds the minimal bounding box containing all of them if toWorld transformation is given then returns minimal bounding box in world space Generated from function MR.computeBoundingBox.
 
static unsafe float averageEdgeLength (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 computes average length of an edge in the mesh given by (topology, points) Generated from function MR.averageEdgeLength.
 
static unsafe MR.Vector3f findCenterFromPoints (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 computes average position of all valid mesh vertices Generated from function MR.findCenterFromPoints.
 
static unsafe MR.Vector3f findCenterFromFaces (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 computes center of mass considering that density of all triangles is the same Generated from function MR.findCenterFromFaces.
 
static unsafe MR.Vector3f findCenterFromBBox (MR.Const_MeshTopology topology, MR.Const_VertCoords points)
 computes bounding box and returns its center Generated from function MR.findCenterFromBBox.
 
static unsafe MR.MeshMeshDistanceResult findDistance (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null, float? upDistLimitSq=null)
 computes minimal distance between two meshes or two mesh regions
 
static unsafe MR.MeshMeshSignedDistanceResult findSignedDistance (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null, float? upDistLimitSq=null)
 computes minimal distance between two meshes
 
static unsafe float findMaxDistanceSqOneWay (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null, float? maxDistanceSq=null)
 returns the maximum of the squared distances from each B-mesh vertex to A-mesh
 
static unsafe float findMaxDistanceSq (MR.Const_MeshPart a, MR.Const_MeshPart b, MR.AffineXf3f? rigidB2A=null, float? maxDistanceSq=null)
 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)
 
static unsafe double calcCombinedFillMetric (MR.Const_Mesh mesh, MR.Const_FaceBitSet filledRegion, MR.Const_FillHoleMetric metric)
 Computes combined metric after filling a hole Generated from function MR.calcCombinedFillMetric.
 
static unsafe MR.FillHoleMetric getCircumscribedMetric (MR.Const_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. Generated from function MR.getCircumscribedMetric.
 
static unsafe MR.FillHoleMetric getPlaneFillMetric (MR.Const_Mesh mesh, MR.EdgeId e)
 Same as getCircumscribedFillMetric, but with extra penalty for the triangles having normals looking in the opposite side of plane containing left of (e). Generated from function MR.getPlaneFillMetric.
 
static unsafe MR.FillHoleMetric getPlaneNormalizedFillMetric (MR.Const_Mesh mesh, MR.EdgeId 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. Generated from function MR.getPlaneNormalizedFillMetric.
 
static unsafe MR.FillHoleMetric getComplexStitchMetric (MR.Const_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.
Where
triangleMetric is proportional to triangle aspect ratio
edgeMetric is proportional to ( 1 - dihedralAngleCos ) Generated from function MR.getComplexStitchMetric.
 
static unsafe MR.FillHoleMetric getEdgeLengthFillMetric (MR.Const_Mesh mesh)
 Simple metric minimizing the sum of all edge lengths Generated from function MR.getEdgeLengthFillMetric.
 
static unsafe MR.FillHoleMetric getEdgeLengthStitchMetric (MR.Const_Mesh mesh)
 Forbids connecting vertices from the same hole
Simple metric minimizing edge length Generated from function MR.getEdgeLengthStitchMetric.
 
static unsafe MR.FillHoleMetric getVerticalStitchMetric (MR.Const_Mesh mesh, in MR.Vector3f upDir)
 Forbids connecting vertices from the same hole
penalize for large area and face normal deviation from upDir
All new faces should be parallel to given direction Generated from function MR.getVerticalStitchMetric.
 
static unsafe MR.FillHoleMetric getVerticalStitchMetricEdgeBased (MR.Const_Mesh mesh, in MR.Vector3f upDir)
 Forbids connecting vertices from the same hole
penalize for long edges and its deviation from upDir
All new faces should be parallel to given direction Generated from function MR.getVerticalStitchMetricEdgeBased.
 
static unsafe MR.FillHoleMetric getComplexFillMetric (MR.Const_Mesh mesh, MR.EdgeId 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.
Where
triangleMetric is proportional to weighted triangle area and triangle aspect ratio
edgeMetric grows with angle between triangles as ( ( 1 - cos( x ) ) / ( 1 + cos( x ) ) ) ^ 4. Generated from function MR.getComplexFillMetric.
 
static unsafe MR.FillHoleMetric getParallelPlaneFillMetric (MR.Const_Mesh mesh, MR.EdgeId e, MR.Const_Plane3f? plane=null)
 This metric minimizes summary projection of new edges to plane normal, (try do produce edges parallel to plane) Generated from function MR.getParallelPlaneFillMetric.
 
static unsafe MR.FillHoleMetric getMaxDihedralAngleMetric (MR.Const_Mesh mesh)
 This metric minimizes the maximal dihedral angle between the faces in the triangulation and on its boundary Generated from function MR.getMaxDihedralAngleMetric.
 
static unsafe MR.FillHoleMetric getUniversalMetric (MR.Const_Mesh mesh)
 This metric consists of two parts 1) for each triangle: it is the circumcircle diameter, this avoids the appearance of degenerate triangles; 2) for each edge: square root of double total area of triangles to its left and right times the factor depending extensionally on absolute dihedral angle between left and right triangles, this makes visually triangulated surface as smooth as possible. For planar holes it is the same as getCircumscribedMetric. Generated from function MR.getUniversalMetric.
 
static unsafe MR.FillHoleMetric getMinTriAngleMetric (MR.Const_Mesh mesh)
 This metric maximizes the minimal angle among all faces in the triangulation Generated from function MR.getMinTriAngleMetric.
 
static unsafe MR.FillHoleMetric getMinAreaMetric (MR.Const_Mesh mesh)
 This metric is for triangulation construction with minimal summed area of triangles. Warning: this metric can produce degenerated triangles Generated from function MR.getMinAreaMetric.
 
static unsafe MR.FaceNormals computePerFaceNormals (MR.Const_Mesh mesh)
 returns a vector with face-normal in every element for valid mesh faces Generated from function MR.computePerFaceNormals.
 
static unsafe void computePerFaceNormals4 (MR.Const_Mesh mesh, MR.Misc.InOut< MR.Vector4f >? faceNormals, ulong size)
 fills buffer with face-normals as Vector4f for valid mesh faces Generated from function MR.computePerFaceNormals4.
 
static unsafe MR.VertCoords computePerVertNormals (MR.Const_Mesh mesh)
 returns a vector with vertex normals in every element for valid mesh vertices Generated from function MR.computePerVertNormals.
 
static unsafe MR.VertCoords computePerVertPseudoNormals (MR.Const_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 Generated from function MR.computePerVertPseudoNormals.
 
static unsafe MR.MeshNormals computeMeshNormals (MR.Const_Mesh mesh)
 computes both per-face and per-vertex normals more efficiently then just calling both previous functions Generated from function MR.computeMeshNormals.
 
static unsafe MR.Vector_StdArrayMRVector3f3_MRFaceId computePerCornerNormals (MR.Const_Mesh mesh, MR.Const_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 Generated from function MR.computePerCornerNormals.
 
static unsafe MR.Std.Optional_MRMeshOrPoints getMeshOrPoints (MR.Const_Object? obj)
 constructs MeshOrPoints from ObjectMesh or ObjectPoints, otherwise returns nullopt Generated from function MR.getMeshOrPoints.
 
static unsafe MR.Std.Optional_MRMeshOrPointsXf getMeshOrPointsXf (MR.Const_Object? obj)
 Generated from function MR.getMeshOrPointsXf.
 
static unsafe void projectOnAll (in MR.Vector3f pt, MR.Const_AABBTreeObjects tree, float upDistLimitSq, MR.Std.Const_Function_VoidFuncFromMRObjIdMRMeshOrPointsProjectionResult callback, MR._InOpt_ObjId skipObjId=default)
 finds closest point on every object within given distance Generated from function MR.projectOnAll. Parameter skipObjId defaults to {}.
 
static unsafe MR.MeshOrPoints.ProjectionResult projectWorldPointOntoObject (in MR.Vector3f p, MR.Const_Object obj)
 Projects a point onto an object, in world space. Returns .valid() == false if this object type isn't projectable onto. Generated from function MR.projectWorldPointOntoObject.
 
static unsafe MR.MeshOrPoints.ProjectionResult projectWorldPointOntoObjectsRecursive (in MR.Vector3f p, MR.Const_Object? root=null, MR.Std._ByValue_Function_BoolFuncFromConstMRObjectRef? projectPred=null, MR.Std._ByValue_Function_BoolFuncFromConstMRObjectRef? recursePred=null)
 Recursively visits the objects and projects the point on each one. Returns the closest projection. If root is null, the scene root is used. Not passing SceneRoot.get() directly to avoid including that header. If projectPred is specified and false, will not project onto this object. If recursePred is specified and false, will not visit the children of this object. Generated from function MR.projectWorldPointOntoObjectsRecursive. Parameter projectPred defaults to nullptr. Parameter recursePred defaults to nullptr.
 
static unsafe MR.Std.Vector_MRFaceBitSet findOverhangs (MR.Const_Mesh mesh, MR.Const_FindOverhangsSettings settings)
 Find face regions that might create overhangs.
 
static unsafe MR.MeshProjectionTransforms createProjectionTransforms (ref MR.AffineXf3f storageXf, MR.AffineXf3f? pointXf, MR.AffineXf3f? treeXf)
 Creates structure with simplified transforms for projection functions, with rigidXfPoint applied to point, and nonRigidXfTree applied to tree.
 
static unsafe MR.MeshProjectionResult findProjection (in MR.Vector3f pt, MR.Const_MeshPart mp, float? upDistLimitSq=null, MR.AffineXf3f? xf=null, float? loDistLimitSq=null, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null, MR.Std.Const_Function_BoolFuncFromConstMRMeshProjectionResultRef? validProjections=null)
 computes the closest point on mesh (or its region) to given point
 
static unsafe MR.MeshProjectionResult findProjectionSubtree (in MR.Vector3f pt, MR.Const_MeshPart mp, MR.Const_AABBTree tree, float? upDistLimitSq=null, MR.AffineXf3f? xf=null, float? loDistLimitSq=null, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null, MR.Std.Const_Function_BoolFuncFromConstMRMeshProjectionResultRef? validProjections=null)
 computes the closest point on mesh (or its region) to given point
 
static unsafe void findBoxedTrisInBall (MR.Const_MeshPart mp, MR.Const_Ball3f ball, MR.Std.Const_Function_MRProcessingFuncFromMRFaceIdMRBall3fRef foundCallback)
 enumerates all triangles with bounding boxes at least partially in the ball (the triangles themselves can be fully out of ball) until callback returns Stop; the ball during enumeration can shrink (new ball is always within the previous one) but never expand Generated from function MR.findBoxedTrisInBall.
 
static unsafe void findTrisInBall (MR.Const_MeshPart mp, MR.Const_Ball3f ball, MR.Std.Const_Function_MRProcessingFuncFromConstMRMeshProjectionResultRefMRBall3fRef foundCallback, MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces=null)
 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 Generated from function MR.findTrisInBall. Parameter validFaces defaults to {}.
 
static unsafe MR.Std.Optional_MRSignedDistanceToMeshResult findSignedDistance (in MR.Vector3f pt, MR.Const_MeshPart mp, float? upDistLimitSq=null, float? loDistLimitSq=null)
 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)
 
static unsafe bool relax (MR.Mesh mesh, MR.Const_MeshRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 applies given number of relaxation iterations to the whole mesh ( or some region if it is specified )
 
static unsafe bool relax (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_MeshRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.relax. Parameter params_ defaults to {}. Parameter cb defaults to {}.
 
static unsafe MR.Vector3f vertexPosEqualNeiAreas (MR.Const_Mesh mesh, MR.VertId v, bool noShrinkage)
 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 Generated from function MR.vertexPosEqualNeiAreas.
 
static unsafe MR.Vector3f vertexPosEqualNeiAreas (MR.Const_MeshTopology topology, MR.Const_VertCoords points, MR.VertId v, bool noShrinkage)
 Generated from function MR.vertexPosEqualNeiAreas.
 
static unsafe bool equalizeTriAreas (MR.Mesh mesh, MR.Const_MeshEqualizeTriAreasParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 applies given number of iterations with movement toward vertexPosEqualNeiAreas() to the whole mesh ( or some region if it is specified )
 
static unsafe bool equalizeTriAreas (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_MeshEqualizeTriAreasParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.equalizeTriAreas. Parameter params_ defaults to {}. Parameter cb defaults to {}.
 
static unsafe bool relaxKeepVolume (MR.Mesh mesh, MR.Const_MeshRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 applies given number of relaxation iterations to the whole mesh ( or some region if it is specified )
do not really keeps volume but tries hard
 
static unsafe bool relaxKeepVolume (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_MeshRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.relaxKeepVolume. Parameter params_ defaults to {}. Parameter cb defaults to {}.
 
static unsafe bool relaxApprox (MR.Mesh mesh, MR.Const_MeshApproxRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) approx neighborhoods
 
static unsafe bool relaxApprox (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_MeshApproxRelaxParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.relaxApprox. Parameter params_ defaults to {}. Parameter cb defaults to {}.
 
static unsafe void removeSpikes (MR.Mesh mesh, int maxIterations, float minSumAngle, MR.Const_VertBitSet? region=null)
 applies at most given number of relaxation iterations the spikes detected by given threshold Generated from function MR.removeSpikes.
 
static unsafe void removeSpikes (MR.Const_MeshTopology topology, MR.VertCoords points, int maxIterations, float minSumAngle, MR.Const_VertBitSet? region=null)
 Generated from function MR.removeSpikes.
 
static unsafe void smoothRegionBoundary (MR.Mesh mesh, MR.Const_FaceBitSet regionFaces, int? numIters=null)
 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;
 
static unsafe void hardSmoothTetrahedrons (MR.Mesh mesh, MR.Const_VertBitSet? region=null)
 move all region vertices with exactly three neighbor vertices in the center of the neighbors Generated from function MR.hardSmoothTetrahedrons.
 
static unsafe void hardSmoothTetrahedrons (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_VertBitSet? region=null)
 Generated from function MR.hardSmoothTetrahedrons.
 
static unsafe void replicateZ (MR.Mesh m, MR.Const_Mesh target)
 adjusts z-coordinates of (m) vertices to make adjusted (m) similar to (target) Generated from function MR.replicateZ.
 
static unsafe int subdivideMesh (MR.Mesh mesh, MR.Const_SubdivideSettings? settings=null)
 splits edges in mesh region according to the settings;

 
static unsafe int subdivideMesh (MR.ObjectMeshData data, MR.Const_SubdivideSettings settings)
 subdivides mesh with per-element attributes according to given settings; \detail if settings.region is not null, then given region must be a subset of current face selection or face selection must absent
 
static unsafe MR.Mesh copySubdividePackMesh (MR.Const_MeshPart mp, float voxelSize, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 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 Generated from function MR.copySubdividePackMesh. Parameter cb defaults to {}.
 
static unsafe MR.ObjectMeshData makeSubdividedObjectMeshData (MR.Const_ObjectMesh obj, MR.Const_SubdivideSettings settings)
 returns the data of subdivided mesh given ObjectMesh (which remains unchanged) and subdivision parameters Generated from function MR.makeSubdividedObjectMeshData.
 
static unsafe MR.Std.Function_VoidFuncFromMREdgeIdMREdgeId meshOnEdgeSplitAttribute (MR.Const_Mesh mesh, MR.Const_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 ); Generated from function MR.meshOnEdgeSplitAttribute.
 
static unsafe MR.Std.Function_VoidFuncFromMREdgeIdMREdgeId meshOnEdgeSplitVertAttribute (MR.Const_Mesh mesh, MR.Const_MeshAttributesToUpdate params_)
 Generated from function MR.meshOnEdgeSplitVertAttribute.
 
static unsafe MR.Std.Function_VoidFuncFromMREdgeIdMREdgeId meshOnEdgeSplitFaceAttribute (MR.Const_Mesh mesh, MR.Const_MeshAttributesToUpdate params_)
 Generated from function MR.meshOnEdgeSplitFaceAttribute.
 
static unsafe MR.Std.Optional_MRVertScalars computeRayThicknessAtVertices (MR.Const_Mesh mesh, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 returns the distance from each vertex along minus normal to the nearest mesh intersection (or FLT_MAX if no intersection found) Generated from function MR.computeRayThicknessAtVertices. Parameter progress defaults to {}.
 
static unsafe MR.MeshIntersectionResult rayInsideIntersect (MR.Const_Mesh mesh, MR.Const_MeshPoint m, float? rayEnd=null)
 returns the nearest intersection between the mesh and the ray from given point along minus normal (inside the mesh) Generated from function MR.rayInsideIntersect. Parameter rayEnd defaults to 3.40282347e38f.
 
static unsafe MR.MeshIntersectionResult rayInsideIntersect (MR.Const_Mesh mesh, MR.VertId v, float? rayEnd=null)
 Generated from function MR.rayInsideIntersect. Parameter rayEnd defaults to 3.40282347e38f.
 
static unsafe MR.InSphere findInSphere (MR.Const_Mesh mesh, MR.Const_MeshPoint m, MR.Const_InSphereSearchSettings settings)
 finds maximal sphere inscribed in the mesh touching point (p) with center along the normal at (p) Generated from function MR.findInSphere.
 
static unsafe MR.InSphere findInSphere (MR.Const_Mesh mesh, MR.VertId v, MR.Const_InSphereSearchSettings settings)
 Generated from function MR.findInSphere.
 
static unsafe MR.Std.Optional_MRVertScalars computeInSphereThicknessAtVertices (MR.Const_Mesh mesh, MR.Const_InSphereSearchSettings settings, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 returns the thickness at each vertex as the diameter of the maximal inscribed sphere Generated from function MR.computeInSphereThicknessAtVertices. Parameter progress defaults to {}.
 
static unsafe MR.PointCloud meshToPointCloud (MR.Const_Mesh mesh, bool? saveNormals=null, MR.Const_VertBitSet? verts=null)
 Mesh to PointCloud Generated from function MR.meshToPointCloud. Parameter saveNormals defaults to true.
 
static unsafe MR.FaceBitSet subdivideWithPlane (MR.Mesh mesh, MR.Const_Plane3f plane, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old=null, float? eps=null, MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeIdFloat? onEdgeSplitCallback=null)
 subdivides all triangles intersected by given plane, leaving smaller triangles that only touch the plane;
 
static unsafe void trimWithPlane (MR.Mesh mesh, MR.Const_TrimWithPlaneParams params_, MR.Const_TrimOptionalOutput? optOut=null)
 trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal
 
static unsafe bool same (MR.Const_MeshTopology topology, MR.Const_MeshTriPoint lhs, MR.Const_MeshTriPoint rhs)
 returns true if two points are equal considering different representations Generated from function MR.same.
 
static unsafe bool fromSameTriangle (MR.Const_MeshTopology topology, MR.MeshTriPoint a, MR.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 Generated from function MR.fromSameTriangle.
 
static unsafe bool fromSameTriangle (MR.Const_MeshTopology topology, MR.Misc._Moved< MR.MeshTriPoint > a, MR.Misc._Moved< MR.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 Generated from function MR.fromSameTriangle.
 
static unsafe MR.MeshTriPoint getVertexAsMeshTriPoint (MR.Const_MeshTopology topology, MR.EdgeId e, MR.VertId v)
 returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible Generated from function MR.getVertexAsMeshTriPoint.
 
static unsafe MR.LoadedObjectT fromSceneMison (string path, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 load scene from MISON file
JSON file with array named "Objects" or root array:
element fields:
"Filename" : required full path to file for loading object "XF": optional xf for loaded object "Name": optional name for loaded object Generated from function MR.fromSceneMison. Parameter callback defaults to {}.
 
static unsafe MR.LoadedObjectT fromSceneMison (MR.Std.Istream in_, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.fromSceneMison. Parameter callback defaults to {}.
 
static unsafe MR.Mesh makeMovementBuildBody (MR.Std.Const_Vector_StdVectorMRVector3f body, MR.Std.Const_Vector_StdVectorMRVector3f trajectory, MR.Const_MovementBuildBodyParams? params_=null)
 makes mesh by moving body along trajectory if allowRotation rotate it in corners Generated from function MR.makeMovementBuildBody. Parameter params_ defaults to {}.
 
static unsafe void updateGroupPairs (MR.ICPGroupPairs pairs, MR.Const_Vector_MRMeshOrPointsXf_MRObjId objs, MR.Std._ByValue_Function_VoidFuncFromConstMRVector3fRefMRMeshOrPointsProjectionResultRefMRObjIdRef srcProjector, MR.Std._ByValue_Function_VoidFuncFromConstMRVector3fRefMRMeshOrPointsProjectionResultRefMRObjIdRef tgtProjector, float cosThreshold, float distThresholdSq, bool mutualClosest)
 in each pair updates the target data and performs basic filtering (activation) Generated from function MR.updateGroupPairs.
 
static unsafe void denoiseNormals (MR.Const_Mesh mesh, MR.FaceNormals normals, MR.Const_UndirectedEdgeScalars v, float gamma)
 Smooth face normals, given.
 
static unsafe void updateIndicator (MR.Const_Mesh mesh, MR.UndirectedEdgeScalars v, MR.Const_FaceNormals normals, float beta, float gamma)
 Compute edge indicator function (1 - smooth edge, 0 - crease edge) by solving large system of linear equations.
 
static unsafe void updateIndicatorFast (MR.Const_MeshTopology topology, MR.UndirectedEdgeScalars v, MR.Const_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.
 
static unsafe void meshDenoiseViaNormals (MR.Mesh mesh, MR.Const_DenoiseViaNormalsSettings? settings=null)
 Reduces noise in given mesh, see the article "Mesh Denoising via a Novel Mumford-Shah Framework" Generated from function MR.meshDenoiseViaNormals. Parameter settings defaults to {}.
 
static unsafe MR.Std.StringView toString (MR.DimensionsVisualizePropertyType value)
 Generated from function MR.toString.
 
static unsafe MR.Object createObject (string className)
 the function to create new object instance by registered class name Generated from function MR.createObject.
 
static unsafe MR.ObjectLines merge (MR.Std.Const_Vector_StdSharedPtrMRObjectLines objsLines)
 constructs new ObjectLines containing the union of valid data from all input objects Generated from function MR.merge.
 
static unsafe MR.ObjectLines cloneRegion (MR.Const_ObjectLines objLines, MR.Const_UndirectedEdgeBitSet region)
 constructs new ObjectLines containing the region of data from input object Generated from function MR.cloneRegion.
 
static unsafe MR.LoadedObjectT_MRObjectMesh makeObjectMeshFromFile (string file, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 loads mesh from given file in new object Generated from function MR.makeObjectMeshFromFile. Parameter cb defaults to {}.
 
static unsafe MR.LoadedObjectT makeObjectFromMeshFile (string file, MR.Std.Const_Function_BoolFuncFromFloat? cb=null, bool? returnOnlyMesh=null)
 loads data from given file and makes either ObjectMesh, ObjectLines or ObjectPoints (if the file has points or edges but not faces) Generated from function MR.makeObjectFromMeshFile. Parameter cb defaults to {}. Parameter returnOnlyMesh defaults to false.
 
static unsafe MR.ObjectLines makeObjectLinesFromFile (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 loads lines from given file in new object Generated from function MR.makeObjectLinesFromFile. Parameter callback defaults to {}.
 
static unsafe MR.ObjectPoints makeObjectPointsFromFile (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 loads points from given file in new object Generated from function MR.makeObjectPointsFromFile. Parameter callback defaults to {}.
 
static unsafe MR.ObjectDistanceMap makeObjectDistanceMapFromFile (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 loads distance map from given file in new object Generated from function MR.makeObjectDistanceMapFromFile. Parameter callback defaults to {}.
 
static unsafe MR.ObjectGcode makeObjectGcodeFromFile (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 loads gcode from given file in new object Generated from function MR.makeObjectGcodeFromFile. Parameter callback defaults to {}.
 
static unsafe MR.LoadedObjects loadObjectFromFile (string filename, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 load all objects (or any type: mesh, lines, points, voxels or scene) from file
 
static unsafe bool isSupportedFileInSubfolders (string folder)
 Generated from function MR.isSupportedFileInSubfolders.
 
static unsafe MR.LoadedObjectT loadSceneFromAnySupportedFormat (string path, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.loadSceneFromAnySupportedFormat. Parameter callback defaults to {}.
 
static unsafe MR.LoadedObjectT deserializeObjectTree (string path, MR.Std.Const_Function_VoidFuncFromConstStdFilesystemPathRef? postDecompress=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCb=null)
 loads objects tree from given scene file (zip/mru)
 
static unsafe MR.LoadedObjectT deserializeObjectTreeFromFolder (string folder, MR.Std.Const_Function_BoolFuncFromFloat? progressCb=null)
 loads objects tree from given scene folder
 
static unsafe MR.Std.Vector_MRIOFilter getAllFilters ()
 returns filters for all supported file formats for all types of objects Generated from function MR.getAllFilters.
 
static unsafe MR.ObjectMesh merge (MR.Std.Const_Vector_StdSharedPtrMRObjectMesh objsMesh, MR.Const_ObjectMeshMergeOptions? options=null)
 constructs new ObjectMesh containing the union of valid data from all input objects Generated from function MR.merge. Parameter options defaults to {}.
 
static unsafe MR.ObjectMesh cloneRegion (MR.Const_ObjectMesh objMesh, MR.Const_FaceBitSet region, bool? copyTexture=null)
 constructs new ObjectMesh containing the region of data from input object does not copy selection Generated from function MR.cloneRegion. Parameter copyTexture defaults to true.
 
static unsafe MR.UndirectedEdgeBitSet edgesBetweenDifferentColors (MR.Const_MeshTopology topology, MR.Const_FaceColors colors)
 return all edges separating faces with different colors Generated from function MR.edgesBetweenDifferentColors.
 
static unsafe MR.Std.Const_String defaultSerializeMeshFormat ()
 returns file extension used to serialize ObjectMeshHolder by default (if not overridden in specific object), the string starts with '.' Generated from function MR.defaultSerializeMeshFormat.
 
static unsafe void setDefaultSerializeMeshFormat (string newFormat)
 sets file extension used to serialize serialize ObjectMeshHolder by default (if not overridden in specific object), the string must start from '.'; Generated from function MR.setDefaultSerializeMeshFormat.
 
static unsafe MR.ObjectPoints merge (MR.Std.Const_Vector_StdSharedPtrMRObjectPoints objsPoints)
 constructs new ObjectPoints containing the union of valid points from all input objects Generated from function MR.merge.
 
static unsafe MR.ObjectPoints cloneRegion (MR.Const_ObjectPoints objPoints, MR.Const_VertBitSet region)
 constructs new ObjectPoints containing the region of data from input object does not copy selection Generated from function MR.cloneRegion.
 
static unsafe MR.ObjectPoints pack (MR.Const_ObjectPoints pts, MR.Reorder reorder, MR.VertBitSet? newValidVerts=null, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 constructs new ObjectPoints containing the packed version of input points,
 
static unsafe MR.Std.Const_String defaultSerializePointsFormat ()
 returns file extension used to serialize ObjectPointsHolder by default (if not overridden in specific object), the string starts with '.' Generated from function MR.defaultSerializePointsFormat.
 
static unsafe void setDefaultSerializePointsFormat (string newFormat)
 sets file extension used to serialize serialize ObjectPointsHolder by default (if not overridden in specific object), the string must start from '.'; Generated from function MR.setDefaultSerializePointsFormat.
 
static unsafe MR.Object asSelectivityType (MR._ByValueShared_Object obj, MR.ObjectSelectivityType type)
 if input object is of given type then returns another pointer on it Generated from function MR.asSelectivityType<MR.Object>.
 
static unsafe MR.Std.Vector_StdSharedPtrMRObject getAllObjectsInTree (MR.Object? root, MR.ObjectSelectivityType? type=null)
 Traverses tree and collect objects of given type excluding root returns vector Generated from function MR.getAllObjectsInTree<MR.Object>. Parameter type defaults to ObjectSelectivityType.Selectable.
 
static unsafe MR.Std.Vector_StdSharedPtrMRObject getTopmostVisibleObjects (MR.Object? root, MR.ObjectSelectivityType? type=null)
 Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root Generated from function MR.getTopmostVisibleObjects<MR.Object>. Parameter type defaults to ObjectSelectivityType.Selectable.
 
static unsafe MR.Std.Vector_StdSharedPtrMRObject getTopmostObjects (MR.Object? root, MR.ObjectSelectivityType? type=null, bool? visibilityCheck=null)
 Returns all topmost objects of given type (if an object is returned, its children are not) excluding root Generated from function MR.getTopmostObjects<MR.Object>. Parameter type defaults to ObjectSelectivityType.Selectable. Parameter visibilityCheck defaults to false.
 
static unsafe MR.Object getDepthFirstObject (MR.Object? root, MR.ObjectSelectivityType type)
 return first object of given type in depth-first traverse order excluding root Generated from function MR.getDepthFirstObject<MR.Object>.
 
static unsafe bool objectHasSelectableChildren (MR.Const_Object object_, bool? recurse=null)
 returns whether the object has selectable children
 
static unsafe void serializeObjectTree (MR.Const_Object object_, string path, MR.Std._ByValue_Function_VoidFuncFromConstStdFilesystemPathRef preCompress, MR.ObjectSave.Const_Settings? settings=null)
 saves object subtree in given scene file (zip/mru)
 
static unsafe void serializeObjectTree (MR.Const_Object object_, string path, MR.ObjectSave.Const_Settings? settings=null)
 Generated from function MR.serializeObjectTree. Parameter settings defaults to {}.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f offsetContours (MR.Std.Const_Vector_StdVectorMRVector2f contours, float offset, MR.Const_OffsetContoursParams? params_=null)
 offsets 2d contours in plane Generated from function MR.offsetContours. Parameter params_ defaults to {}.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f offsetContours (MR.Std.Const_Vector_StdVectorMRVector2f contours, MR.Std._ByValue_Function_FloatFuncFromIntInt offset, MR.Const_OffsetContoursParams? params_=null)
 offsets 2d contours in plane Generated from function MR.offsetContours. Parameter params_ defaults to {}.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f offsetContours (MR.Std.Const_Vector_StdVectorMRVector3f contours, float offset, MR.Const_OffsetContoursParams? params_=null, MR.Const_OffsetContoursRestoreZParams? zParmas=null)
 offsets 3d contours in XY plane Generated from function MR.offsetContours. Parameter params_ defaults to {}. Parameter zParmas defaults to {}.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f offsetContours (MR.Std.Const_Vector_StdVectorMRVector3f contours, MR.Std._ByValue_Function_FloatFuncFromIntInt offset, MR.Const_OffsetContoursParams? params_=null, MR.Const_OffsetContoursRestoreZParams? zParmas=null)
 offsets 3d contours in XY plane Generated from function MR.offsetContours. Parameter params_ defaults to {}. Parameter zParmas defaults to {}.
 
static unsafe bool offsetVerts (MR.Mesh mesh, MR.Std.Const_Function_FloatFuncFromMRVertId offset, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 Modifies mesh shifting each vertex along its pseudonormal by the corresponding offset.
 
static unsafe MR.Mesh makeThickMesh (MR.Const_Mesh m, MR.Const_ThickenParams params_)
 given a mesh m, representing a surface, creates new closed mesh by cloning mirrored mesh, and shifting original part and cloned part in different directions according to params, if original mesh was open then stitches corresponding boundaries of two parts Generated from function MR.makeThickMesh.
 
static unsafe bool zCompensate (MR.Mesh mesh, MR.Const_ZCompensateParams params_)
 For 3D printers: shifts every vertex with normal having negative projection on Z-axis, along Z-axis; mesh's topology is preserved unchanged.
 
static unsafe MR.Std.Optional_MRVertScalars findZcompensationShifts (MR.Const_Mesh mesh, MR.Const_ZCompensateParams params_)
 finds the shift along z-axis for each vertex without modifying the mesh Generated from function MR.findZcompensationShifts.
 
static unsafe MR.Std.Optional_MRVertCoords findZcompensatedPositions (MR.Const_Mesh mesh, MR.Const_ZCompensateParams params_)
 finds vertices positions of the mesh after z-compensation without modifying the mesh Generated from function MR.findZcompensatedPositions.
 
static unsafe void subdivideLoneContours (MR.Mesh mesh, MR.Std.Const_Vector_MROneMeshContour contours, MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2oldMap=null)
 Generated from function MR.subdivideLoneContours.
 
static unsafe void getOneMeshIntersectionContours (MR.Const_Mesh meshA, MR.Const_Mesh meshB, MR.Std.Const_Vector_StdVectorMRVarEdgeTri contours, MR.Std.Vector_MROneMeshContour? outA, MR.Std.Vector_MROneMeshContour? outB, MR.Const_CoordinateConverters converters, MR.AffineXf3f? rigidB2A=null, MR.Std.Vector_StdVectorMRVector3f? outPtsA=null, bool? addSelfyTerminalVerts=null)
 Converts contours given in topological terms as the intersections of one mesh's edge and another mesh's triangle (ContinuousContours), into contours of meshA and/or meshB given as a sequence of (primitiveId and Cartesian coordinates); converters are required for better precision in case of degenerations; note that contours should not have intersections Generated from function MR.getOneMeshIntersectionContours. Parameter addSelfyTerminalVerts defaults to false.
 
static unsafe MR.Std.Vector_MROneMeshContour getOneMeshSelfIntersectionContours (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMRVarEdgeTri contours, MR.Const_CoordinateConverters converters, MR.AffineXf3f? rigidB2A=null)
 Generated from function MR.getOneMeshSelfIntersectionContours.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f extractMeshContours (MR.Std.Const_Vector_MROneMeshContour meshContours)
 Generated from function MR.extractMeshContours.
 
static unsafe MR.OneMeshContour convertMeshTriPointsToMeshContour (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, MR.Const_SearchPathSettings? searchSettings=null, MR.Std.Vector_Int? pivotIndices=null)
 Makes continuous contour by mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor surfaceLine and build contour MR.cutMesh input.
 
static unsafe MR.OneMeshContour convertMeshTriPointsToClosedContour (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, MR.Const_SearchPathSettings? searchSettings=null, MR.Std.Vector_Int? pivotIndices=null)
 Makes closed continuous contour by mesh tri points, note that first and last meshTriPoint should not be same Finds shortest paths between neighbor surfaceLine and build closed contour MR.cutMesh input.
 
static unsafe MR.OneMeshContour convertSurfacePathWithEndsToMeshContour (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Std.Const_Vector_MREdgePoint surfacePath, MR.Const_MeshTriPoint end)
 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 Generated from function MR.convertSurfacePathWithEndsToMeshContour.
 
static unsafe MR.Std.Vector_MROneMeshContour convertSurfacePathsToMeshContours (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMREdgePoint surfacePaths)
 Converts SurfacePaths to OneMeshContours Creates MR.OneMeshContours object from given surface paths for MR.cutMesh input Generated from function MR.convertSurfacePathsToMeshContours.
 
static unsafe MR.FaceBMap getOptimalFaceOrdering (MR.Const_Mesh mesh)
 computes optimal order of faces: old face id -> new face id, the order is similar as in AABB tree, but faster to compute Generated from function MR.getOptimalFaceOrdering.
 
static unsafe MR.VertBMap getVertexOrdering (MR.Const_FaceBMap faceMap, MR.Const_MeshTopology topology)
 compute the order of vertices given the order of faces: vertices near first faces also appear first;
 
static unsafe MR.UndirectedEdgeBMap getEdgeOrdering (MR.Const_FaceBMap faceMap, MR.Const_MeshTopology topology)
 compute the order of edges given the order of faces: edges near first faces also appear first;
 
static MR.OutlierTypeMask bitand (MR.OutlierTypeMask a, MR.OutlierTypeMask b)
 Generated from function MR.operator&.
 
static MR.OutlierTypeMask bitor (MR.OutlierTypeMask a, MR.OutlierTypeMask b)
 Generated from function MR.operator|.
 
static MR.OutlierTypeMask compl (MR.OutlierTypeMask a)
 Generated from function MR.operator~.
 
static unsafe ref MR.OutlierTypeMask bitandAssign (ref MR.OutlierTypeMask a, MR.OutlierTypeMask b)
 Generated from function MR.operator&=.
 
static unsafe ref MR.OutlierTypeMask bitorAssign (ref MR.OutlierTypeMask a, MR.OutlierTypeMask b)
 Generated from function MR.operator|=.
 
static MR.OutlierTypeMask mul (MR.OutlierTypeMask a, bool b)
 Generated from function MR.operator*.
 
static MR.OutlierTypeMask mul (bool a, MR.OutlierTypeMask b)
 Generated from function MR.operator*.
 
static unsafe ref MR.OutlierTypeMask mulAssign (ref MR.OutlierTypeMask a, bool b)
 Generated from function MR.operator*=.
 
static unsafe MR.VertBitSet findOutliers (MR.Const_PointCloud pc, MR.Const_FindOutliersParams params_)
 Finding outlier points Generated from function MR.findOutliers.
 
static unsafe MR.FaceBitSet findOverlappingTris (MR.Const_MeshPart mp, MR.Const_FindOverlappingSettings settings)
 finds all triangles that have oppositely oriented close triangle in the mesh Generated from function MR.findOverlappingTris.
 
static unsafe MR.VertCoords loadPly (MR.Std.Istream in_, MR.Const_PlyLoadParams params_)
 Generated from function MR.loadPly.
 
static unsafe float findMaxDistanceSqOneWay (MR.Const_PointCloud a, MR.Const_PointCloud b, MR.AffineXf3f? rigidB2A=null, float? maxDistanceSq=null)
 returns the maximum of the squared distances from each B-point to A-cloud
 
static unsafe float findMaxDistanceSq (MR.Const_PointCloud a, MR.Const_PointCloud b, MR.AffineXf3f? rigidB2A=null, float? maxDistanceSq=null)
 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)
 
static unsafe MR.VertBitSet findHalfSpacePoints (MR.Const_PointCloud pc, MR.Const_Plane3f plane)
 
static unsafe MR.PointCloud divideWithPlane (MR.Const_PointCloud points, MR.Const_Plane3f plane, MR.Const_DividePointCloudOptionalOutput? optOut=null)
 This function cuts a point cloud with a plane, leaving only the part of mesh that lay in positive direction of normal.
 
static unsafe MR.Std.Optional_MRVertCoords makeUnorientedNormals (MR.Const_PointCloud pointCloud, float radius, MR.Std.Const_Function_BoolFuncFromFloat? progress=null, MR.OrientNormals? orient=null)
 Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours.
 
static unsafe MR.Std.Optional_MRVertCoords makeUnorientedNormals (MR.Const_PointCloud pointCloud, MR.Const_AllLocalTriangulations triangs, MR.Std.Const_Function_BoolFuncFromFloat? progress=null, MR.OrientNormals? orient=null)
 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.
 
static unsafe MR.Std.Optional_MRVertCoords makeUnorientedNormals (MR.Const_PointCloud pointCloud, MR.Const_Buffer_MRVertId closeVerts, int numNei, MR.Std.Const_Function_BoolFuncFromFloat? progress=null, MR.OrientNormals? orient=null)
 Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours.
 
static unsafe bool orientNormals (MR.Const_PointCloud pointCloud, MR.VertCoords normals, float radius, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Select orientation of given normals to make directions of close points consistent;.
 
static unsafe bool orientNormals (MR.Const_PointCloud pointCloud, MR.VertCoords normals, MR.Const_AllLocalTriangulations triangs, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Select orientation of given normals to make directions of close points consistent;.
 
static unsafe bool orientNormals (MR.Const_PointCloud pointCloud, MR.VertCoords normals, MR.Const_Buffer_MRVertId closeVerts, int numNei, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Select orientation of given normals to make directions of close points consistent;.
 
static unsafe MR.Std.Optional_MRVertCoords makeOrientedNormals (MR.Const_PointCloud pointCloud, float radius, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 Makes normals for valid points of given point cloud; directions of close points are selected to be consistent;.
 
static unsafe MR.Std.Optional_MRVertCoords makeOrientedNormals (MR.Const_PointCloud pointCloud, MR.AllLocalTriangulations triangs, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 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.
 
static unsafe MR.VertCoords makeNormals (MR.Const_PointCloud pointCloud, int? avgNeighborhoodSize=null)
 Makes consistent normals for valid points of given point cloud.
 
static unsafe float findAvgPointsRadius (MR.Const_PointCloud pointCloud, int avgPoints, int? samples=null)
 Finds the radius of ball, so on average that ball contained avgPoints excluding the central point.
 
static unsafe bool dilateRegion (MR.Const_PointCloud pointCloud, MR.VertBitSet region, float dilation, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.AffineXf3f? xf=null)
 expands the region on given euclidian distance. returns false if callback also returns false Generated from function MR.dilateRegion. Parameter cb defaults to {}.
 
static unsafe bool erodeRegion (MR.Const_PointCloud pointCloud, MR.VertBitSet region, float erosion, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null, MR.AffineXf3f? xf=null)
 shrinks the region on given euclidian distance. returns false if callback also returns false Generated from function MR.erodeRegion. Parameter cb defaults to {}.
 
static unsafe bool relax (MR.PointCloud pointCloud, MR.Const_PointCloudRelaxParams? params_=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified )
 
static unsafe bool relaxKeepVolume (MR.PointCloud pointCloud, MR.Const_PointCloudRelaxParams? params_=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 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
 
static unsafe bool relaxApprox (MR.PointCloud pointCloud, MR.Const_PointCloudApproxRelaxParams? params_=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) approx neighborhoods
 
static unsafe MR.Std.Optional_MRMesh triangulatePointCloud (MR.Const_PointCloud pointCloud, MR.Const_TriangulationParameters? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCb=null)
 Creates mesh from given point cloud according params Returns empty optional if was interrupted by progress bar.
 
static unsafe bool fillHolesWithExtraPoints (MR.Mesh mesh, MR.PointCloud extraPoints, MR.Const_FillHolesWithExtraPointsParams? params_=null, MR.Std.Const_Function_BoolFuncFromFloat? progressCb=null)
 fills the holes in the mesh by adding triangles to it with the vertices in existing boundary vertices or given extra points (in any combination)
 
static unsafe MR.Std.Variant_StdMonostate_MRMeshTriPoint_MREdgePoint_MRVertId pointOnObjectToPickedPoint (MR.Const_VisualObject? object_, MR.Const_PointOnObject pos)
 Converts PointOnObject coordinates depending on the object type to the PickedPoint variant Generated from function MR.pointOnObjectToPickedPoint.
 
static unsafe MR.Std.Optional_MRVector3f getPickedPointPosition (MR.Const_VisualObject object_, MR.Std.Const_Variant_StdMonostate_MRMeshTriPoint_MREdgePoint_MRVertId point)
 Converts given point into local coordinates of its object, returns std.nullopt if object or point is invalid, or if it does not present in the object's topology Generated from function MR.getPickedPointPosition.
 
static unsafe MR.Std.Optional_MRVector3f getPickedPointNormal (MR.Const_VisualObject object_, MR.Std.Const_Variant_StdMonostate_MRMeshTriPoint_MREdgePoint_MRVertId point, bool? interpolated=null)
 Returns object normal in local coordinates at given point,.
 
static unsafe void findPointsInBall (MR.Const_PointCloud pointCloud, MR.Const_Ball3f ball, MR.Std.Const_Function_MRProcessingFuncFromConstMRPointsProjectionResultRefConstMRVector3fRefMRBall3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all valid points of pointCloud that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.
 
static unsafe void findPointsInBall (MR.Const_Mesh mesh, MR.Const_Ball3f ball, MR.Std.Const_Function_MRProcessingFuncFromConstMRPointsProjectionResultRefConstMRVector3fRefMRBall3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all valid vertices of the mesh that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.
 
static unsafe void findPointsInBall (MR.Const_AABBTreePoints tree, MR.Const_Ball3f ball, MR.Std.Const_Function_MRProcessingFuncFromConstMRPointsProjectionResultRefConstMRVector3fRefMRBall3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all points in tree that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.
 
static unsafe void findPointsInBox (MR.Const_PointCloud pointCloud, in MR.Box3f box, MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all valid points of pointCloud that are inside or on the surface of given box.
 
static unsafe void findPointsInBox (MR.Const_Mesh mesh, in MR.Box3f box, MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all valid vertices of the mesh that are inside or on the surface of given box.
 
static unsafe void findPointsInBox (MR.Const_AABBTreePoints tree, in MR.Box3f box, MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback, MR.AffineXf3f? xf=null)
 Finds all points in tree that are inside or on the surface of given box.
 
static unsafe MR.PointsProjectionResult findProjectionOnPoints (in MR.Vector3f pt, MR.Const_PointCloudPart pcp, float? upDistLimitSq=null, MR.AffineXf3f? xf=null, float? loDistLimitSq=null, MR.Std._ByValue_Function_BoolFuncFromMRVertId? skipCb=null)
 computes the closest point on point cloud to given point
 
static unsafe MR.PointsProjectionResult findProjectionOnPoints (in MR.Vector3f pt, MR.Const_AABBTreePoints tree, float? upDistLimitSq=null, MR.AffineXf3f? xf=null, float? loDistLimitSq=null, MR.Const_VertBitSet? region=null, MR.Std._ByValue_Function_BoolFuncFromMRVertId? skipCb=null)
 computes the closest point on AABBTreePoints to given point
 
static unsafe void findFewClosestPoints (in MR.Vector3f pt, MR.Const_PointCloud pc, MR.FewSmallest_MRPointsProjectionResult res, float? upDistLimitSq=null, MR.AffineXf3f? xf=null, float? loDistLimitSq=null)
 finds a number of the closest points in the cloud (as configured in
 
static unsafe MR.Buffer_MRVertId findNClosestPointsPerPoint (MR.Const_PointCloud pc, int numNei, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 finds given number of closest points (excluding itself) to each valid point in the cloud;
 
static unsafe MR.Std.Pair_MRVertId_MRVertId findTwoClosestPoints (MR.Const_PointCloud pc, MR.Std.Const_Function_BoolFuncFromFloat? progress=null)
 finds two closest points (first id < second id) in whole point cloud Generated from function MR.findTwoClosestPoints. Parameter progress defaults to {}.
 
static unsafe MR.VertScalars findSignedDistances (MR.Const_Mesh refMesh, MR.Const_VertCoords testPoints, MR.Const_VertBitSet? validTestPoints=null, MR.Const_MeshProjectionParameters? params_=null, MR.IPointsToMeshProjector? projector=null)
 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 Generated from function MR.findSignedDistances. Parameter params_ defaults to {}.
 
static unsafe MR.VertScalars findSignedDistances (MR.Const_Mesh refMesh, MR.Const_Mesh mesh, MR.Const_MeshProjectionParameters? params_=null, MR.IPointsToMeshProjector? projector=null)
 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 Generated from function MR.findSignedDistances. Parameter params_ defaults to {}.
 
static unsafe MR.Std.Vector_MREdgePointPair findCollidingEdgePairs (MR.Const_Polyline2 a, MR.Const_Polyline2 b, MR.AffineXf2f? rigidB2A=null, bool? firstIntersectionOnly=null)
 finds all pairs of colliding edges from two 2d polylines
 
static unsafe MR.Std.Vector_MRUndirectedEdgeUndirectedEdge findCollidingEdges (MR.Const_Polyline2 a, MR.Const_Polyline2 b, MR.AffineXf2f? rigidB2A=null, bool? firstIntersectionOnly=null)
 finds all pairs of colliding edges from two 2d polylines
 
static unsafe MR.Std.Pair_MRUndirectedEdgeBitSet_MRUndirectedEdgeBitSet findCollidingEdgesBitsets (MR.Const_Polyline2 a, MR.Const_Polyline2 b, MR.AffineXf2f? rigidB2A=null)
 finds bitset per polyline with colliding edges
 
static unsafe MR.Std.Vector_MREdgePointPair findSelfCollidingEdgePairs (MR.Const_Polyline2 polyline)
 finds all pairs of colliding edges from 2d polyline Generated from function MR.findSelfCollidingEdgePairs.
 
static unsafe MR.Std.Vector_MRUndirectedEdgeUndirectedEdge findSelfCollidingEdges (MR.Const_Polyline2 polyline)
 finds all pairs of colliding edges from 2d polyline Generated from function MR.findSelfCollidingEdges.
 
static unsafe MR.UndirectedEdgeBitSet findSelfCollidingEdgesBS (MR.Const_Polyline2 polyline)
 finds the union of all self-intersecting edges Generated from function MR.findSelfCollidingEdgesBS.
 
static unsafe bool isInside (MR.Const_Polyline2 a, MR.Const_Polyline2 b, MR.AffineXf2f? rigidB2A=null)
 checks that arbitrary 2d polyline A is inside of closed 2d polyline B
 
static unsafe bool isPointInsidePolyline (MR.Const_Polyline2 polyline, in MR.Vector2f point)
 detect if given point is inside polyline, by counting ray intersections
 
static unsafe MR.Std.Optional_MRPolylineIntersectionResult2 rayPolylineIntersect (MR.Const_Polyline2 polyline, MR.Const_Line2f line, float? rayStart=null, float? rayEnd=null, MR.Const_IntersectionPrecomputes2_Float? prec=null, bool? closestIntersect=null)
 Finds ray and polyline intersection in float-precision. rayStart and rayEnd define the interval on the ray to detect an intersection. prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if !closestIntersect. Generated from function MR.rayPolylineIntersect. Parameter rayStart defaults to 0. Parameter rayEnd defaults to 3.40282347e38f. Parameter closestIntersect defaults to true.
 
static unsafe MR.Std.Optional_MRPolylineIntersectionResult2 rayPolylineIntersect (MR.Const_Polyline2 polyline, MR.Const_Line2d line, double? rayStart=null, double? rayEnd=null, MR.Const_IntersectionPrecomputes2_Double? prec=null, bool? closestIntersect=null)
 Finds ray and polyline intersection in double-precision. rayStart and rayEnd define the interval on the ray to detect an intersection. prec can be specified to reuse some precomputations (e.g. for checking many parallel rays). Finds the closest intersection to ray origin (line param=0) or any intersection for better performance if !closestIntersect. Generated from function MR.rayPolylineIntersect. Parameter rayStart defaults to 0. Parameter rayEnd defaults to 1.7976931348623157e308. Parameter closestIntersect defaults to true.
 
static unsafe void rayPolylineIntersectAll (MR.Const_Polyline2 polyline, MR.Const_Line2f line, MR.Std.Const_Function_MRProcessingFuncFromConstMREdgePointRefFloatFloatRefFloatRef callback, float? rayStart=null, float? rayEnd=null, MR.Const_IntersectionPrecomputes2_Float? prec=null)
 Intersects 2D ray and polyline in single-precision. Reports all intersections via given callback with the tendency to do it from ray start to ray end, but without guarantee of exact order. Generated from function MR.rayPolylineIntersectAll. Parameter rayStart defaults to 0.0f. Parameter rayEnd defaults to 3.40282347e38f.
 
static unsafe void rayPolylineIntersectAll (MR.Const_Polyline2 polyline, MR.Const_Line2d line, MR.Std.Const_Function_MRProcessingFuncFromConstMREdgePointRefDoubleDoubleRefDoubleRef callback, double? rayStart=null, double? rayEnd=null, MR.Const_IntersectionPrecomputes2_Double? prec=null)
 Intersects 2D ray and polyline in double-precision. Reports all intersections via given callback with the tendency to do it from ray start to ray end, but without guarantee of exact order. Generated from function MR.rayPolylineIntersectAll. Parameter rayStart defaults to 0.0. Parameter rayEnd defaults to 1.7976931348623157e308.
 
static unsafe MR.DecimatePolylineResult decimatePolyline (MR.Polyline2 polyline, MR.Const_DecimatePolylineSettings_MRVector2f? settings=null)
 Collapse edges in the polyline according to the settings Generated from function MR.decimatePolyline. Parameter settings defaults to {}.
 
static unsafe MR.DecimatePolylineResult decimatePolyline (MR.Polyline3 polyline, MR.Const_DecimatePolylineSettings_MRVector3f? settings=null)
 Generated from function MR.decimatePolyline. Parameter settings defaults to {}.
 
static unsafe MR.DecimatePolylineResult decimateContour (MR.Std.Vector_MRVector2f contour, MR.Const_DecimatePolylineSettings_MRVector2f? settings=null)
 Collapse edges in the contour according to the settings Generated from function MR.decimateContour. Parameter settings defaults to {}.
 
static unsafe MR.DecimatePolylineResult decimateContour (MR.Std.Vector_MRVector3f contour, MR.Const_DecimatePolylineSettings_MRVector3f? settings=null)
 Generated from function MR.decimateContour. Parameter settings defaults to {}.
 
static unsafe MR.IteratorRange_MRPolylineUndirectedEdgeIterator undirectedEdges (MR.Const_PolylineTopology topology)
 Generated from function MR.undirectedEdges.
 
static unsafe MR.PolylineProjectionResult2 findProjectionOnPolyline2 (in MR.Vector2f pt, MR.Const_Polyline2 polyline, float? upDistLimitSq=null, MR.Misc.InOut< MR.AffineXf2f >? xf=null, float? loDistLimitSq=null)
 computes the closest point on polyline to given point
 
static unsafe MR.PolylineProjectionResult3 findProjectionOnPolyline (in MR.Vector3f pt, MR.Const_Polyline3 polyline, float? upDistLimitSq=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimitSq=null)
 computes the closest point on polyline to given point
 
static unsafe MR.PolylineProjectionResult3Arg findMaxProjectionOnPolyline (MR.Const_VertCoords points, MR.Const_Polyline3 polyline, MR.Const_VertBitSet? pointsRegion=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimitSq=null)
 for each of points (pointsRegion) computes the closest point on polyline and returns the point for which maximum distance is reached,
 
static unsafe MR.PolylineProjectionResult3 findProjectionOnPolyline (MR.Const_Line3f ln, MR.Const_Polyline3 polyline, float? upDistLimitSq=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimitSq=null)
 computes the closest point on polyline to given straight line
 
static unsafe MR.Polyline2ProjectionWithOffsetResult findProjectionOnPolyline2WithOffset (in MR.Vector2f pt, MR.Const_Polyline2 polyline, MR.Const_UndirectedEdgeScalars offsetPerEdge, float? upDistLimit=null, MR.Misc.InOut< MR.AffineXf2f >? xf=null, float? loDistLimit=null)
 computes the closest point on polyline to given point, respecting each edge offset
 
static unsafe MR.PolylineProjectionWithOffsetResult3 findProjectionOnPolylineWithOffset (in MR.Vector3f pt, MR.Const_Polyline3 polyline, MR.Const_UndirectedEdgeScalars offsetPerEdge, float? upDistLimit=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimit=null)
 computes the closest point on polyline to given point, respecting each edge offset
 
static unsafe void findEdgesInBall (MR.Const_Polyline2 polyline, in MR.Vector2f center, float radius, MR.Std.Const_Function_VoidFuncFromMRUndirectedEdgeIdConstMRVector2fRefFloat foundCallback, MR.Misc.InOut< MR.AffineXf2f >? xf=null)
 Finds all edges of given polyline that cross or touch given ball (center, radius) Generated from function MR.findEdgesInBall.
 
static unsafe void findEdgesInBall (MR.Const_Polyline3 polyline, in MR.Vector3f center, float radius, MR.Std.Const_Function_VoidFuncFromMRUndirectedEdgeIdConstMRVector3fRefFloat foundCallback, MR.Misc.InOut< MR.AffineXf3f >? xf=null)
 Finds all edges of given polyline that cross or touch given ball (center, radius) Generated from function MR.findEdgesInBall.
 
static unsafe void findMeshEdgesInBall (MR.Const_Mesh mesh, MR.Const_AABBTreePolyline3 tree, in MR.Vector3f center, float radius, MR.Std.Const_Function_VoidFuncFromMRUndirectedEdgeIdConstMRVector3fRefFloat foundCallback, MR.Misc.InOut< MR.AffineXf3f >? xf=null)
 Finds all edges of given mesh edges (specified by the tree) that cross or touch given ball (center, radius) Generated from function MR.findMeshEdgesInBall.
 
static unsafe MR.PolylineProjectionResult3 findProjectionOnMeshEdges (in MR.Vector3f pt, MR.Const_Mesh mesh, MR.Const_AABBTreePolyline3 tree, float? upDistLimitSq=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimitSq=null)
 computes the closest point on the mesh edges (specified by the tree) to given point
 
static unsafe MR.PolylineProjectionResult3 findProjectionOnMeshEdges (MR.Const_Line3f ln, MR.Const_Mesh mesh, MR.Const_AABBTreePolyline3 tree, float? upDistLimitSq=null, MR.Misc.InOut< MR.AffineXf3f >? xf=null, float? loDistLimitSq=null)
 computes the closest point on the mesh edges (specified by the tree) to given straight line
 
static unsafe int subdividePolyline (MR.Polyline2 polyline, MR.Const_PolylineSubdivideSettings? settings=null)
 Split edges in polyline according to the settings;
.
 
static unsafe int subdividePolyline (MR.Polyline3 polyline, MR.Const_PolylineSubdivideSettings? settings=null)
 Generated from function MR.subdividePolyline. Parameter settings defaults to {}.
 
static unsafe MR.UndirectedEdgeBitSet subdivideWithPlane (MR.Polyline3 polyline, MR.Const_Plane3f plane, MR.EdgeBitSet? newPositiveEdges=null, MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeIdFloat? onEdgeSplitCallback=null)
 This function splits edges intersected by the plane.
 
static unsafe void trimWithPlane (MR.Polyline3 polyline, MR.Const_Plane3f plane, MR.Const_DividePolylineParameters? params_=null)
 This function divides polyline with a plane, leaving only part of polyline that lies in positive direction of normal.
 
static unsafe MR.Std.Vector_MREdgeSegment extractSectionsFromPolyline (MR.Const_Polyline3 polyline, MR.Const_Plane3f plane, float eps, MR.UndirectedEdgeBitSet? positiveEdges=null)
 This function cuts polyline with a plane.
 
static unsafe void positionVertsSmoothly (MR.Mesh mesh, MR.Const_VertBitSet verts, MR.EdgeWeights? edgeWeights=null, MR.VertexMass? vmass=null, MR.Const_VertBitSet? fixedSharpVertices=null)
 Puts given vertices in such positions to make smooth surface both inside verts-region and on its boundary;.
 
static unsafe void positionVertsSmoothly (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_VertBitSet verts, MR.EdgeWeights? edgeWeights=null, MR.VertexMass? vmass=null, MR.Const_VertBitSet? fixedSharpVertices=null)
 Generated from function MR.positionVertsSmoothly. Parameter edgeWeights defaults to EdgeWeights.Cotan. Parameter vmass defaults to VertexMass.Unit.
 
static unsafe void positionVertsSmoothlySharpBd (MR.Mesh mesh, MR.Const_PositionVertsSmoothlyParams params_)
 Puts given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary; Generated from function MR.positionVertsSmoothlySharpBd.
 
static unsafe void positionVertsSmoothlySharpBd (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_PositionVertsSmoothlyParams params_)
 Generated from function MR.positionVertsSmoothlySharpBd.
 
static unsafe void positionVertsSmoothlySharpBd (MR.Mesh mesh, MR.Const_VertBitSet verts)
 Generated from function MR.positionVertsSmoothlySharpBd.
 
static unsafe void positionVertsWithSpacing (MR.Mesh mesh, MR.Const_SpacingSettings settings)
 Moves given vertices to make the distances between them as specified Generated from function MR.positionVertsWithSpacing.
 
static unsafe void positionVertsWithSpacing (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_SpacingSettings settings)
 Generated from function MR.positionVertsWithSpacing.
 
static unsafe void inflate (MR.Mesh mesh, MR.Const_VertBitSet verts, MR.Const_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;.
 
static unsafe void inflate (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_VertBitSet verts, MR.Const_InflateSettings settings)
 Generated from function MR.inflate.
 
static unsafe void inflate1 (MR.Const_MeshTopology topology, MR.VertCoords points, MR.Const_VertBitSet verts, float pressure)
 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; this function makes just 1 iteration of inflation and is used inside inflate(...) Generated from function MR.inflate1.
 
static unsafe bool smaller (MR.Const_PreciseVertCoord l, MR.Const_PreciseVertCoord r)
 return true if l is smaller than r, uses simulation-of-simplicity (assuming larger perturbations of points with smaller id) to avoid "coordinates are the same" Generated from function MR.smaller.
 
static unsafe bool ccw (in MR.Vector2i a, in MR.Vector2i b)
 return true if the smallest rotation from vector (a) to vector (b) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming perturbations a >> b) to avoid "vectors are collinear" Generated from function MR.ccw.
 
static unsafe bool ccw (in MR.Vector2i a, in MR.Vector2i b, in MR.Vector2i c)
 return true if the smallest rotation from vector (a-c) to vector (b-c) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming perturbations a >> b >> c) to avoid "vectors are collinear" Generated from function MR.ccw.
 
static unsafe bool ccw (MR.Std.Const_Array_MRPreciseVertCoords2_3 vs)
 return true if the smallest rotation from vector (vs[0]-vs[2]) to vector (vs[1]-vs[2]) is in counter-clock-wise direction; uses simulation-of-simplicity (assuming larger perturbations of points with smaller id) to avoid "vectors are collinear" Generated from function MR.ccw.
 
static unsafe bool ccw (MR.Const_PreciseVertCoords2? vs)
 Generated from function MR.ccw.
 
static unsafe bool smaller2 (MR.Std.Const_Array_MRPreciseVertCoords2_4 vs)
 given the line passing via points vs[0] and vs[1], which defines linear signed scalar distance field: zero on the line, positive for x where ccw(vs[0], vs[1], x) == true, and negative for x where ccw(vs[0], vs[1], x) == false finds whether sdistance(vs[2]) < sdistance(vs[3]); avoids equality of signed distances using simulation-of-simplicity approach (assuming larger perturbations of points with smaller id) Generated from function MR.smaller2.
 
static unsafe bool orientParaboloid3d (in MR.Vector2i a, in MR.Vector2i b, in MR.Vector2i c)
 considers 3D points obtained from 2D inputs by moving each point on paraboloid: z = x*x+y*y; 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" Generated from function MR.orientParaboloid3d.
 
static unsafe bool orientParaboloid3d (in MR.Vector2i a, in MR.Vector2i b, in MR.Vector2i c, in MR.Vector2i d)
 Generated from function MR.orientParaboloid3d.
 
static unsafe bool inCircle (MR.Std.Const_Array_MRPreciseVertCoords2_4 vs)
 return true if 4th point in array lays inside circumcircle of first 3 points based triangle Generated from function MR.inCircle.
 
static unsafe bool inCircle (MR.Const_PreciseVertCoords2? vs)
 Generated from function MR.inCircle.
 
static unsafe MR.SegmentSegmentIntersectResult doSegmentSegmentIntersect (MR.Std.Const_Array_MRPreciseVertCoords2_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 Generated from function MR.doSegmentSegmentIntersect.
 
static unsafe bool segmentIntersectionOrder (MR.Std.Const_Array_MRPreciseVertCoords2_6 vs)
 given line segment s=01 and two other segments sa=23, sb=45 known to intersect it, finds the order of intersection using precise predicates: true: s[0], s ^ sa, s ^ sb, s[1] false: s[0], s ^ sb, s ^ sa, s[1] segments sa and sb can have at most one shared point, all other points must be unique Generated from function MR.segmentIntersectionOrder.
 
static unsafe MR.Vector2i findSegmentSegmentIntersectionPrecise (in MR.Vector2i a, in MR.Vector2i b, in MR.Vector2i c, in MR.Vector2i d)
 finds intersection precise, using high precision int inside this function input should have intersection Generated from function MR.findSegmentSegmentIntersectionPrecise.
 
static unsafe MR.Vector2f findSegmentSegmentIntersectionPrecise (in MR.Vector2f a, in MR.Vector2f b, in MR.Vector2f c, in MR.Vector2f d, MR._ByValue_CoordinateConverters2 converters)
 finds intersection precise, using high precision int inside this function input should have intersection Generated from function MR.findSegmentSegmentIntersectionPrecise.
 
static unsafe bool orient3d (in MR.Vector3i a, in MR.Vector3i b, in MR.Vector3i c)
 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" Generated from function MR.orient3d.
 
static unsafe bool orient3d (in MR.Vector3i a, in MR.Vector3i b, in MR.Vector3i c, in MR.Vector3i d)
 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" Generated from function MR.orient3d.
 
static unsafe bool orient3d (MR.Std.Const_Array_MRPreciseVertCoords_4 vs)
 first sorts the indices in ascending order, then calls the predicate for sorted points Generated from function MR.orient3d.
 
static unsafe bool orient3d (MR.Const_PreciseVertCoords? vs)
 Generated from function MR.orient3d.
 
static unsafe MR.TriangleSegmentIntersectResult doTriangleSegmentIntersect (MR.Std.Const_Array_MRPreciseVertCoords_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 Generated from function MR.doTriangleSegmentIntersect.
 
static unsafe bool segmentIntersectionOrder (MR.Std.Const_Array_MRPreciseVertCoords_8 vs)
 given line segment s=01 and two triangles ta=234, tb=567 known to intersect it, finds the order of intersection using precise predicates: true: s[0], s ^ ta, s ^ tb, s[1] false: s[0], s ^ tb, s ^ ta, s[1] segments ta and tb can have at most two shared points, all other points must be unique Generated from function MR.segmentIntersectionOrder.
 
static unsafe MR.Std.Function_MRVector3iFuncFromConstMRVector3fRef getToIntConverter (in MR.Box3d box)
 creates converter from Vector3f to Vector3i in Box range (int diapason is mapped to box range) Generated from function MR.getToIntConverter.
 
static unsafe MR.Std.Function_MRVector3fFuncFromConstMRVector3iRef getToFloatConverter (in MR.Box3d box)
 creates converter from Vector3i to Vector3f in Box range (int diapason is mapped to box range) Generated from function MR.getToFloatConverter.
 
static unsafe MR.Std.Optional_MRVector3i findTwoSegmentsIntersection (in MR.Vector3i ai, in MR.Vector3i bi, in MR.Vector3i ci, in MR.Vector3i di)
 given two line segments AB and CD located in one plane, finds whether they intersect and if yes, computes their common point using integer-only arithmetic Generated from function MR.findTwoSegmentsIntersection.
 
static unsafe MR.Vector3f findTriangleSegmentIntersectionPrecise (in MR.Vector3f a, in MR.Vector3f b, in MR.Vector3f c, in MR.Vector3f d, in MR.Vector3f e, MR._ByValue_CoordinateConverters converters)
 finds intersection precise, using high precision int inside this function input should have intersection Generated from function MR.findTriangleSegmentIntersectionPrecise.
 
static unsafe void vertMapsComposition (MR.VertMap a2b, MR.Const_VertMap b2c)
 updates a2b map to a2c map using b2c map Generated from function MR.vertMapsComposition.
 
static unsafe MR.VertMap vertMapsComposition (MR.Const_VertMap a2b, MR.Const_VertMap b2c)
 returns map a2c from a2b and b2c maps Generated from function MR.vertMapsComposition.
 
static unsafe void edgeMapsComposition (MR.EdgeMap a2b, MR.Const_EdgeMap b2c)
 updates a2b map to a2c map using b2c map Generated from function MR.edgeMapsComposition.
 
static unsafe MR.EdgeMap edgeMapsComposition (MR.Const_EdgeMap a2b, MR.Const_EdgeMap b2c)
 returns map a2c from a2b and b2c maps Generated from function MR.edgeMapsComposition.
 
static unsafe void faceMapsComposition (MR.FaceMap a2b, MR.Const_FaceMap b2c)
 updates a2b map to a2c map using b2c map Generated from function MR.faceMapsComposition.
 
static unsafe MR.FaceMap faceMapsComposition (MR.Const_FaceMap a2b, MR.Const_FaceMap b2c)
 returns map a2c from a2b and b2c maps Generated from function MR.faceMapsComposition.
 
static unsafe MR.Mesh makePrism (float baseLength, float leftAngle, float rightAngle, float? height=null)
 Generated from function MR.makePrism. Parameter height defaults to 1.0f.
 
static unsafe bool reportProgress (MR.Std._ByValue_Function_BoolFuncFromFloat cb, float v)
 safely invokes
 
static unsafe bool reportProgress (MR.Std._ByValue_Function_BoolFuncFromFloat cb, float v, ulong counter, int divider)
 safely invokes
 
static unsafe MR.Std.Function_BoolFuncFromFloat subprogress (MR.Std._ByValue_Function_BoolFuncFromFloat cb, float from, float to)
 returns a callback that maps [0,1] linearly into [from,to] in the call to
 
static unsafe MR.Std.Function_BoolFuncFromFloat subprogress (MR.Std._ByValue_Function_BoolFuncFromFloat cb, ulong index, ulong count)
 returns a callback that maps [0,1] linearly into [(index+0)/count,(index+1)/count] in the call to
 
static unsafe bool writeByBlocks (MR.Std.Ostream out_, byte? data, ulong dataSize, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null, ulong? blockSize=null)
 write dataSize bytes from data to out stream by blocks blockSize bytes
 
static unsafe bool readByBlocks (MR.Std.Istream in_, MR.Misc.InOut< byte >? data, ulong dataSize, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null, ulong? blockSize=null)
 read dataSize bytes from in stream to data by blocks blockSize bytes
 
static unsafe void projectObjectMeshData (MR.Const_ObjectMeshData oldMeshData, MR.ObjectMeshData newMeshData, MR.Const_FaceBitSet? region=null, MR.Const_ProjectAttributeParams? params_=null)
 finds attributes of new mesh by projecting faces/vertices on old mesh
 
static unsafe void compensateRadius (MR.Mesh mesh, MR.Const_CompensateRadiusParams params_)
 compensate spherical milling tool radius in given mesh region making it possible to mill it note that tool milling outer surface of the mesh also please note that boundaries of the region are fixed Generated from function MR.compensateRadius.
 
static unsafe bool rayBoxIntersect (in MR.Box3f box, MR.Const_RayOrigin_Float rayOrigin, ref float t0, ref float t1, MR.Const_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 Generated from function MR.rayBoxIntersect<float>.
 
static unsafe bool rayBoxIntersect (in MR.Box3f box, MR.Const_Line3f line, float t0, float t1)
 Generated from function MR.rayBoxIntersect<float>.
 
static unsafe bool rayBoxIntersect (in MR.Box2f box, MR.Const_Line2f line, float t0, float t1)
 Generated from function MR.rayBoxIntersect<float>.
 
static MR.OutEdge2 opposite (MR.OutEdge2 e)
 Generated from function MR.opposite.
 
static unsafe void expandPixelMask (MR.PixelBitSet mask, MR.Const_RectIndexer indexer, int? expansion=null)
 expands PixelBitSet with given number of steps Generated from function MR.expandPixelMask. Parameter expansion defaults to 1.
 
static unsafe void shrinkPixelMask (MR.PixelBitSet mask, MR.Const_RectIndexer indexer, int? shrinkage=null)
 shrinks PixelBitSet with given number of steps Generated from function MR.shrinkPixelMask. Parameter shrinkage defaults to 1.
 
static unsafe MR.Std.Vector_MREdgeId trackLeftBoundaryLoop (MR.Const_MeshTopology topology, MR.EdgeId e0, MR.Const_FaceBitSet? region=null)
 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 Generated from function MR.trackLeftBoundaryLoop.
 
static unsafe MR.Std.Vector_MREdgeId trackLeftBoundaryLoop (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region, MR.EdgeId e0)
 Generated from function MR.trackLeftBoundaryLoop.
 
static unsafe MR.Std.Vector_MREdgeId trackRightBoundaryLoop (MR.Const_MeshTopology topology, MR.EdgeId e0, MR.Const_FaceBitSet? region=null)
 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 Generated from function MR.trackRightBoundaryLoop.
 
static unsafe MR.Std.Vector_MREdgeId trackRightBoundaryLoop (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region, MR.EdgeId e0)
 Generated from function MR.trackRightBoundaryLoop.
 
static unsafe MR.EdgeId extractPath (MR.Const_MeshTopology topology, MR.EdgeId e0, MR.EdgeBitSet edges, MR.Std.Vector_MREdgeId? outPath, MR.Turn turn)
 track the path of edges with set bits in (edges) starting from (e0);
 
static unsafe MR.Std.Vector_StdVectorMREdgeId extractAllLoops (MR.Const_MeshTopology topology, MR.EdgeBitSet edges, MR.Turn turn)
 tracks are returns all closed loops of edges from the given bit set; if at some reached vertex there are two or more edges originate with set bits in (edges), the path selects the leftmost or the rightmost option depending on
 
static unsafe MR.Std.Vector_StdVectorMREdgeId findLeftBoundary (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? region=null)
 returns all region boundary loops; every loop has region faces on the left, and not-region faces or holes on the right Generated from function MR.findLeftBoundary.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId findRightBoundary (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? region=null)
 returns all region boundary loops; every loop has region faces on the right, and not-region faces or holes on the left Generated from function MR.findRightBoundary.
 
static unsafe MR.EdgeBitSet findAllLeftBdEdges (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? region, bool? innerMeshEdgesOnly=null)
 returns all edges (e) for which topology.isLeftBdEdge( e, region ) is true;
 
static unsafe MR.Std.Vector_StdVectorMREdgeId delRegionKeepBd (MR.Mesh mesh, MR.Const_FaceBitSet? region=null, bool? keepLoneHoles=null)
 deletes all region faces, inner edges and vertices, but keeps boundary edges and vertices of the region (or whole mesh if region is null); if keepLoneHoles is set - keeps boundary even if it has no valid faces on other side returns edge loops, each having deleted region faces on the left, and not-region faces or holes on the right Generated from function MR.delRegionKeepBd. Parameter keepLoneHoles defaults to false.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId findLeftBoundaryInsideMesh (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region)
 returns all region boundary paths; every path has region faces on the left, and valid not-region faces on the right Generated from function MR.findLeftBoundaryInsideMesh.
 
static unsafe MR.UndirectedEdgeBitSet findRegionBoundaryUndirectedEdgesInsideMesh (MR.Const_MeshTopology topology, MR.Const_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 Generated from function MR.findRegionBoundaryUndirectedEdgesInsideMesh.
 
static unsafe MR.FaceBitSet findRegionOuterFaces (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region)
 
static unsafe MR.VertBitSet getIncidentVerts (MR.Const_MeshTopology topology, MR.Const_FaceBitSet faces)
 composes the set of all vertices incident to given faces Generated from function MR.getIncidentVerts.
 
static unsafe MR.Const_VertBitSet getIncidentVerts (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? faces, MR.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 Generated from function MR.getIncidentVerts.
 
static unsafe MR.VertBitSet getInnerVerts (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? region=null)
 composes the set of all vertices not on the boundary of a hole and with all their adjacent faces in given set Generated from function MR.getInnerVerts.
 
static unsafe MR.VertBitSet getBoundaryVerts (MR.Const_MeshTopology topology, MR.Const_FaceBitSet? region=null)
 composes the set of all boundary vertices for given region (or whole mesh if !region) Generated from function MR.getBoundaryVerts.
 
static unsafe MR.VertBitSet getRegionBoundaryVerts (MR.Const_MeshTopology topology, MR.Const_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 Generated from function MR.getRegionBoundaryVerts.
 
static unsafe MR.FaceBitSet getIncidentFaces (MR.Const_MeshTopology topology, MR.Const_VertBitSet verts)
 composes the set of all faces incident to given vertices Generated from function MR.getIncidentFaces.
 
static unsafe MR.FaceBitSet getInnerFaces (MR.Const_MeshTopology topology, MR.Const_VertBitSet verts)
 composes the set of all faces with all their vertices in given set Generated from function MR.getInnerFaces.
 
static unsafe MR.EdgeBitSet getRegionEdges (MR.Const_MeshTopology topology, MR.Const_FaceBitSet faces)
 composes the set of all edges, having a face from given set at the left Generated from function MR.getRegionEdges.
 
static unsafe MR.UndirectedEdgeBitSet getIncidentEdges (MR.Const_MeshTopology topology, MR.Const_FaceBitSet faces)
 composes the set of all undirected edges, having a face from given set from one of two sides Generated from function MR.getIncidentEdges.
 
static unsafe MR.UndirectedEdgeBitSet getIncidentEdges (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet edges)
 composes the set of all undirected edges, having at least one common vertex with an edge from given set Generated from function MR.getIncidentEdges.
 
static unsafe MR.VertBitSet getIncidentVerts (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet edges)
 composes the set of all vertices incident to given edges Generated from function MR.getIncidentVerts.
 
static unsafe MR.FaceBitSet getIncidentFaces (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet edges)
 composes the set of all faces incident to given edges Generated from function MR.getIncidentFaces.
 
static unsafe MR.FaceBitSet getNeighborFaces (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet edges)
 composes the set of all left and right faces of given edges Generated from function MR.getNeighborFaces.
 
static unsafe MR.UndirectedEdgeBitSet getInnerEdges (MR.Const_MeshTopology topology, MR.Const_VertBitSet verts)
 composes the set of all edges with all their vertices in given set Generated from function MR.getInnerEdges.
 
static unsafe MR.UndirectedEdgeBitSet getInnerEdges (MR.Const_MeshTopology topology, MR.Const_FaceBitSet region)
 composes the set of all edges having both left and right in given region Generated from function MR.getInnerEdges.
 
static unsafe MR.Const_VertBitSet getIncidentVerts (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet? edges, MR.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 Generated from function MR.getIncidentVerts.
 
static unsafe MR.VertBitSet getInnerVerts (MR.Const_MeshTopology topology, MR.Const_UndirectedEdgeBitSet edges)
 composes the set of all vertices with all their edges in given set Generated from function MR.getInnerVerts.
 
static unsafe MR.Mesh makeRegularGridMesh (ulong width, ulong height, MR.Std.Const_Function_BoolFuncFromMRUint64TMRUint64T validator, MR.Std.Const_Function_MRVector3fFuncFromMRUint64TMRUint64T positioner, MR.Std.Const_Function_BoolFuncFromMRUint64TMRUint64TMRUint64TMRUint64TMRUint64TMRUint64T? faceValidator=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.makeRegularGridMesh. Parameter faceValidator defaults to {}. Parameter cb defaults to {}.
 
static unsafe MR.Mesh makeRegularGridMesh (MR._ByValue_VertCoords pc, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.makeRegularGridMesh. Parameter cb defaults to {}.
 
static MR.RenderModelPassMask bitand (MR.RenderModelPassMask a, MR.RenderModelPassMask b)
 Generated from function MR.operator&.
 
static MR.RenderModelPassMask bitor (MR.RenderModelPassMask a, MR.RenderModelPassMask b)
 Generated from function MR.operator|.
 
static MR.RenderModelPassMask compl (MR.RenderModelPassMask a)
 Generated from function MR.operator~.
 
static unsafe ref MR.RenderModelPassMask bitandAssign (ref MR.RenderModelPassMask a, MR.RenderModelPassMask b)
 Generated from function MR.operator&=.
 
static unsafe ref MR.RenderModelPassMask bitorAssign (ref MR.RenderModelPassMask a, MR.RenderModelPassMask b)
 Generated from function MR.operator|=.
 
static MR.RenderModelPassMask mul (MR.RenderModelPassMask a, bool b)
 Generated from function MR.operator*.
 
static MR.RenderModelPassMask mul (bool a, MR.RenderModelPassMask b)
 Generated from function MR.operator*.
 
static unsafe ref MR.RenderModelPassMask mulAssign (ref MR.RenderModelPassMask a, bool b)
 Generated from function MR.operator*=.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameOrigin orgRing (MR.Const_MeshTopology topology, MR.EdgeId edge)
 Generated from function MR.orgRing.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameOrigin orgRing (MR.Const_MeshTopology topology, MR.VertId v)
 Generated from function MR.orgRing.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameOrigin orgRing0 (MR.Const_MeshTopology topology, MR.EdgeId edge)
 Generated from function MR.orgRing0.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameLeft leftRing (MR.Const_MeshTopology topology, MR.EdgeId edge)
 Generated from function MR.leftRing.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameLeft leftRing (MR.Const_MeshTopology topology, MR.FaceId f)
 Generated from function MR.leftRing.
 
static unsafe MR.IteratorRange_MRRingIteratorMRNextEdgeSameLeft leftRing0 (MR.Const_MeshTopology topology, MR.EdgeId edge)
 Generated from function MR.leftRing0.
 
static unsafe MR.Vector3f applyFloat (MR.AffineXf3d? xf, in MR.Vector3f p)
 returns the point as is or after application of given transform to it in double precision Generated from function MR.applyFloat.
 
static unsafe MR.Vector3f applyFloat (MR.Matrix3d? m, in MR.Vector3f n)
 returns the normal as is or after application of given matrix to it in double precision Generated from function MR.applyFloat.
 
static unsafe MR.Vector3d applyDouble (MR.AffineXf3d? xf, in MR.Vector3f p)
 converts given point in double precision and applies given transformation to it Generated from function MR.applyDouble.
 
static unsafe MR.Vector3d applyDouble (MR.Matrix3d? m, in MR.Vector3f n)
 converts given normal in double precision and applies given matrix to it Generated from function MR.applyDouble.
 
static unsafe MR.Const_VertCoords transformPoints (MR.Const_VertCoords verts, MR.Const_VertBitSet validVerts, MR.AffineXf3d? xf, MR.VertCoords buf, MR.Const_VertRenumber? vertRenumber=null)
 if (xf) is null then just returns (verts); otherwise copies transformed points in (buf) and returns it Generated from function MR.transformPoints.
 
static unsafe MR.Const_VertCoords transformNormals (MR.Const_VertCoords normals, MR.Const_VertBitSet validVerts, MR.Matrix3d? m, MR.VertCoords buf)
 if (m) is null then just returns (normals); otherwise copies transformed normals in (buf) and returns it Generated from function MR.transformNormals.
 
static unsafe MR.SceneRootObject createRootFormObject (MR._ByValueShared_Object obj)
 Removes all obj children and attaches it to newly created SceneRootObject note that it does not respect obj xf Generated from function MR.createRootFormObject.
 
static unsafe void serializeMesh (MR.Const_Mesh mesh, string path, MR.Const_FaceBitSet? selection=null, MR.Misc._InOpt< byte >? serializeFormat=null)
 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 Generated from function MR.serializeMesh. Parameter serializeFormat defaults to ".mrmesh".
 
static unsafe void sharpenMarchingCubesMesh (MR.Const_MeshPart ref_, MR.Mesh vox, MR.Vector_MRVoxelId_MRFaceId face2voxel, MR.Const_SharpenMarchingCubesMeshSettings settings)
 adjust the mesh
 
static unsafe? byte asString (MR.SignDetectionMode m)
 returns string representation of enum values Generated from function MR.asString.
 
static unsafe MR.Std.Vector_MRVector3f sampleHalfSphere ()
 returns quasi-uniform 145 samples on unit half-sphere z>0 Generated from function MR.sampleHalfSphere.
 
static unsafe MR.VertScalars computeSkyViewFactor (MR.Const_Mesh terrain, MR.Const_VertCoords samples, MR.Const_VertBitSet validSamples, MR.Std.Const_Vector_MRSkyPatch skyPatches, MR.BitSet? outSkyRays=null, MR.Std.Vector_MRMeshIntersectionResult? outIntersections=null)
 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;
 
static unsafe MR.BitSet findSkyRays (MR.Const_Mesh terrain, MR.Const_VertCoords samples, MR.Const_VertBitSet validSamples, MR.Std.Const_Vector_MRSkyPatch skyPatches, MR.Std.Vector_MRMeshIntersectionResult? outIntersections=null)
 In each valid sample point tests the rays from that point in the sky;.
 
static unsafe MR.Mesh makeSolidOfRevolution (MR.Std.Const_Vector_MRVector2f profile, int? resolution=null)
 Makes a solid-of-revolution mesh. The resulting mesh is symmetrical about the z-axis. The profile points must be in the format { distance to the z-axis; z value }. Generated from function MR.makeSolidOfRevolution. Parameter resolution defaults to 16.
 
static unsafe MR.Std.String 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 Generated from function MR.getCurrentStacktraceInline.
 
static void printStacktraceOnCrash ()
 Print stacktrace on application crash Generated from function MR.printStacktraceOnCrash.
 
static unsafe ulong findSubstringCaseInsensitive (string string_, string substring)
 Finds the substring in the string.
 
static unsafe int calcDamerauLevenshteinDistance (string stringA, string stringB, bool? caseSensitive=null, MR.Misc.InOut< int >? outLeftRightAddition=null)
 Calculates Damerau-Levenshtein distance between to strings.
 
static unsafe MR.Std.Vector_StdString split (string string_, string delimiter)
 Splits given string by delimiter.
 
static unsafe MR.Std.String replace (string target, string from, string to)
 Returns.
 
static unsafe void replaceInplace (MR.Std.String target, string from, string to)
 Replaces.
 
static unsafe MR.Std.StringView trim (string str)
 Removes all whitespace character (detected by std.isspace) at the beginning and the end of string view Generated from function MR.trim.
 
static unsafe MR.Std.StringView trimLeft (string str)
 Removes all whitespace character (detected by std.isspace) at the beginning of string view Generated from function MR.trimLeft.
 
static unsafe MR.Std.StringView trimRight (string str)
 Removes all whitespace character (detected by std.isspace) at the end of string view Generated from function MR.trimRight.
 
static unsafe bool hasFormatPlaceholders (string str)
 Returns true if str has at least one {...} formatting placeholder. Generated from function MR.hasFormatPlaceholders.
 
static unsafe MR.Std.String systemToUtf8 (string system)
 converts system encoded string to UTF8-encoded string Generated from function MR.systemToUtf8.
 
static unsafe MR.Std.String utf8ToSystem (string utf8)
 converts UTF8-encoded string to system encoded string, returns empty string if such conversion cannot be made Generated from function MR.utf8ToSystem.
 
static unsafe MR.Std.String utf8string (string path)
 Generated from function MR.utf8string.
 
static unsafe MR.Std.String utf8substr (byte? s, ulong pos, ulong count)
 given on input a valid utf8-encoded string, returns its substring starting at pos unicode symbol, and containing at most count unicode symbols (but res.size() can be more than count since a unicode symbol can be represented by more than 1 byte) Generated from function MR.utf8substr.
 
static unsafe MR.Std.String bytesString (ulong size)
 converts given size in string: [0,1024) -> nnn bytes [1024,1024*1024) -> nnn.nn Kb [1024*1024,1024*1024*1024) -> nnn.nn Mb ... Generated from function MR.bytesString.
 
static bool isProhibitedChar (byte c)
 returns true if the given character is any of prohibited in filenames in any of OSes https://stackoverflow.com/q/1976007/7325599 Generated from function MR.isProhibitedChar.
 
static unsafe bool hasProhibitedChars (string line)
 returns true if line contains at least one character (c) for which isProhibitedChar(c)==true Generated from function MR.hasProhibitedChars.
 
static unsafe MR.Std.String replaceProhibitedChars (string line, byte? replacement=null)
 replace all characters (c), where isProhibitedChar(c)==true, with replacement char Generated from function MR.replaceProhibitedChars. Parameter replacement defaults to ‘’_'`.
 
static unsafe MR.Std.String commonFilesName (MR.Std.Const_Vector_StdFilesystemPath 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" Generated from function MR.commonFilesName.
 
static double roundToPrecision (double v, int precision)
 returns given value rounded to given number of decimal digits Generated from function MR.roundToPrecision.
 
static float roundToPrecision (float v, int precision)
 returns given value rounded to given number of decimal digits Generated from function MR.roundToPrecision.
 
static unsafe MR.Std.String getCancelMessage (string path)
 Generated from function MR.getCancelMessage.
 
static unsafe MR.Std.String toLower (string str)
 return a copy of the string with all alphabetic ASCII characters replaced with upper-case variants Generated from function MR.toLower.
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Const_VertBitSet startVertices, float? maxDist=null, MR.Const_VertBitSet? region=null, int? maxVertUpdates=null)
 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 Generated from function MR.computeSurfaceDistances. Parameter maxDist defaults to 3.40282347e38f. Parameter maxVertUpdates defaults to 3.
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Const_VertBitSet startVertices, MR.Const_VertBitSet targetVertices, float? maxDist=null, MR.Const_VertBitSet? region=null, int? maxVertUpdates=null)
 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 Generated from function MR.computeSurfaceDistances. Parameter maxDist defaults to 3.40282347e38f. Parameter maxVertUpdates defaults to 3.
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Phmap.Const_FlatHashMap_MRVertId_Float startVertices, float? maxDist=null, MR.Const_VertBitSet? region=null, int? maxVertUpdates=null)
 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 Generated from function MR.computeSurfaceDistances. Parameter maxDist defaults to 3.40282347e38f. Parameter maxVertUpdates defaults to 3.
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, MR.Const_VertBitSet? region=null, MR.Misc.InOut< bool >? endReached=null, int? maxVertUpdates=null)
 computes path distance in mesh vertices from given start point, stopping when all vertices in the face where end is located are reached;
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, float? maxDist=null, MR.Const_VertBitSet? region=null, int? maxVertUpdates=null)
 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 Generated from function MR.computeSurfaceDistances. Parameter maxDist defaults to 3.40282347e38f. Parameter maxVertUpdates defaults to 3.
 
static unsafe MR.VertScalars computeSurfaceDistances (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint starts, float? maxDist=null, MR.Const_VertBitSet? region=null, int? maxVertUpdates=null)
 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 Generated from function MR.computeSurfaceDistances. Parameter maxDist defaults to 3.40282347e38f. Parameter maxVertUpdates defaults to 3.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f offsetSurfaceLine (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, float offset)
 Returns contours in mesh space that are offset from surfaceLine on offset amount in all directions.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f offsetSurfaceLine (MR.Const_Mesh mesh, MR.Std.Const_Vector_MRMeshTriPoint surfaceLine, MR.Std.Const_Function_FloatFuncFromInt offsetAtPoint)
 Returns contours in mesh space that are offset from surfaceLine on offsetAtPoint amount in all directions.
 
static unsafe MR.Std.String toString (MR.PathError error)
 Generated from function MR.toString.
 
static unsafe MR.Std.Vector_MREdgePoint computeSurfacePath (MR.Const_MeshPart mp, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, int? maxGeodesicIters=null, MR.Const_VertBitSet? vertRegion=null, MR.VertScalars? outSurfaceDistances=null)
 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() Generated from function MR.computeSurfacePath. Parameter maxGeodesicIters defaults to 5.
 
static unsafe MR.Std.Vector_MREdgePoint computeGeodesicPath (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, MR.GeodesicPathApprox? atype=null, int? maxGeodesicIters=null)
 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() Generated from function MR.computeGeodesicPath. Parameter atype defaults to GeodesicPathApprox.FastMarching. Parameter maxGeodesicIters defaults to 100.
 
static unsafe MR.Std.Vector_MREdgePoint computeGeodesicPathApprox (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, MR.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 Generated from function MR.computeGeodesicPathApprox.
 
static unsafe MR.Std.Vector_MREdgePoint computeFastMarchingPath (MR.Const_MeshPart mp, MR.Const_MeshTriPoint start, MR.Const_MeshTriPoint end, MR.Const_VertBitSet? vertRegion=null, MR.VertScalars? outSurfaceDistances=null)
 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 Generated from function MR.computeFastMarchingPath.
 
static unsafe MR.Std.Vector_MREdgePoint computeSteepestDescentPath (MR.Const_MeshPart mp, MR.Const_VertScalars field, MR.Const_MeshTriPoint start, MR.Const_ComputeSteepestDescentPathSettings? settings=null)
 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 Generated from function MR.computeSteepestDescentPath. Parameter settings defaults to {}.
 
static unsafe void computeSteepestDescentPath (MR.Const_MeshPart mp, MR.Const_VertScalars field, MR.Const_MeshTriPoint start, MR.Std.Vector_MREdgePoint? outPath, MR.Const_ComputeSteepestDescentPathSettings? settings=null)
 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
 
static unsafe MR.EdgePoint findSteepestDescentPoint (MR.Const_MeshPart mp, MR.Const_VertScalars field, MR.VertId v)
 finds the point along minus maximal gradient on the boundary of first ring boundary around given vertex Generated from function MR.findSteepestDescentPoint.
 
static unsafe MR.EdgePoint findSteepestDescentPoint (MR.Const_MeshPart mp, MR.Const_VertScalars field, MR.Const_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) Generated from function MR.findSteepestDescentPoint.
 
static unsafe MR.EdgePoint findSteepestDescentPoint (MR.Const_MeshPart mp, MR.Const_VertScalars field, MR.Const_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) Generated from function MR.findSteepestDescentPoint.
 
static unsafe MR.UndirectedEdgeBitSet findExtremeEdges (MR.Const_Mesh mesh, MR.Const_VertScalars field, MR.ExtremeEdgeType type)
 computes all edges in the mesh, where the field not-increases both in left and right triangles Generated from function MR.findExtremeEdges.
 
static unsafe MR.Phmap.FlatHashMap_MRVertId_MRVertId computeClosestSurfacePathTargets (MR.Const_Mesh mesh, MR.Const_VertBitSet starts, MR.Const_VertBitSet ends, MR.Const_VertBitSet? vertRegion=null, MR.VertScalars? outSurfaceDistances=null)
 for each vertex from (starts) finds the closest vertex from (ends) in geodesic sense
 
static unsafe MR.Std.Vector_StdVectorMREdgePoint getSurfacePathsViaVertices (MR.Const_Mesh mesh, MR.Const_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 Generated from function MR.getSurfacePathsViaVertices.
 
static unsafe float surfacePathLength (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint surfacePath)
 computes the length of surface path Generated from function MR.surfacePathLength.
 
static unsafe MR.Std.Vector_MRVector3f surfacePathToContour3f (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint line)
 converts lines on mesh in 3D contours by computing coordinate of each point Generated from function MR.surfacePathToContour3f.
 
static unsafe MR.Std.Vector_StdVectorMRVector3f surfacePathsToContours3f (MR.Const_Mesh mesh, MR.Std.Const_Vector_StdVectorMREdgePoint lines)
 Generated from function MR.surfacePathsToContours3f.
 
static unsafe MR.Std.Vector_MREdgeId surroundingContour (MR.Const_Mesh mesh, MR.Std._ByValue_Vector_MREdgeId includeEdges, MR.Std.Const_Function_FloatFuncFromMREdgeId edgeMetric, in MR.Vector3f dir)
 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.
 
static unsafe MR.Std.Vector_MREdgeId surroundingContour (MR.Const_Mesh mesh, MR.Std._ByValue_Vector_MRVertId keyVertices, MR.Std.Const_Function_FloatFuncFromMREdgeId edgeMetric, in MR.Vector3f dir)
 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.
 
static unsafe void setCurrentThreadName (byte? name)
 Generated from function MR.SetCurrentThreadName.
 
static unsafe MR.Std.Filesystem.Path getUserConfigDir ()
 Generated from function MR.getUserConfigDir.
 
static unsafe MR.Std.Filesystem.Path getUserConfigFilePath ()
 Generated from function MR.getUserConfigFilePath.
 
static unsafe MR.Std.Filesystem.Path getTempDirectory ()
 Generated from function MR.GetTempDirectory.
 
static unsafe MR.Std.Filesystem.Path getHomeDirectory ()
 Generated from function MR.GetHomeDirectory.
 
static unsafe? byte getMRVersionString ()
 Generated from function MR.GetMRVersionString.
 
static unsafe void openLink (string url)
 Generated from function MR.OpenLink.
 
static unsafe bool openDocument (string path)
 Generated from function MR.OpenDocument.
 
static unsafe MR.Std.String getCpuId ()
 Generated from function MR.GetCpuId.
 
static unsafe MR.Std.String getDetailedOSName ()
 Generated from function MR.GetDetailedOSName.
 
static unsafe MR.Std.String getOSNoSpaces ()
 Generated from function MR.getOSNoSpaces.
 
static void setNewHandlerIfNeeded ()
 Generated from function MR.setNewHandlerIfNeeded.
 
static unsafe MR.Std.String getCurrentStacktrace ()
 returns string representation of the current stacktrace Generated from function MR.getCurrentStacktrace.
 
static unsafe MR.SystemMemory getSystemMemory ()
 return information about memory available in the system Generated from function MR.getSystemMemory.
 
static unsafe void setupLoggerByDefault (MR.Std.Const_Function_VoidFunc? customLogSinkAdder=null)
 Setups logger: 1) makes stdout sink 2) makes file sink (MRLog.txt) 3) redirect std streams to logger 4) add custom sink if provided 5) print stacktrace on crash (not in wasm) log level - trace Generated from function MR.setupLoggerByDefault. Parameter customLogSinkAdder defaults to {}.
 
static unsafe MR.Mesh terrainTriangulation (MR.Std._ByValue_Vector_MRVector3f points, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Creates Delaunay triangulation using only XY components of points points will be changed inside this function take argument by value Generated from function MR.terrainTriangulation. Parameter cb defaults to {}.
 
static unsafe MR.Std.Optional_MRVector2f findVertexUV (MR.Const_MeshTopology topology, MR.VertId v, MR.Const_TriCornerUVCoords triCornerUvCoords)
 returns UV-coordinates at the given vertex if they are the same in all surrounding triangles; otherwise returns std.nullopt Generated from function MR.findVertexUV.
 
static unsafe MR.Std.Optional_MRVertCoords2 findVertexUVs (MR.Const_MeshTopology topology, MR.Const_TriCornerUVCoords triCornerUvCoords)
 if all mesh vertices have unique UV-coordinates in all triangles, then returns them; otherwise returns std.nullopt Generated from function MR.findVertexUVs.
 
static unsafe MR.Color sampleVertexColor (MR.Const_Mesh mesh, MR.VertId v, MR.Const_MeshTexture tex, MR.Const_TriCornerUVCoords triCornerUvCoords)
 computes the color in the given vertex of mesh textured per-triangle's-corner; if the vertex has different colors in different triangles, then angle-weight average is computed Generated from function MR.sampleVertexColor.
 
static unsafe MR.VertColors sampleVertexColors (MR.Const_Mesh mesh, MR.Const_MeshTexture tex, MR.Const_TriCornerUVCoords triCornerUvCoords)
 computes the colors in the vertices of mesh textured per-triangle's-corner; if one vertex has different colors in different triangles, then angle-weight average is computed Generated from function MR.sampleVertexColors.
 
static unsafe bool isTIFFFile (string path)
 Generated from function MR.isTIFFFile.
 
static unsafe MR.TiffParameters readTiffParameters (string path)
 Generated from function MR.readTiffParameters.
 
static unsafe void readRawTiff (string path, MR.RawTiffOutput output)
 Generated from function MR.readRawTiff.
 
static unsafe void writeRawTiff (byte? bytes, string path, MR.Const_WriteRawTiffParams params_)
 Generated from function MR.writeRawTiff.
 
static unsafe void writeRawTiff (byte? bytes, string path, MR.Const_BaseTiffParameters params_, MR.AffineXf3f? xf)
 Generated from function MR.writeRawTiff.
 
static unsafe void printTimingTreeAtEnd (bool on, double? minTimeSec=null)
 enables or disables printing of timing tree when application terminates
 
static void printCurrentTimerBranch ()
 prints current timer branch Generated from function MR.printCurrentTimerBranch.
 
static unsafe void printTimingTree (double? minTimeSec=null)
 prints the current timing tree
 
static unsafe MR.Mesh makeTorus (float? primaryRadius=null, float? secondaryRadius=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeTorus. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadius defaults to 0.100000001f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe MR.Mesh makeOuterHalfTorus (float? primaryRadius=null, float? secondaryRadius=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeOuterHalfTorus. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadius defaults to 0.100000001f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe MR.Mesh makeTorusWithUndercut (float? primaryRadius=null, float? secondaryRadiusInner=null, float? secondaryRadiusOuter=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeTorusWithUndercut. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadiusInner defaults to 0.100000001f. Parameter secondaryRadiusOuter defaults to 0.200000003f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe MR.Mesh makeTorusWithSpikes (float? primaryRadius=null, float? secondaryRadiusInner=null, float? secondaryRadiusOuter=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeTorusWithSpikes. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadiusInner defaults to 0.100000001f. Parameter secondaryRadiusOuter defaults to 0.5f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe MR.Mesh makeTorusWithComponents (float? primaryRadius=null, float? secondaryRadius=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeTorusWithComponents. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadius defaults to 0.100000001f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe MR.Mesh makeTorusWithSelfIntersections (float? primaryRadius=null, float? secondaryRadius=null, int? primaryResolution=null, int? secondaryResolution=null, MR.Std.Vector_MRVector3f? points=null)
 Generated from function MR.makeTorusWithSelfIntersections. Parameter primaryRadius defaults to 1.0f. Parameter secondaryRadius defaults to 0.100000001f. Parameter primaryResolution defaults to 16. Parameter secondaryResolution defaults to 16.
 
static unsafe bool isPointInPlane (in MR.Vector3f p, in MR.Vector3f a, in MR.Vector3f b, in MR.Vector3f c)
 returns true if ABC plane contains point P Generated from function MR.isPointInPlane<float>.
 
static unsafe bool isPointInPlane (in MR.Vector3d p, in MR.Vector3d a, in MR.Vector3d b, in MR.Vector3d c)
 returns true if ABC plane contains point P Generated from function MR.isPointInPlane<double>.
 
static unsafe bool isPointInLine (in MR.Vector3f p, in MR.Vector3f a, in MR.Vector3f b)
 returns true if AB line contains point P Generated from function MR.isPointInLine<float>.
 
static unsafe bool isPointInLine (in MR.Vector3d p, in MR.Vector3d a, in MR.Vector3d b)
 returns true if AB line contains point P Generated from function MR.isPointInLine<double>.
 
static unsafe bool isPointInSegm (in MR.Vector3f p, in MR.Vector3f a, in MR.Vector3f b)
 returns true if AB segment contains point P Generated from function MR.isPointInSegm<float>.
 
static unsafe bool isPointInSegm (in MR.Vector3d p, in MR.Vector3d a, in MR.Vector3d b)
 returns true if AB segment contains point P Generated from function MR.isPointInSegm<double>.
 
static unsafe bool isPointInTriangle (in MR.Vector3f p, in MR.Vector3f a, in MR.Vector3f b, in MR.Vector3f c)
 returns true if ABC triangle contains point P Generated from function MR.isPointInTriangle<float>.
 
static unsafe bool isPointInTriangle (in MR.Vector3d p, in MR.Vector3d a, in MR.Vector3d b, in MR.Vector3d c)
 returns true if ABC triangle contains point P Generated from function MR.isPointInTriangle<double>.
 
static unsafe bool isPointInTriangle (in MR.Vector2f p, in MR.Vector2f a, in MR.Vector2f b, in MR.Vector2f c)
 returns true if ABC triangle contains point P Generated from function MR.isPointInTriangle<float>.
 
static unsafe bool isPointInTriangle (in MR.Vector2d p, in MR.Vector2d a, in MR.Vector2d b, in MR.Vector2d c)
 returns true if ABC triangle contains point P Generated from function MR.isPointInTriangle<double>.
 
static unsafe MR.Std.Optional_MRTriIntersectResult rayTriangleIntersect (in MR.Vector3f oriA, in MR.Vector3f oriB, in MR.Vector3f oriC, MR.Const_IntersectionPrecomputes_Float prec)
 Generated from function MR.rayTriangleIntersect<float>.
 
static unsafe MR.Std.Optional_MRTriIntersectResult rayTriangleIntersect (in MR.Vector3d oriA, in MR.Vector3d oriB, in MR.Vector3d oriC, MR.Const_IntersectionPrecomputes_Double prec)
 Generated from function MR.rayTriangleIntersect<double>.
 
static unsafe MR.Std.Optional_MRTriIntersectResult rayTriangleIntersect (in MR.Vector3f oriA, in MR.Vector3f oriB, in MR.Vector3f oriC, in MR.Vector3f dir)
 Generated from function MR.rayTriangleIntersect<float>.
 
static unsafe MR.Std.Optional_MRTriIntersectResult rayTriangleIntersect (in MR.Vector3d oriA, in MR.Vector3d oriB, in MR.Vector3d oriC, in MR.Vector3d dir)
 Generated from function MR.rayTriangleIntersect<double>.
 
static unsafe bool doTrianglesOverlap (in MR.Vector2f a, in MR.Vector2f b, in MR.Vector2f c, in MR.Vector2f d, in MR.Vector2f e, in MR.Vector2f f)
 returns true if ABC and DEF overlaps or touches Generated from function MR.doTrianglesOverlap<float>.
 
static unsafe bool doTrianglesOverlap (in MR.Vector2d a, in MR.Vector2d b, in MR.Vector2d c, in MR.Vector2d d, in MR.Vector2d e, in MR.Vector2d f)
 returns true if ABC and DEF overlaps or touches Generated from function MR.doTrianglesOverlap<double>.
 
static unsafe float triDist (ref MR.Vector3f p, ref MR.Vector3f q, in MR.Std.Array_MRVector3f_3 s, in MR.Std.Array_MRVector3f_3 t)
 computes the closest points on two triangles, and returns the squared distance between them.
 
static unsafe void segPoints (ref MR.Vector3f VEC, ref MR.Vector3f X, ref MR.Vector3f Y, in MR.Vector3f P, in MR.Vector3f A, in MR.Vector3f Q, in MR.Vector3f B)
 Returns closest points between an segment pair. Generated from function MR.segPoints.
 
static unsafe MR.Std.Vector_MRFaceFaceFace findTripleFaceIntersections (MR.Const_MeshTopology topology, MR.Std.Const_Vector_StdVectorMRVarEdgeTri selfContours)
 given all self-intersection contours on a mesh, finds all intersecting triangle triples (every two triangles from a triple intersect); please note that not all such triples will have a common point Generated from function MR.findTripleFaceIntersections.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId detectBasisTunnels (MR.Const_MeshPart mp, MR.Std._ByValue_Function_FloatFuncFromMREdgeId? metric=null, MR.Std._ByValue_Function_BoolFuncFromFloat? progressCallback=null)
 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 Generated from function MR.detectBasisTunnels. Parameter metric defaults to {}. Parameter progressCallback defaults to {}.
 
static unsafe MR.Std.Vector_MREdgeId findSmallestMetricCoLoop (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId loop, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Const_FaceBitSet? region=null)
 given not-separating loop on input, finds the loop (also not-separation) that 1) goes from left side of input loop 2) returns to the input loop from its right side 3) goes along the input loop to become closed such that the resulting loop has minimal sum of given metric for its edges; edges 1) and 2) can be only inner or boundary to the given region (they must have region from left or from right) Generated from function MR.findSmallestMetricCoLoop.
 
static unsafe MR.Std.Vector_MREdgeId findShortestCoLoop (MR.Const_MeshPart mp, MR.Std.Const_Vector_MREdgeId loop)
 same as findMinimalCoLoop with euclidean edge length metric Generated from function MR.findShortestCoLoop.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId findSmallestMetricEquivalentLoops (MR.Const_MeshTopology topology, MR.Std.Const_Vector_MREdgeId loop, MR.Std.Const_Function_FloatFuncFromMREdgeId metric, MR.Const_FaceBitSet? region=null)
 given not-separating loop on input, finds one or several loops such that 1) resulting loops together with input loop separate a part of mesh, 2) returned loops are oriented the same as input loop (and have the separated mesh part from the other side compared to input loop); 3) the sum of the given metric for their edges is minimal; 4) resulting edges can be only inner to the given region. Generated from function MR.findSmallestMetricEquivalentLoops.
 
static unsafe MR.Std.Vector_StdVectorMREdgeId findShortestEquivalentLoops (MR.Const_MeshPart mp, MR.Std.Const_Vector_MREdgeId loop)
 same as findSmallestMetricEquivalentLoops with euclidean edge length metric Generated from function MR.findShortestEquivalentLoops.
 
static unsafe MR.FaceBitSet detectTunnelFaces (MR.Const_MeshPart mp, MR.Const_DetectTunnelSettings? settings=null)
 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 Generated from function MR.detectTunnelFaces. Parameter settings defaults to {}.
 
static unsafe MR.Std.Optional_MRVertBitSet pointUniformSampling (MR.Const_PointCloud pointCloud, MR.Const_UniformSamplingSettings settings)
 Sample vertices, removing ones that are too close; returns std.nullopt if it was terminated by the callback Generated from function MR.pointUniformSampling.
 
static unsafe MR.Std.Optional_MRPointCloud makeUniformSampledCloud (MR.Const_PointCloud pointCloud, MR.Const_UniformSamplingSettings settings)
 Composes new point cloud consisting of uniform samples of original point cloud; returns std.nullopt if it was terminated by the callback Generated from function MR.makeUniformSampledCloud.
 
static unsafe MR.Mesh uniteManyMeshes (MR.Std.Const_Vector_ConstMRMeshPtr meshes, MR.Const_UniteManyMeshesParams? params_=null)
 Generated from function MR.uniteManyMeshes. Parameter params_ defaults to {}.
 
static unsafe float cross (in MR.Vector2f a, in MR.Vector2f b)
 cross product Generated from function MR.cross<float>.
 
static unsafe int dot (in MR.Vector2b a, in MR.Vector2b b)
 dot product Generated from function MR.dot<bool>.
 
static unsafe int dot (in MR.Vector2i a, in MR.Vector2i b)
 dot product Generated from function MR.dot<int>.
 
static unsafe long dot (in MR.Vector2i64 a, in MR.Vector2i64 b)
 dot product Generated from function MR.dot<MR_int64_t>.
 
static unsafe float dot (in MR.Vector2f a, in MR.Vector2f b)
 dot product Generated from function MR.dot<float>.
 
static unsafe double dot (in MR.Vector2d a, in MR.Vector2d b)
 dot product Generated from function MR.dot<double>.
 
static unsafe float dot (in MR.Vector3f a, in MR.Vector3f b)
 dot product Generated from function MR.dot<float>.
 
static unsafe double dot (in MR.Vector3d a, in MR.Vector3d b)
 dot product Generated from function MR.dot<double>.
 
static unsafe int dot (in MR.Vector3b a, in MR.Vector3b b)
 dot product Generated from function MR.dot<bool>.
 
static unsafe int dot (in MR.Vector3i a, in MR.Vector3i b)
 dot product Generated from function MR.dot<int>.
 
static unsafe long dot (in MR.Vector3i64 a, in MR.Vector3i64 b)
 dot product Generated from function MR.dot<MR_int64_t>.
 
static unsafe int dot (MR.Const_Vector3_UnsignedChar a, MR.Const_Vector3_UnsignedChar b)
 dot product Generated from function MR.dot<unsigned char>.
 
static unsafe int dot (in MR.Vector4b a, in MR.Vector4b b)
 dot product Generated from function MR.dot<bool>.
 
static unsafe int dot (in MR.Vector4i a, in MR.Vector4i b)
 dot product Generated from function MR.dot<int>.
 
static unsafe long dot (in MR.Vector4i64 a, in MR.Vector4i64 b)
 dot product Generated from function MR.dot<MR_int64_t>.
 
static unsafe float dot (in MR.Vector4f a, in MR.Vector4f b)
 dot product Generated from function MR.dot<float>.
 
static unsafe double dot (in MR.Vector4d a, in MR.Vector4d b)
 dot product Generated from function MR.dot<double>.
 
static unsafe int dot (MR.Const_Vector4_UnsignedChar a, MR.Const_Vector4_UnsignedChar b)
 dot product Generated from function MR.dot<unsigned char>.
 
static unsafe MR.ViewportIterator begin (MR.Const_ViewportMask mask)
 Generated from function MR.begin.
 
static unsafe MR.ViewportIterator end (MR.Const_ViewportMask _1)
 Generated from function MR.end.
 
static MR.OutEdge opposite (MR.OutEdge e)
 Generated from function MR.opposite.
 
static unsafe void expandVoxelsMask (MR.VoxelBitSet mask, MR.Const_VolumeIndexer indexer, int? expansion=null)
 expands VoxelBitSet with given number of steps Generated from function MR.expandVoxelsMask. Parameter expansion defaults to 1.
 
static unsafe void shrinkVoxelsMask (MR.VoxelBitSet mask, MR.Const_VolumeIndexer indexer, int? shrinkage=null)
 shrinks VoxelBitSet with given number of steps Generated from function MR.shrinkVoxelsMask. Parameter shrinkage defaults to 1.
 
static unsafe void decompressZip (string zipFile, string targetFolder, byte? password=null)
 decompresses given zip-file into given folder
 
static unsafe void decompressZip (MR.Std.Istream zipStream, string targetFolder, byte? password=null)
 decompresses given binary stream (containing the data of a zip file only) into given folder
 
static unsafe void compressZip (string zipFile, string sourceFolder, MR.Std.Const_Vector_StdFilesystemPath? excludeFiles=null, byte? password=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 compresses given folder in given zip-file
 
static unsafe MR.Std.Ostream getStdCout ()
 Returns the stdout stream.
 
static unsafe MR.Std.Ostream getStdCerr ()
 Returns the stderr stream, buffered.
 
static unsafe MR.Std.Ostream getStdClog ()
 Returns the stderr stream, unbuffered.
 
static unsafe MR.Std.Istream getStdCin ()
 Returns the stdin stream.
 
static unsafe MR.Mesh alignTextToMesh (MR.Const_Mesh mesh, MR.Const_TextMeshAlignParams params_)
 Creates symbol mesh and aligns it to given surface Generated from function MR.alignTextToMesh.
 
static unsafe MR.Mesh bendTextAlongCurve (MR.Std.Const_Function_MRCurvePointFuncFromFloat curve, MR.Const_BendTextAlongCurveParams params_)
 Creates symbol mesh and deforms it along given curve.
 
static unsafe MR.Mesh bendTextAlongCurve (MR.Std.Const_Vector_MRCurvePoint curve, MR.Const_BendTextAlongCurveParams params_)
 Creates symbol mesh and deforms it along given curve Generated from function MR.bendTextAlongCurve.
 
static unsafe MR.Mesh bendTextAlongSurfacePath (MR.Const_Mesh mesh, MR.Const_MeshTriPoint start, MR.Std.Const_Vector_MREdgePoint path, MR.Const_MeshTriPoint end, MR.Const_BendTextAlongCurveParams params_)
 Creates symbol mesh and deforms it along given surface path: start->path->end Generated from function MR.bendTextAlongSurfacePath.
 
static unsafe MR.Mesh bendTextAlongSurfacePath (MR.Const_Mesh mesh, MR.Std.Const_Vector_MREdgePoint path, MR.Const_BendTextAlongCurveParams params_)
 Creates symbol mesh and deforms it along given surface path Generated from function MR.bendTextAlongSurfacePath.
 
static unsafe MR.Std.Vector_StdVectorMRVector2f createSymbolContours (MR.Const_SymbolMeshParams params_)
 Generated from function MR.createSymbolContours.
 
static unsafe MR.Mesh createSymbolsMesh (MR.Const_SymbolMeshParams params_)
 Generated from function MR.createSymbolsMesh.
 
static unsafe MR.OriginAndDimensions calcOriginAndDimensions (in MR.Box3f box, float voxelSize)
 computes origin and dimensions of voxel-grid to cover given 3D box with given spacing (voxelSize) Generated from function MR.calcOriginAndDimensions.
 
static unsafe float voxelizeAndComputeVolume (MR.Std.Const_Vector_StdSharedPtrMRMesh meshes, in MR.AffineXf3f xf, in MR.Vector3f voxelSize)
 Generated from function MR.voxelizeAndComputeVolume.
 
static unsafe ulong heapBytes (MR.Const_FloatGrid grid)
 returns the amount of heap memory occupied by grid Generated from function MR.heapBytes.
 
static unsafe MR.FloatGrid resampled (MR.Const_FloatGrid grid, float voxelScale, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 resample this grid to fit voxelScale Generated from function MR.resampled. Parameter cb defaults to {}.
 
static unsafe MR.FloatGrid resampled (MR.Const_FloatGrid grid, in MR.Vector3f voxelScale, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 resample this grid to fit voxelScale Generated from function MR.resampled. Parameter cb defaults to {}.
 
static unsafe MR.FloatGrid cropped (MR.Const_FloatGrid grid, in MR.Box3i box, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 returns cropped grid Generated from function MR.cropped. Parameter cb defaults to {}.
 
static unsafe ulong countVoxelsWithValuePred (MR.Const_FloatGrid grid, MR.Std.Const_Function_BoolFuncFromFloat pred)
 returns number of velxes in the grid with pred(value) == true Generated from function MR.countVoxelsWithValuePred.
 
static unsafe ulong countVoxelsWithValueLess (MR.Const_FloatGrid grid, float value)
 returns number of voxels in the grid with value less than given Generated from function MR.countVoxelsWithValueLess.
 
static unsafe ulong countVoxelsWithValueGreater (MR.Const_FloatGrid grid, float value)
 returns number of voxels in the grid with value greater than given Generated from function MR.countVoxelsWithValueGreater.
 
static unsafe void gaussianFilter (MR.FloatGrid grid, int width, int iters, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 returns grid with gaussian filter applied Generated from function MR.gaussianFilter. Parameter cb defaults to {}.
 
static unsafe MR.FloatGrid gaussianFiltered (MR.Const_FloatGrid grid, int width, int iters, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.gaussianFiltered. Parameter cb defaults to {}.
 
static unsafe float getValue (MR.Const_FloatGrid grid, in MR.Vector3i p)
 returns the value at given voxel Generated from function MR.getValue.
 
static unsafe void setValue (MR.FloatGrid grid, in MR.Vector3i p, float value)
 sets given region voxels value
 
static unsafe void setValue (MR.FloatGrid grid, MR.Const_VoxelBitSet region, float value)
 sets given region voxels value
 
static unsafe MR.Box3i findActiveBounds (MR.Const_FloatGrid grid)
 returns bounding box of active voxels in grid min: including max: excluding Generated from function MR.findActiveBounds.
 
static unsafe void setValues (MR.FloatGrid grid, MR.Const_VoxelBitSet region, MR.Std.Const_Vector_Float values)
 sets given region voxels value one by one
 
static unsafe void setLevelSetType (MR.FloatGrid grid)
 sets type of this grid as LEVEL SET (for normal flipping) Generated from function MR.setLevelSetType.
 
static unsafe MR.Mesh marchingCubes (MR.Const_SimpleVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubes. Parameter params_ defaults to {}.
 
static unsafe MR.TriMesh marchingCubesAsTriMesh (MR.Const_SimpleVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubesAsTriMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh marchingCubes (MR.Const_SimpleVolumeMinMax volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubes. Parameter params_ defaults to {}.
 
static unsafe MR.TriMesh marchingCubesAsTriMesh (MR.Const_SimpleVolumeMinMax volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubesAsTriMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh marchingCubes (MR.Const_VdbVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubes. Parameter params_ defaults to {}.
 
static unsafe MR.TriMesh marchingCubesAsTriMesh (MR.Const_VdbVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubesAsTriMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh marchingCubes (MR.Const_FunctionVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubes. Parameter params_ defaults to {}.
 
static unsafe MR.TriMesh marchingCubesAsTriMesh (MR.Const_FunctionVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubesAsTriMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh marchingCubes (MR.Const_SimpleBinaryVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubes. Parameter params_ defaults to {}.
 
static unsafe MR.TriMesh marchingCubesAsTriMesh (MR.Const_SimpleBinaryVolume volume, MR.Const_MarchingCubesParams? params_=null)
 Generated from function MR.marchingCubesAsTriMesh. Parameter params_ defaults to {}.
 
static unsafe MR.SimpleVolumeMinMax meshToDistanceVolume (MR.Const_MeshPart mp, MR.Const_MeshToDistanceVolumeParams params_)
 makes SimpleVolume filled with (signed or unsigned) distances from Mesh with given settings Generated from function MR.meshToDistanceVolume.
 
static unsafe MR.FunctionVolume meshToDistanceFunctionVolume (MR.Const_MeshPart mp, MR.Const_MeshToDistanceVolumeParams params_)
 makes FunctionVolume representing (signed or unsigned) distances from Mesh with given settings Generated from function MR.meshToDistanceFunctionVolume.
 
static unsafe MR.SimpleBinaryVolume makeCloseToMeshVolume (MR.Const_MeshPart mp, MR.Const_CloseToMeshVolumeParams params_)
 makes a binary volume with close-to-surface predicate values according to the given parameters Generated from function MR.makeCloseToMeshVolume.
 
static unsafe MR.SimpleVolumeMinMax meshRegionToIndicatorVolume (MR.Const_Mesh mesh, MR.Const_FaceBitSet region, float offset, MR.Const_DistanceVolumeParams params_)
 returns a volume filled with the values: (unsigned distance to region-part) - (unsigned distance to not-region-part); 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 Generated from function MR.meshRegionToIndicatorVolume.
 
static unsafe MR.Std.Array_MRSimpleVolumeMinMax_3 meshToDirectionVolume (MR.Const_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.
 
static unsafe MR.VertBitSet moveMeshToVoxelMaxDeriv (MR.Mesh mesh, in MR.AffineXf3f meshXf, MR.Const_VdbVolume volume, in MR.AffineXf3f volumeXf, MR.Const_MoveMeshToVoxelMaxDerivSettings settings, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.
 
static unsafe MR.VertBitSet moveMeshToVoxelMaxDeriv (MR.Mesh mesh, in MR.AffineXf3f meshXf, MR.Const_SimpleVolumeMinMax volume, in MR.AffineXf3f volumeXf, MR.Const_MoveMeshToVoxelMaxDerivSettings settings, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.
 
static unsafe MR.VertBitSet moveMeshToVoxelMaxDeriv (MR.Mesh mesh, in MR.AffineXf3f meshXf, MR.Const_FunctionVolume volume, in MR.AffineXf3f volumeXf, MR.Const_MoveMeshToVoxelMaxDerivSettings settings, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.
 
static unsafe MR.Std.Const_String defaultSerializeVoxelsFormat ()
 returns file extension used to serialize ObjectVoxels by default (if not overridden in specific object), the string starts with '.' Generated from function MR.defaultSerializeVoxelsFormat.
 
static unsafe void setDefaultSerializeVoxelsFormat (string newFormat)
 sets file extension used to serialize serialize ObjectVoxels by default (if not overridden in specific object), the string must start from '.' Generated from function MR.setDefaultSerializeVoxelsFormat.
 
static unsafe float suggestVoxelSize (MR.Const_MeshPart mp, float approxNumVoxels)
 computes size of a cubical voxel to get approximately given number of voxels during rasterization Generated from function MR.suggestVoxelSize.
 
static unsafe MR.Mesh offsetMesh (MR.Const_MeshPart mp, float offset, MR.Const_OffsetParameters? params_=null)
 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 Generated from function MR.offsetMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh doubleOffsetMesh (MR.Const_MeshPart mp, float offsetA, float offsetB, MR.Const_OffsetParameters? params_=null)
 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 Generated from function MR.doubleOffsetMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh mcOffsetMesh (MR.Const_MeshPart mp, float offset, MR.Const_OffsetParameters? params_=null, MR.Vector_MRVoxelId_MRFaceId? outMap=null)
 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(...) Generated from function MR.mcOffsetMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh mcShellMeshRegion (MR.Const_Mesh mesh, MR.Const_FaceBitSet region, float offset, MR.Const_BaseShellParameters params_, MR.Vector_MRVoxelId_MRFaceId? outMap=null)
 Constructs a shell around selected mesh region with the properties that every point on the shall must.
 
static unsafe MR.Mesh sharpOffsetMesh (MR.Const_MeshPart mp, float offset, MR.Const_SharpOffsetParameters? params_=null)
 Offsets mesh by converting it to voxels and back post process result using reference mesh to sharpen features Generated from function MR.sharpOffsetMesh. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh generalOffsetMesh (MR.Const_MeshPart mp, float offset, MR.Const_GeneralOffsetParameters params_)
 Offsets mesh by converting it to voxels and back using one of three modes specified in the parameters.
 
static unsafe MR.Mesh thickenMesh (MR.Const_Mesh mesh, float offset, MR.Const_GeneralOffsetParameters? params_=null, MR.Const_PartMapping? map=null)
 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; Generated from function MR.thickenMesh. Parameter params_ defaults to {}. Parameter map defaults to {}.
 
static unsafe MR.Mesh offsetOneDirection (MR.Const_MeshPart mp, float offset, MR.Const_GeneralOffsetParameters? params_=null)
 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 Generated from function MR.offsetOneDirection. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh offsetPolyline (MR.Const_Polyline3 polyline, float offset, MR.Const_OffsetParameters? params_=null)
 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) Generated from function MR.offsetPolyline. Parameter params_ defaults to {}.
 
static unsafe MR.Mesh partialOffsetMesh (MR.Const_MeshPart mp, float offset, MR.Const_GeneralOffsetParameters? params_=null)
 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 Generated from function MR.partialOffsetMesh. Parameter params_ defaults to {}.
 
static unsafe MR.SimpleVolume pointsToDistanceVolume (MR.Const_PointCloud cloud, MR.Const_PointsToDistanceVolumeParams params_)
 makes SimpleVolume filled with signed distances to points with normals Generated from function MR.pointsToDistanceVolume.
 
static unsafe MR.FunctionVolume pointsToDistanceFunctionVolume (MR.Const_PointCloud cloud, MR.Const_PointsToDistanceVolumeParams params_)
 makes FunctionVolume representing signed distances to points with normals Generated from function MR.pointsToDistanceFunctionVolume.
 
static unsafe MR.VertColors calcAvgColors (MR.Const_PointCloud cloud, MR.Const_VertColors colors, MR.Const_VertCoords tgtPoints, MR.Const_VertBitSet tgtVerts, float sigma, MR.Std.Const_Function_BoolFuncFromFloat? cb=null)
 given
 
static unsafe MR.Mesh pointsToMeshFusion (MR.Const_PointCloud cloud, MR.Const_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 Generated from function MR.pointsToMeshFusion.
 
static unsafe MR.FloatGrid polylineToDistanceField (MR.Const_Polyline3 polyline, MR.Const_PolylineToDistanceVolumeParams params_)
 convert polyline to voxels distance field Generated from function MR.polylineToDistanceField.
 
static unsafe MR.VdbVolume polylineToVdbVolume (MR.Const_Polyline3 polyline, MR.Const_PolylineToDistanceVolumeParams params_)
 convert polyline to VDB volume Generated from function MR.polylineToVdbVolume.
 
static unsafe MR.SimpleVolume polylineToSimpleVolume (MR.Const_Polyline3 polyline, MR.Const_PolylineToVolumeParams params_)
 convert polyline to simple volume Generated from function MR.polylineToSimpleVolume.
 
static unsafe MR.FunctionVolume polylineToFunctionVolume (MR.Const_Polyline3 polyline, MR.Const_PolylineToVolumeParams params_)
 convert polyline to function volume Generated from function MR.polylineToFunctionVolume.
 
static unsafe MR.Mesh rebuildMesh (MR.Const_MeshPart mp, MR.Const_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 Generated from function MR.rebuildMesh.
 
static unsafe MR.Std.Function_FloatFuncFromConstCharPtr getTypeConverter (MR.ScalarType scalarType, ulong range, long min)
 get a function to convert binary data of specified format type to a scalar value
 
static unsafe void sortScansByOrder (MR.Std.Vector_StdFilesystemPath scans, MR.Std.Vector_MRSliceInfo zOrder)
 Sort scan files in given vector by given slice information Generated from function MR.sortScansByOrder.
 
static unsafe void putScanFileNameInZ (MR.Std.Const_Vector_StdFilesystemPath scans, MR.Std.Vector_MRSliceInfo zOrder)
 Read layer heights from given scan file names Generated from function MR.putScanFileNameInZ.
 
static unsafe void sortScanFilesByName (MR.Std.Vector_StdFilesystemPath scans)
 Sort scan files in given vector by names (respect numbers in it) Generated from function MR.sortScanFilesByName.
 
static unsafe MR.Box3f computeWorkArea (MR.Const_Polyline3 toolpath, MR.Const_MeshPart tool)
 Compute bounding box for swept volume for given tool and toolpath Generated from function MR.computeWorkArea.
 
static unsafe MR.Box3i computeGridBox (in MR.Box3f workArea, float voxelSize)
 Compute required voxel volume's dimensions for given work area Generated from function MR.computeGridBox.
 
static unsafe MR.Mesh computeSweptVolumeWithMeshMovement (MR.Const_ComputeSweptVolumeParameters params_)
 Compute swept volume for given toolpath and tool Builds mesh for each tool movement and joins them using voxel boolean Generated from function MR.computeSweptVolumeWithMeshMovement.
 
static unsafe MR.Mesh computeSweptVolumeWithDistanceVolume (MR.Const_ComputeSweptVolumeParameters params_)
 Compute swept volume for given toolpath and tool Creates a distance-to-tool volume and converts it to mesh using the marching cubes algorithm Generated from function MR.computeSweptVolumeWithDistanceVolume.
 
static unsafe MR.Mesh computeSweptVolumeWithCustomToolDistance (MR.IComputeToolDistance comp, MR.Const_ComputeSweptVolumeParameters params_)
 Compute swept volume for given toolpath and tool Creates a distance-to-tool volume using custom tool distance computation object and converts it to mesh using the marching cubes algorithm Generated from function MR.computeSweptVolumeWithCustomToolDistance.
 
static unsafe MR.Std.Array_MRSimpleVolumeMinMax_3 teethMaskToDirectionVolume (MR.Const_VdbVolume volume, MR.Std.Const_Vector_Int? additionalIds=null)
 A shortcut for TeethMaskToDirectionVolumeConvertor.create and TeethMaskToDirectionVolumeConvertor.convertAll Generated from function MR.teethMaskToDirectionVolume. Parameter additionalIds defaults to {}.
 
static unsafe MR.ToolPathResult constantZToolPath (MR.Const_MeshPart mp, MR.Const_ToolPathParams params_)
 Generated from function MR.constantZToolPath.
 
static unsafe MR.ToolPathResult lacingToolPath (MR.Const_MeshPart mp, MR.Const_ToolPathParams params_, MR.Axis cutDirection)
 Generated from function MR.lacingToolPath.
 
static unsafe MR.ToolPathResult constantCuspToolPath (MR.Const_MeshPart mp, MR.Const_ConstantCuspParams params_)
 Generated from function MR.constantCuspToolPath.
 
static unsafe MR.ObjectGcode exportToolPathToGCode (MR.Std.Const_Vector_MRGCommand commands)
 Generated from function MR.exportToolPathToGCode.
 
static unsafe void interpolateLines (MR.Std.Vector_MRGCommand commands, MR.Const_LineInterpolationParams params_, MR.Axis axis)
 Generated from function MR.interpolateLines.
 
static unsafe void interpolateArcs (MR.Std.Vector_MRGCommand commands, MR.Const_ArcInterpolationParams params_, MR.Axis axis)
 Generated from function MR.interpolateArcs.
 
static unsafe MR.FaceBitSet smoothSelection (MR.Mesh mesh, MR.Const_FaceBitSet region, float expandOffset, float shrinkOffset)
 Generated from function MR.smoothSelection.
 
static unsafe MR.FloatGrid meshToLevelSet (MR.Const_MeshPart mp, in MR.AffineXf3f xf, in MR.Vector3f voxelSize, float? surfaceOffset=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.meshToLevelSet. Parameter surfaceOffset defaults to 3. Parameter cb defaults to {}.
 
static unsafe MR.FloatGrid meshToDistanceField (MR.Const_MeshPart mp, in MR.AffineXf3f xf, in MR.Vector3f voxelSize, float? surfaceOffset=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.meshToDistanceField. Parameter surfaceOffset defaults to 3. Parameter cb defaults to {}.
 
static unsafe void evalGridMinMax (MR.Const_FloatGrid grid, ref float min, ref float max)
 Generated from function MR.evalGridMinMax.
 
static unsafe MR.VdbVolume meshToDistanceVdbVolume (MR.Const_MeshPart mp, MR.Const_MeshToVolumeParams? params_=null)
 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 Generated from function MR.meshToDistanceVdbVolume. Parameter params_ defaults to {}.
 
static unsafe MR.VdbVolume meshToVolume (MR.Const_MeshPart mp, MR.Const_MeshToVolumeParams? params_=null)
 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 Generated from function MR.meshToVolume. Parameter params_ defaults to {}.
 
static unsafe MR.VdbVolume floatGridToVdbVolume (MR._ByValue_FloatGrid grid)
 Generated from function MR.floatGridToVdbVolume.
 
static unsafe MR.FloatGrid simpleVolumeToDenseGrid (MR.Const_SimpleVolume simpleVolume, float? background=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.simpleVolumeToDenseGrid. Parameter background defaults to 0.0f. Parameter cb defaults to {}.
 
static unsafe MR.VdbVolume simpleVolumeToVdbVolume (MR.Const_SimpleVolumeMinMax simpleVolume, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.simpleVolumeToVdbVolume. Parameter cb defaults to {}.
 
static unsafe MR.VdbVolume functionVolumeToVdbVolume (MR.Const_FunctionVolume functoinVolume, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.functionVolumeToVdbVolume. Parameter cb defaults to {}.
 
static unsafe MR.SimpleVolumeMinMax vdbVolumeToSimpleVolume (MR.Const_VdbVolume vdbVolume, MR.Box3i? activeBox=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Generated from function MR.vdbVolumeToSimpleVolume. Parameter activeBox defaults to MR.Box3i(). Parameter cb defaults to {}.
 
static unsafe MR.SimpleVolumeMinMax vdbVolumeToSimpleVolumeNorm (MR.Const_VdbVolume vdbVolume, MR.Box3i? activeBox=null, MR._InOpt_Box1f sourceScale=default, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Makes normalized SimpleVolume from VdbVolume Normalisation consist of scaling values linearly from the source scale to the interval [0;1].
 
static unsafe MR.SimpleVolumeMinMaxU16 vdbVolumeToSimpleVolumeU16 (MR.Const_VdbVolume vdbVolume, MR.Box3i? activeBox=null, MR._InOpt_Box1f sourceScale=default, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Makes SimpleVolumeU16 from VdbVolume Values are linearly scaled from the source scale to the range corresponding to uint16_t.
 
static unsafe MR.Mesh gridToMesh (MR.Const_FloatGrid grid, MR.Const_GridToMeshSettings settings)
 converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm Generated from function MR.gridToMesh.
 
static unsafe MR.Mesh gridToMesh (MR.Misc._Moved< MR.FloatGrid > grid, MR.Const_GridToMeshSettings settings)
 converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm; deletes grid in the middle to reduce peak memory consumption Generated from function MR.gridToMesh.
 
static unsafe void makeSignedByWindingNumber (MR.FloatGrid grid, in MR.Vector3f voxelSize, MR.Const_Mesh refMesh, MR.Const_MakeSignedByWindingNumberSettings settings)
 set signs for unsigned distance field grid using generalized winding number computed at voxel grid point from refMesh Generated from function MR.makeSignedByWindingNumber.
 
static unsafe MR.Mesh doubleOffsetVdb (MR.Const_MeshPart mp, MR.Const_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 Generated from function MR.doubleOffsetVdb.
 
static unsafe MR.Mesh meshFromVoxelsMask (MR.Const_VdbVolume volume, MR.Const_VoxelBitSet mask)
 Creates mesh from voxels mask.
 
static unsafe MR.Mesh segmentVolume (MR.Const_VdbVolume volume, MR.Std.Const_Vector_StdPairMRVector3fMRVector3f pairs, MR.Const_VolumeSegmentationParameters? params_=null)
 Simple segment volume.
 
static unsafe MR.Std.Vector_MRMesh segmentVoxelMaskToInstances (MR.Const_VdbVolume mask, ulong? minSize=null, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Given voxel mask, separate it into components using mincut algorithm.
 
static unsafe MR.VdbVolume voxelFilter (MR.Const_VdbVolume volume, MR.VoxelFilterType type, int width)
 Performs voxels filtering.
 
static unsafe MR.VoxelBitSet segmentVolumeByGraphCut (MR.Const_SimpleVolume densityVolume, float k, MR.Const_VoxelBitSet sourceSeeds, MR.Const_VoxelBitSet sinkSeeds, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 Segment voxels of given volume on two sets using graph-cut, returning source set.
 
static MR.QuarterBit bitand (MR.QuarterBit a, MR.QuarterBit b)
 Generated from function MR.operator&.
 
static MR.QuarterBit bitor (MR.QuarterBit a, MR.QuarterBit b)
 Generated from function MR.operator|.
 
static MR.QuarterBit compl (MR.QuarterBit a)
 Generated from function MR.operator~.
 
static unsafe ref MR.QuarterBit bitandAssign (ref MR.QuarterBit a, MR.QuarterBit b)
 Generated from function MR.operator&=.
 
static unsafe ref MR.QuarterBit bitorAssign (ref MR.QuarterBit a, MR.QuarterBit b)
 Generated from function MR.operator|=.
 
static MR.QuarterBit mul (MR.QuarterBit a, bool b)
 Generated from function MR.operator*.
 
static MR.QuarterBit mul (bool a, MR.QuarterBit b)
 Generated from function MR.operator*.
 
static unsafe ref MR.QuarterBit mulAssign (ref MR.QuarterBit a, bool b)
 Generated from function MR.operator*=.
 
static unsafe MR.Std.Function_FloatFuncFromMRUint64TMRUint64T voxelsExponentMetric (MR.Const_VdbVolume voxels, MR.Const_VoxelMetricParameters parameters, float? modifier=null)
 e^(modifier*(dens1+dens2)) Generated from function MR.voxelsExponentMetric. Parameter modifier defaults to -1.0f.
 
static unsafe MR.Std.Function_FloatFuncFromMRUint64TMRUint64T voxelsSumDiffsMetric (MR.Const_VdbVolume voxels, MR.Const_VoxelMetricParameters parameters)
 sum of dense differences with start and stop voxels Generated from function MR.voxelsSumDiffsMetric.
 
static unsafe MR.Std.Vector_MRUint64T buildSmallestMetricPath (MR.Const_VdbVolume voxels, MR.Std.Const_Function_FloatFuncFromMRUint64TMRUint64T metric, ulong start, ulong finish, MR.Std._ByValue_Function_BoolFuncFromFloat? cb=null)
 builds shortest path in given metric from start to finish voxels; if no path can be found then empty path is returned Generated from function MR.buildSmallestMetricPath. Parameter cb defaults to {}.
 
static unsafe MR.TransformVdbVolumeResult transformVdbVolume (MR.Const_VdbVolume volume, in MR.AffineXf3f xf, bool? fixBox=null, MR.Box3f? box=null)
 Transform volume.
 
static unsafe bool voxelsApplyTransform (MR.ObjectVoxels obj, in MR.AffineXf3f xf, bool fixBox)
 Same as above but for the SceneObject.
 
static unsafe MR.Std.Vector_StdSharedPtrMRObjectVoxels makeObjectVoxelsFromFile (string file, MR.Std._ByValue_Function_BoolFuncFromFloat? callback=null)
 loads voxels from given file in new object Generated from function MR.makeObjectVoxelsFromFile. Parameter callback defaults to {}.
 
static unsafe MR.LoadedObjects makeObjectFromVoxelsFile (string file, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 Generated from function MR.makeObjectFromVoxelsFile. Parameter callback defaults to {}.
 
static unsafe void saveObjectVoxelsToFile (MR.Const_Object object_, string path, MR.ObjectSave.Const_Settings settings)
 Generated from function MR.saveObjectVoxelsToFile.
 
static unsafe MR.SimpleVolumeMinMax functionVolumeToSimpleVolume (MR.Const_FunctionVolume volume, MR.Std.Const_Function_BoolFuncFromFloat? callback=null)
 converts function volume into simple volume Generated from function MR.functionVolumeToSimpleVolume. Parameter callback defaults to {}.
 

Public Attributes

MRMESH_API const double BadTriangulationMetric
 
 DIRTY_FACES_RENDER_NORMAL
 
 DIRTY_CORNERS_RENDER_NORMAL
 
 YZ
 
 ZX
 
 XY
 
 None
 

Related Symbols

(Note that these are not member symbols.)

static unsafe bool fromSameTriangle (MR.Const_MeshTopology topology, MR.EdgePoint a, MR.EdgePoint b)
 returns true if points a and b are located on a boundary of the same triangle;
 
static unsafe bool fromSameTriangle (MR.Const_MeshTopology topology, MR.Misc._Moved< MR.EdgePoint > a, MR.Misc._Moved< MR.EdgePoint > b)
 returns true if points a and b are located on a boundary of the same triangle;
 

Member Enumeration Documentation

◆ BooleanOperation

enum MR.BooleanOperation : int

Enum class of available CSG operations.

Two separate meshes
See also
MR.boolean
Enumerator
InsideA 

Part of mesh A that is inside of mesh B

Inside A
InsideB 

Part of mesh B that is inside of mesh A

Inside B
OutsideA 

Part of mesh A that is outside of mesh B

Outside A
OutsideB 

Part of mesh B that is outside of mesh A

Outside B
Union 

Union surface of two meshes (outside parts)

Union
Intersection 

Intersection surface of two meshes (inside parts)

Intersection
DifferenceBA 

Surface of mesh B - surface of mesh A (outside B - inside A)

Difference B-A
DifferenceAB 

not a valid operation

Surface of mesh A - surface of mesh B (outside A - inside B)

Difference A-B

◆ ColoringType

enum MR.ColoringType : int

Type of object coloring,.

Note
that texture are applied over main coloring
Enumerator
SolidColor 

Use one color for whole object.

Use different color (taken from faces colormap) for each primitive

PrimitivesColorMap 

Use different color (taken from faces colormap) for each face (primitive for object mesh)

FacesColorMap 

Use different color (taken from faces colormap) for each line (primitive for object lines)

LinesColorMap 

Use different color (taken from verts colormap) for each vertex.

◆ DirtyFlags

enum MR.DirtyFlags : int
Enumerator
DIRTYVERTSRENDERNORMAL 

gl normals

DIRTYFACESRENDERNORMAL 

gl normals

◆ EdgeWeights

enum MR.EdgeWeights : int

determines the weight of each edge in applications like Laplacian

Enumerator
Unit 

all edges have same weight=1

Cotan 

edge weight depends on local geometry and uses cotangent values

◆ FlipEdge

enum MR.FlipEdge : int
Enumerator
Can 

edge flipping is possible

edge flipping is prohibited by topology or by constraints

Cannot 

edge flipping is required to solve some topology issue

◆ GeodesicPathApprox

enum MR.GeodesicPathApprox : byte

the algorithm to compute approximately geodesic path

Enumerator
DijkstraBiDir 

compute edge-only path by building it from start and end simultaneously

DijkstraAStar 

compute edge-only path using A*-search algorithm

FastMarching 

use Fast Marching algorithm

◆ ICPMethod

enum MR.ICPMethod : int

The method how to update transformation from point pairs.

Enumerator
Combined 

PointToPoint for the first 2 iterations, and PointToPlane for the remaining iterations.

select transformation that minimizes mean squared distance between two points in each pair, it is the safest approach but can converge slowly

PointToPoint 

select transformation that minimizes mean squared distance between a point and a plane via the other point in each pair, converge much faster than PointToPoint in case of many good (with not all points/normals in one plane) pairs This mode only works correctly if the object that points are being projected onto has normals information (is not a point clouds without normals). By default both objects are projected onto each other, so at least one of them must have normals, unless you change the settings to only project one way (using MR.ICP.setFltSamples() or MR.ICP.setRefSamples()), in which case the object being projected onto must have normals.

◆ ICPMode

enum MR.ICPMode : int

The group of transformations, each with its own degrees of freedom.

Enumerator
RigidScale 

rigid body transformation with uniform scaling (7 degrees of freedom)

rigid body transformation (6 degrees of freedom)

AnyRigidXf 

rigid body transformation with rotation except argument axis (5 degrees of freedom)

OrthogonalAxis 

rigid body transformation with rotation around given axis only (4 degrees of freedom)

FixedAxis 

only translation (3 degrees of freedom)

◆ NestedComponenetsMode

enum MR.NestedComponenetsMode : int

Mode of processing components.

Enumerator
Remove 

Default: separate nested meshes and remove them, just like union operation should do, use this if input meshes are single component.

merge nested meshes, useful if input meshes are components of single object

Merge 

does not separate components and call union for all input meshes, works slower than Remove and Merge method but returns valid result if input meshes has multiple components

◆ ObjectSelectivityType

enum MR.ObjectSelectivityType : int
Enumerator
Selectable 

object itself and all its ancestors are selectable

LocalSelectable 

object itself is selectable

Selected 

object itself is selected and all its ancestors are selectable

LocalSelected 

object itself is selected

Any 

any object

◆ OffsetMode

enum MR.OffsetMode : int
Enumerator
Smooth 

create mesh using dual marching cubes from OpenVDB library

create mesh using standard marching cubes implemented in MeshLib

Standard 

create mesh using standard marching cubes with additional sharpening implemented in MeshLib

◆ OutlierTypeMask

enum MR.OutlierTypeMask : int

Types of outlier points.

Enumerator
SmallComponents 

Small groups of points that are far from the rest.

Points that have too few neighbors within the radius

WeaklyConnected 

Points far from the surface approximating the nearest points.

FarSurface 

Points whose normals differ from the average norm of their nearest neighbors.

◆ PathError

enum MR.PathError : int
Enumerator
StartEndNotConnected 

no path can be found from start to end, because they are not from the same connected component

report to developers for investigation

◆ Reorder

enum MR.Reorder : byte

determines how points to be ordered

Enumerator
None 

the order is not changed

the order is determined by lexicographical sorting by coordinates (optimal for uniform sampling)

Lexicographically 

the order is determined so to put close in space points in close indices (optimal for compression)

◆ ScalarType

enum MR.ScalarType : int

scalar value's binary format type

Enumerator
Float64 

the last value from float[4]

◆ SignDetectionMode

enum MR.SignDetectionMode : int

how to determine the sign of distances from a mesh

Enumerator
Unsigned 

unsigned distance, useful for bidirectional Shell offset

OpenVDB 

sign detection from OpenVDB library, which is good and fast if input geometry is closed

ProjectionNormal 

the sign is determined based on pseudonormal in closest mesh point (unsafe in case of self-intersections)

WindingRule 

ray intersection counter, significantly slower than ProjectionNormal and does not support holes in mesh; this mode is slow, and it does NOT have CUDA acceleration at this moment

HoleWindingRule 

computes robust winding number generalization with support of holes and self-intersections in mesh, it is the slowest sign detection mode, but it CAN be accelerated with CUDA if this mode activated e.g. in OffsetParameters.fwn

◆ SignDetectionModeShort

enum MR.SignDetectionModeShort : int

how to determine the sign of distances from a mesh, short version including auto-detection

Enumerator
Auto 

automatic selection of the fastest method among safe options for the current mesh

detects sign from the winding number generalization with support for holes and self-intersections in mesh

HoleWindingNumber 

detects sign from the pseudonormal in closest mesh point, which is fast but unsafe in the presence of holes and self-intersections in mesh

◆ SlicePlane

enum MR.SlicePlane : int

Plane of slice in which to find path.

Enumerator
YZ 

= 0 cause main axis is x - [0]

= 1 cause main axis is y - [1]

ZX 

= 2 cause main axis is z - [2]

XY 

special value not to limit path in one slice

◆ VertexMass

enum MR.VertexMass : int

determines the weight or mass of each vertex in applications like Laplacian

Enumerator
Unit 

all vertices have same mass=1

NeiArea 

vertex mass depends on local geometry and proportional to the area of first-ring triangles

Member Function Documentation

◆ autoOrientLocalTriangulations()

static unsafe bool MR.autoOrientLocalTriangulations ( MR.Const_PointCloud pointCloud,
MR.AllLocalTriangulations triangs,
MR.Const_VertBitSet region,
MR.Std._ByValue_Function_BoolFuncFromFloat? progress = null,
MR.Triangulation? outRep3 = null,
MR.Triangulation? outRep2 = null )
inlinestatic

orient neighbors around each point in

Parameters
regionso there will be as many triangles with same (and not opposite) orientation as possible Generated from function MR.autoOrientLocalTriangulations. Parameter progress defaults to {}.

◆ bendTextAlongCurve()

static unsafe MR.Mesh MR.bendTextAlongCurve ( MR.Std.Const_Function_MRCurvePointFuncFromFloat curve,
MR.Const_BendTextAlongCurveParams params_ )
inlinestatic

Creates symbol mesh and deforms it along given curve.

Parameters
curveconverts (x in [0,1], pivotY) into position on curve Generated from function MR.bendTextAlongCurve.

◆ blend()

static unsafe MR.Color MR.blend ( in MR.Color front,
in MR.Color back )
inlinestatic

Blend two colors together.

Note
This operation is not commutative Generated from function MR.blend.

◆ boolean()

static unsafe MR.BooleanResult MR.boolean ( MR.Const_Mesh meshA,
MR.Const_Mesh meshB,
MR.BooleanOperation operation,
MR.AffineXf3f? rigidB2A,
MR.BooleanResultMapper? mapper = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

Performs CSG operation on two meshes Makes new mesh - result of boolean operation on mesh A and mesh B

Parameters
meshAInput mesh A
meshBInput mesh B
operationCSG operation to perform
rigidB2ATransform from mesh B space to mesh A space
mapperOptional 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
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) Generated from function MR.boolean. Parameter cb defaults to {}.

◆ buildBottom()

static unsafe MR.EdgeId MR.buildBottom ( MR.Mesh mesh,
MR.EdgeId a,
MR.Vector3f dir,
float holeExtension,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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;

Returns
the edge of new hole opposite to input edge (a) Generated from function MR.buildBottom.

◆ buildCylinderBetweenTwoHoles()

static unsafe void MR.buildCylinderBetweenTwoHoles ( MR.Mesh mesh,
MR.EdgeId a,
MR.EdgeId b,
MR.Const_StitchHolesParams? params_ = null )
inlinestatic

Stitches two holes in Mesh
Build cylindrical patch to fill space between two holes represented by one of their edges each,
default metric: ComplexStitchMetric.

Before
After

Next picture show, how newly generated faces can be smoothed MR.positionVertsSmoothly MR.subdivideMesh

Stitch with smooth
Parameters
meshmesh with hole
aEdgeId which represents 1st hole (should not have valid left FaceId)
bEdgeId which represents 2nd hole (should not have valid left FaceId)
paramsparameters of holes stitching
See also
fillHole
StitchHolesParams Generated from function MR.buildCylinderBetweenTwoHoles. Parameter params_ defaults to {}.

◆ calcAvgColors()

static unsafe MR.VertColors MR.calcAvgColors ( MR.Const_PointCloud cloud,
MR.Const_VertColors colors,
MR.Const_VertCoords tgtPoints,
MR.Const_VertBitSet tgtVerts,
float sigma,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

given

Parameters
clouda point cloud
colorscolors of each point in the cloud
tgtPointssome target points
tgtVertsmask of valid target points
sigmathe distance of highest influence of a point
cbprogress callback computes the colors in valid target points by averaging the colors from the point cloud Generated from function MR.calcAvgColors. Parameter cb defaults to {}.

◆ calcDamerauLevenshteinDistance()

static unsafe int MR.calcDamerauLevenshteinDistance ( string stringA,
string stringB,
bool? caseSensitive = null,
MR.Misc.InOut< int >? outLeftRightAddition = null )
inlinestatic

Calculates Damerau-Levenshtein distance between to strings.

Parameters
outLeftRightAdditionif provided return amount of insertions to the left and to the right Generated from function MR.calcDamerauLevenshteinDistance. Parameter caseSensitive defaults to true.

◆ calcFaceDistances()

static unsafe MR.Std.Optional_MRFaceScalars MR.calcFaceDistances ( MR.Const_MeshTopology topology,
MR.Std.Const_Function_FloatFuncFromMREdgeId metric,
MR.Const_FaceBitSet starts,
MR.Const_FaceDistancesSettings? settings = null )
inlinestatic

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;

Parameters
startsall start faces will get value 0 in the result;
metricmetric(e) says the distance of traveling from left(e) to right(e) Generated from function MR.calcFaceDistances. Parameter settings defaults to {}.

◆ calcFastWindingNumber()

static unsafe float MR.calcFastWindingNumber ( MR.Const_Dipoles dipoles,
MR.Const_AABBTree tree,
MR.Const_Mesh mesh,
in MR.Vector3f q,
float beta,
MR.FaceId skipFace )
inlinestatic

compute approximate winding number at

Parameters
q;
betadetermines 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
skipFacethis triangle (if it is close to
q)will be skipped from summation Generated from function MR.calcFastWindingNumber.

◆ calcLength() [1/4]

static unsafe double MR.calcLength ( MR.Std.Const_Vector_MRVector2d contour)
inlinestatic

returns sum length of the given contour

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcLength<MR.Vector2d, double>.

◆ calcLength() [2/4]

static unsafe float MR.calcLength ( MR.Std.Const_Vector_MRVector2f contour)
inlinestatic

returns sum length of the given contour

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcLength<MR.Vector2f, float>.

◆ calcLength() [3/4]

static unsafe double MR.calcLength ( MR.Std.Const_Vector_MRVector3d contour)
inlinestatic

returns sum length of the given contour

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcLength<MR.Vector3d, double>.

◆ calcLength() [4/4]

static unsafe float MR.calcLength ( MR.Std.Const_Vector_MRVector3f contour)
inlinestatic

returns sum length of the given contour

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcLength<MR.Vector3f, float>.

◆ calcOrientedArea() [1/4]

static unsafe double MR.calcOrientedArea ( MR.Std.Const_Vector_MRVector2d contour)
inlinestatic

>0 for clockwise loop, < 0 for CCW loop

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcOrientedArea<double, double>.

◆ calcOrientedArea() [2/4]

static unsafe float MR.calcOrientedArea ( MR.Std.Const_Vector_MRVector2f contour)
inlinestatic

>0 for clockwise loop, < 0 for CCW loop

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcOrientedArea<float, float>.

◆ calcOrientedArea() [3/4]

static unsafe MR.Vector3d MR.calcOrientedArea ( MR.Std.Const_Vector_MRVector3d contour)
inlinestatic

returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcOrientedArea<double, double>.

◆ calcOrientedArea() [4/4]

static unsafe MR.Vector3f MR.calcOrientedArea ( MR.Std.Const_Vector_MRVector3f contour)
inlinestatic

returns the vector with the magnitude equal to contour area, and directed to see the contour in ccw order from the vector tip

Template Parameters
Ris the type for the accumulation and for result Generated from function MR.calcOrientedArea<float, float>.

◆ checkDeloneQuadrangleInMesh()

static unsafe bool MR.checkDeloneQuadrangleInMesh ( MR.Const_Mesh mesh,
MR.EdgeId edge,
MR.Const_DeloneSettings? settings = null,
MR.Misc.InOut< float >? deviationSqAfterFlip = null )
inlinestatic

consider quadrangle formed by left and right triangles of given edge, and checks whether this edge satisfies Delone's condition in the quadrangle;

Returns
false otherwise if flipping the edge does not introduce too large surface deviation (can be returned only for inner edge of the region) Generated from function MR.checkDeloneQuadrangleInMesh. Parameter settings defaults to {}.

◆ classifyShellVert()

static unsafe MR.ShellVertexInfo MR.classifyShellVert ( MR.Const_MeshPart mp,
in MR.Vector3f shellPoint,
MR.Const_FindInnerShellSettings? settings = null )
inlinestatic

Tests.

Parameters
shellPointfrom bidirectional shell constructed for an open
mp;
Returns
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 Generated from function MR.classifyShellVert. Parameter settings defaults to {}.

◆ compressZip()

static unsafe void MR.compressZip ( string zipFile,
string sourceFolder,
MR.Std.Const_Vector_StdFilesystemPath? excludeFiles = null,
byte? password = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

compresses given folder in given zip-file

Parameters
excludeFilesfiles that should not be included to result zip
passwordif password is given then the archive will be encrypted
cban option to get progress notifications and cancel the operation Generated from function MR.compressZip. Parameter excludeFiles defaults to {}. Parameter cb defaults to {}.

◆ computeBasinVolume()

static unsafe double MR.computeBasinVolume ( MR.Const_Mesh mesh,
MR.Const_FaceBitSet faces,
float level )
inlinestatic

computes the volume of given mesh basin below given water level;

Parameters
facesshall include all basin faces at least partially below the water level Generated from function MR.computeBasinVolume.

◆ computeClosestSurfacePathTargets()

static unsafe MR.Phmap.FlatHashMap_MRVertId_MRVertId MR.computeClosestSurfacePathTargets ( MR.Const_Mesh mesh,
MR.Const_VertBitSet starts,
MR.Const_VertBitSet ends,
MR.Const_VertBitSet? vertRegion = null,
MR.VertScalars? outSurfaceDistances = null )
inlinestatic

for each vertex from (starts) finds the closest vertex from (ends) in geodesic sense

Parameters
vertRegionconsider paths going in this region only Generated from function MR.computeClosestSurfacePathTargets.

◆ computeSkyViewFactor()

static unsafe MR.VertScalars MR.computeSkyViewFactor ( MR.Const_Mesh terrain,
MR.Const_VertCoords samples,
MR.Const_VertBitSet validSamples,
MR.Std.Const_Vector_MRSkyPatch skyPatches,
MR.BitSet? outSkyRays = null,
MR.Std.Vector_MRMeshIntersectionResult? outIntersections = null )
inlinestatic

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;

Parameters
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
outIntersections- optional output vector of MeshIntersectionResult for every valid sample point Generated from function MR.computeSkyViewFactor.

◆ computeSpaceDistances()

static unsafe MR.VertScalars MR.computeSpaceDistances ( MR.Const_Mesh mesh,
MR.Const_PointOnFace start,
float range )
inlinestatic

computes Euclidean 3D distances from given start point to all neighbor vertices within given

Parameters
rangeand to first vertices with the distance more than range Generated from function MR.computeSpaceDistances.

◆ computeSteepestDescentPath()

static unsafe void MR.computeSteepestDescentPath ( MR.Const_MeshPart mp,
MR.Const_VertScalars field,
MR.Const_MeshTriPoint start,
MR.Std.Vector_MREdgePoint? outPath,
MR.Const_ComputeSteepestDescentPathSettings? settings = null )
inlinestatic

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

Parameters
outPathif requested; the path stops when it reaches a local minimum in the field or one of stop conditions in settings Generated from function MR.computeSteepestDescentPath. Parameter settings defaults to {}.

◆ computeSurfaceDistances()

static unsafe MR.VertScalars MR.computeSurfaceDistances ( MR.Const_Mesh mesh,
MR.Const_MeshTriPoint start,
MR.Const_MeshTriPoint end,
MR.Const_VertBitSet? region = null,
MR.Misc.InOut< bool >? endReached = null,
int? maxVertUpdates = null )
inlinestatic

computes path distance in mesh vertices from given start point, stopping when all vertices in the face where end is located are reached;

considered paths can go either along edges or straightly within triangles

Parameters
endReachedif pointer provided it will receive where a path from start to end exists Generated from function MR.computeSurfaceDistances. Parameter maxVertUpdates defaults to 3.

◆ contourIntersection()

static unsafe MR.Polyline2 MR.contourIntersection ( MR.Const_Polyline2 contoursA,
MR.Const_Polyline2 contoursB,
MR.Const_ContourToDistanceMapParams params_,
float? offsetInside = null )
inlinestatic

computes the intersection of the shapes bounded by input 2d contours

Returns
the boundary of the intersection

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 Generated from function MR.contourIntersection. Parameter offsetInside defaults to 0.0f.

◆ contourSubtract()

static unsafe MR.Polyline2 MR.contourSubtract ( MR.Const_Polyline2 contoursA,
MR.Const_Polyline2 contoursB,
MR.Const_ContourToDistanceMapParams params_,
float? offsetInside = null )
inlinestatic

computes the difference between the shapes bounded by contoursA and the shapes bounded by contoursB

Returns
the boundary of the difference

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 Generated from function MR.contourSubtract. Parameter offsetInside defaults to 0.0f.

◆ contourUnion()

static unsafe MR.Polyline2 MR.contourUnion ( MR.Const_Polyline2 contoursA,
MR.Const_Polyline2 contoursB,
MR.Const_ContourToDistanceMapParams params_,
float? offsetInside = null )
inlinestatic

computes the union of the shapes bounded by input 2d contours

Returns
the boundary of the union

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 Generated from function MR.contourUnion. Parameter offsetInside defaults to 0.

◆ convertDistanceMapToImage()

static unsafe MR.Image MR.convertDistanceMapToImage ( MR.Const_DistanceMap distMap,
float? threshold = null )
inlinestatic

export distance map to a grayscale image

Parameters
threshold- threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid Generated from function MR.convertDistanceMapToImage. Parameter threshold defaults to 1.0f/255.

◆ convertImageToDistanceMap()

static unsafe MR.DistanceMap MR.convertImageToDistanceMap ( MR.Const_Image image,
float? threshold = null,
bool? invert = null )
inlinestatic

load distance map from a grayscale image:

Parameters
threshold- threshold of valid values [0.; 1.]. pixel with color less then threshold set invalid
invert- whether to invert values (min is white) or leave them as is (min is block) Generated from function MR.convertImageToDistanceMap. Parameter threshold defaults to 1.0f/255. Parameter invert defaults to true.

◆ convertMeshTriPointsSurfaceOffsetToMeshContours() [1/2]

static unsafe MR.Std.Vector_MROneMeshContour MR.convertMeshTriPointsSurfaceOffsetToMeshContours ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
float offset,
MR.Const_SearchPathSettings? searchSettings = null )
inlinestatic

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 surfaceLine and build offset contour on surface for MR.cutMesh input.

Parameters
offsetamount of offset form given point, note that absolute value is used and isoline in both direction returned
searchSettingssettings for search geodesic path Generated from function MR.convertMeshTriPointsSurfaceOffsetToMeshContours. Parameter searchSettings defaults to {}.

◆ convertMeshTriPointsSurfaceOffsetToMeshContours() [2/2]

static unsafe MR.Std.Vector_MROneMeshContour MR.convertMeshTriPointsSurfaceOffsetToMeshContours ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
MR.Std.Const_Function_FloatFuncFromInt offsetAtPoint,
MR.Const_SearchPathSettings? searchSettings = null )
inlinestatic

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 surfaceLine and build offset contour on surface for MR.cutMesh input.

Parameters
offsetAtPointfunctor that returns amount of offset form arg point, note that absolute value is used and isoline in both direction returned
searchSettingssettings for search geodesic path Generated from function MR.convertMeshTriPointsSurfaceOffsetToMeshContours. Parameter searchSettings defaults to {}.

◆ convertMeshTriPointsToClosedContour()

static unsafe MR.OneMeshContour MR.convertMeshTriPointsToClosedContour ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
MR.Const_SearchPathSettings? searchSettings = null,
MR.Std.Vector_Int? pivotIndices = null )
inlinestatic

Makes closed continuous contour by mesh tri points, note that first and last meshTriPoint should not be same Finds shortest paths between neighbor surfaceLine and build closed contour MR.cutMesh input.

Parameters
pivotIndicesoptional 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 Generated from function MR.convertMeshTriPointsToClosedContour. Parameter searchSettings defaults to {}.

◆ convertMeshTriPointsToMeshContour()

static unsafe MR.OneMeshContour MR.convertMeshTriPointsToMeshContour ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
MR.Const_SearchPathSettings? searchSettings = null,
MR.Std.Vector_Int? pivotIndices = null )
inlinestatic

Makes continuous contour by mesh tri points, if first and last meshTriPoint is the same, makes closed contour Finds shortest paths between neighbor surfaceLine and build contour MR.cutMesh input.

Parameters
searchSettingssettings for search geo path
pivotIndicesoptional output indices of given surfaceLine in result OneMeshContour Generated from function MR.convertMeshTriPointsToMeshContour. Parameter searchSettings defaults to {}.

◆ createProjectionTransforms()

static unsafe MR.MeshProjectionTransforms MR.createProjectionTransforms ( ref MR.AffineXf3f storageXf,
MR.AffineXf3f? pointXf,
MR.AffineXf3f? treeXf )
inlinestatic

Creates structure with simplified transforms for projection functions, with rigidXfPoint applied to point, and nonRigidXfTree applied to tree.

Parameters
storageXfthis argument will hold modified transfrom
pointXftransform for points to be projected
treeXftransform for tree's boxes
Returns
structure with simplified transforms

Generated from function MR.createProjectionTransforms.

◆ curveFromPoints()

static unsafe MR.Std.Function_MRCurvePointFuncFromFloat MR.curveFromPoints ( MR.Std.Const_Vector_MRCurvePoint cp,
bool? unitLength = null,
MR.Misc.InOut< float >? outCurveLen = null )
inlinestatic

given a polyline by its vertices, returns curve function representing it; return an error if the polyline is less than 2 points or all points have exactly the same location

Parameters
unitLengthif true, then the lengths are normalized for the last point to have unit length
outCurveLenoptional output of the total polyline length (before possible normalization) Generated from function MR.curveFromPoints. Parameter unitLength defaults to true.

◆ cutMesh()

static unsafe MR.CutMeshResult MR.cutMesh ( MR.Mesh mesh,
MR.Std.Const_Vector_MROneMeshContour contours,
MR.Const_CutMeshParameters? params_ = null )
inlinestatic

Cuts mesh by given contours This function cuts mesh making new edges paths on place of input contours.

Parameters
meshInput mesh that will be cut
contoursInput contours to cut mesh with, find more MR.OneMeshContours
paramsParameters describing some cut options, find more MR.CutMeshParameters
Returns
New edges that correspond to given contours, find more MR.CutMeshResult
Warning
Input contours should have no intersections, faces where contours intersects (bad faces) will not be allowed for fill
Warning
Input mesh will be changed in any case, if bad faces are in mesh, mesh will be spoiled,
so if you cannot guarantee contours without intersections better make copy of mesh, before using this function

Generated from function MR.cutMesh. Parameter params_ defaults to {}.

◆ cutMeshByContour()

static unsafe MR.FaceBitSet MR.cutMeshByContour ( MR.Mesh mesh,
MR.Std.Const_Vector_MRVector3f contour,
MR.AffineXf3f? xf = null )
inlinestatic

Cuts mesh by contour by projecting all the points.

Parameters
xftransformation from the CSYS of contour to the CSYS of mesh
Note
mesh is modified, see cutMesh for info
it might be useful to subdivide mesh before cut, to avoid issues related to lone contours
Returns
Faces to the left of the polyline Generated from function MR.cutMeshByContour. Parameter xf defaults to {}.

◆ cutMeshByContours()

static unsafe MR.FaceBitSet MR.cutMeshByContours ( MR.Mesh mesh,
MR.Std.Const_Vector_StdVectorMRVector3f contours,
MR.AffineXf3f? xf = null )
inlinestatic

Cuts mesh by contours by projecting all the points.

Parameters
xftransformation from the CSYS of contour to the CSYS of mesh
Note
mesh is modified, see cutMesh for info
it might be useful to subdivide mesh before cut, to avoid issues related to lone contours
Returns
Faces to the left of the polyline Generated from function MR.cutMeshByContours. Parameter xf defaults to {}.

◆ cutMeshByProjection()

static unsafe MR.Std.Vector_StdVectorMREdgeId MR.cutMeshByProjection ( MR.Mesh mesh,
MR.Std.Const_Vector_StdVectorMRVector3f contours,
MR.Const_CutByProjectionSettings settings )
inlinestatic

Performs orthographic projection with of given contours to mesh and cut result lines, fails if any point of contours has missed mesh on projection stage or cut contours contains self-intersections.

Note
it might be useful to subdivide mesh before cut, to avoid issues related to lone contours
Parameters
meshfor cutting, it will be changed
contoursfor projection onto mesh
settingsto specify direction and contours to mesh space transformation
Returns
newly appeared edges on the mesh after cut or error

Generated from function MR.cutMeshByProjection.

◆ decimateMesh()

static unsafe MR.DecimateResult MR.decimateMesh ( MR.Mesh mesh,
MR.Const_DecimateSettings? settings = null )
inlinestatic

Performs mesh simplification in mesh region according to the settings.

Before
After

Generated from function MR.decimateMesh. Parameter settings defaults to {}.

◆ decompressZip() [1/2]

static unsafe void MR.decompressZip ( MR.Std.Istream zipStream,
string targetFolder,
byte? password = null )
inlinestatic

decompresses given binary stream (containing the data of a zip file only) into given folder

Parameters
passwordif password is given then it will be used to decipher encrypted archive Generated from function MR.decompressZip.

◆ decompressZip() [2/2]

static unsafe void MR.decompressZip ( string zipFile,
string targetFolder,
byte? password = null )
inlinestatic

decompresses given zip-file into given folder

Parameters
passwordif password is given then it will be used to decipher encrypted archive Generated from function MR.decompressZip.

◆ denoiseNormals()

static unsafe void MR.denoiseNormals ( MR.Const_Mesh mesh,
MR.FaceNormals normals,
MR.Const_UndirectedEdgeScalars v,
float gamma )
inlinestatic

Smooth face normals, given.

Parameters
meshcontains topology information and coordinates for equation weights
normalsinput noisy normals and output smooth normals
vedge indicator function (1 - smooth edge, 0 - crease edge)
gammathe amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (19) Generated from function MR.denoiseNormals.

◆ deserializeObjectTree()

static unsafe MR.LoadedObjectT MR.deserializeObjectTree ( string path,
MR.Std.Const_Function_VoidFuncFromConstStdFilesystemPathRef? postDecompress = null,
MR.Std.Const_Function_BoolFuncFromFloat? progressCb = null )
inlinestatic

loads objects tree from given scene file (zip/mru)

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_ Generated from function MR.deserializeObjectTree. Parameter postDecompress defaults to {}. Parameter progressCb defaults to {}.

◆ deserializeObjectTreeFromFolder()

static unsafe MR.LoadedObjectT MR.deserializeObjectTreeFromFolder ( string folder,
MR.Std.Const_Function_BoolFuncFromFloat? progressCb = null )
inlinestatic

loads objects tree from given scene folder

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_ Generated from function MR.deserializeObjectTreeFromFolder. Parameter progressCb defaults to {}.

◆ distanceMapFromContours() [1/2]

static unsafe MR.DistanceMap MR.distanceMapFromContours ( MR.Const_Polyline2 contours,
MR.Const_ContourToDistanceMapParams params_,
MR.Const_ContoursDistanceMapOptions? options = null )
inlinestatic

Computes distance of 2d contours according ContourToDistanceMapParams.

Parameters
options- optional input and output options for distance map calculation, find more ContoursDistanceMapOptions Generated from function MR.distanceMapFromContours. Parameter options defaults to {}.

◆ distanceMapFromContours() [2/2]

static unsafe void MR.distanceMapFromContours ( MR.DistanceMap distMap,
MR.Const_Polyline2 polyline,
MR.Const_ContourToDistanceMapParams params_,
MR.Const_ContoursDistanceMapOptions? options = null )
inlinestatic

Computes distance of 2d contours according ContourToDistanceMapParams.

Parameters
distMap- preallocated distance map
options- optional input and output options for distance map calculation, find more ContoursDistanceMapOptions Generated from function MR.distanceMapFromContours. Parameter options defaults to {}.

◆ distanceMapTo2DIsoPolyline()

static unsafe MR.Std.Pair_MRPolyline2_MRAffineXf3f MR.distanceMapTo2DIsoPolyline ( MR.Const_DistanceMap distMap,
in MR.AffineXf3f xf,
float isoValue,
bool? useDepth = null )
inlinestatic

computes iso-lines of distance map corresponding to given iso-value; in second returns the transformation from 0XY plane to world;

Parameters
useDepthtrue - the isolines will be located on distance map surface, false - isolines for any iso-value will be located on the common plane xf(0XY) Generated from function MR.distanceMapTo2DIsoPolyline. Parameter useDepth defaults to false.

◆ divideWithPlane()

static unsafe MR.PointCloud MR.divideWithPlane ( MR.Const_PointCloud points,
MR.Const_Plane3f plane,
MR.Const_DividePointCloudOptionalOutput? optOut = null )
inlinestatic

This function cuts a point cloud with a plane, leaving only the part of mesh that lay in positive direction of normal.

Returns
Point cloud object with vertices on the positive side of the plane
Parameters
pcInput point cloud that will be cut by the plane
planeInput plane to cut point cloud with
optOutoptional output of the function Generated from function MR.divideWithPlane. Parameter optOut defaults to {}.

◆ doBooleanOperation()

static unsafe MR.Mesh MR.doBooleanOperation ( MR.Misc._Moved< MR.Mesh > meshACut,
MR.Misc._Moved< MR.Mesh > meshBCut,
MR.Std.Const_Vector_StdVectorMREdgeId cutEdgesA,
MR.Std.Const_Vector_StdVectorMREdgeId cutEdgesB,
MR.BooleanOperation operation,
MR.AffineXf3f? rigidB2A = null,
MR.BooleanResultMapper? mapper = null,
bool? mergeAllNonIntersectingComponents = null,
MR.Const_BooleanInternalParameters? intParams = null )
inlinestatic

Perform boolean operation on cut meshes.

Returns
mesh in space of meshA or error.
Note
: actually this function is meant to be internal, use "boolean" instead Generated from function MR.doBooleanOperation. Parameter mergeAllNonIntersectingComponents defaults to false. Parameter intParams defaults to {}.

◆ edgeCurvMetric()

static unsafe MR.Std.Function_FloatFuncFromMREdgeId MR.edgeCurvMetric ( MR.Const_Mesh mesh,
float? angleSinFactor = null,
float? angleSinForBoundary = null )
inlinestatic

returns edge's metric that depends both on edge's length and on the angle between its left and right faces

Parameters
angleSinFactormultiplier before dihedral angle sine in edge metric calculation (positive to prefer concave angles, negative - convex)
angleSinForBoundaryconsider this dihedral angle sine for boundary edges; this metric is symmetric: m(e) == m(e.sym()) Generated from function MR.edgeCurvMetric. Parameter angleSinFactor defaults to 2. Parameter angleSinForBoundary defaults to 0.

◆ edgePointsFromContours()

static unsafe MR.Std.Vector_MRVector3f MR.edgePointsFromContours ( MR.Const_Polyline2 polyline,
float pixelSize,
float threshold )
inlinestatic

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 Generated from function MR.edgePointsFromContours.

◆ eliminateDegree3Vertices()

static unsafe int MR.eliminateDegree3Vertices ( MR.MeshTopology topology,
MR.VertBitSet region,
MR.FaceBitSet? fs = null )
inlinestatic

eliminates from the mesh all vertices having degree 3 and 3 incident triangles from given region (which is updated); if

Parameters
fsis provided then eliminated triangles are excluded from it;
Returns
the number of vertices eliminated Generated from function MR.eliminateDegree3Vertices.

◆ equalizeTriAreas()

static unsafe bool MR.equalizeTriAreas ( MR.Mesh mesh,
MR.Const_MeshEqualizeTriAreasParams? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of iterations with movement toward vertexPosEqualNeiAreas() to the whole mesh ( or some region if it is specified )

Returns
true if the operation completed successfully, and false if it was interrupted by the progress callback. Generated from function MR.equalizeTriAreas. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ expandFaces()

static unsafe MR.FaceBitSet MR.expandFaces ( MR.Const_MeshTopology topology,
MR.Const_FaceBitSet region,
MR.Const_UndirectedEdgeBitSet? stopEdges = null )
inlinestatic

returns given region with all faces sharing an edge with a region face;

Parameters
stopEdges- neighborhood via this edges will be ignored Generated from function MR.expandFaces.

◆ extendAllHoles()

static unsafe MR.Std.Vector_MREdgeId MR.extendAllHoles ( MR.Mesh mesh,
MR.Const_Plane3f plane,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

adds cylindrical extension of too all holes of the mesh by calling extendHole(...);

Returns
representative edges of one per every hole after extension Generated from function MR.extendAllHoles.

◆ extendHole() [1/2]

static unsafe MR.EdgeId MR.extendHole ( MR.Mesh mesh,
MR.EdgeId a,
MR.Const_Plane3f plane,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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;

Returns
the edge of new hole opposite to input edge (a) Generated from function MR.extendHole.

◆ extendHole() [2/2]

static unsafe MR.EdgeId MR.extendHole ( MR.Mesh mesh,
MR.EdgeId a,
MR.Std._ByValue_Function_MRVector3fFuncFromConstMRVector3fRef getVertPos,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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 );

Returns
the edge of new hole opposite to input edge (a) Generated from function MR.extendHole.

◆ extractAllLoops()

static unsafe MR.Std.Vector_StdVectorMREdgeId MR.extractAllLoops ( MR.Const_MeshTopology topology,
MR.EdgeBitSet edges,
MR.Turn turn )
inlinestatic

tracks are returns all closed loops of edges from the given bit set; if at some reached vertex there are two or more edges originate with set bits in (edges), the path selects the leftmost or the rightmost option depending on

Parameters
turn;the bits corresponding to loops are reset in (edges), and to remaining not-closed paths are kept Generated from function MR.extractAllLoops.

◆ extractPath()

static unsafe MR.EdgeId MR.extractPath ( MR.Const_MeshTopology topology,
MR.EdgeId e0,
MR.EdgeBitSet edges,
MR.Std.Vector_MREdgeId? outPath,
MR.Turn turn )
inlinestatic

track the path of edges with set bits in (edges) starting from (e0);

Returns
the last edge of the path or invalid edge if e0's bit in (edge) was reset; if at some reached vertex there are two or more edges originate with set bits in (edges), the path selects the leftmost or the rightmost option depending on
Parameters
turn;the bits in (edges) for tracked path edges are reset Generated from function MR.extractPath.

◆ extractSectionsFromPolyline()

static unsafe MR.Std.Vector_MREdgeSegment MR.extractSectionsFromPolyline ( MR.Const_Polyline3 polyline,
MR.Const_Plane3f plane,
float eps,
MR.UndirectedEdgeBitSet? positiveEdges = null )
inlinestatic

This function cuts polyline with a plane.

plane cuts an edge if one end of the edge is below the plane and the other is not

Returns
Edge segments that are closer to the plane than
Parameters
eps.Segments are oriented according by plane normal ( segment.a <= segment.b)
polylineInput polyline that will be cut by the plane
planeInput plane to cut polyline with
epsMaximal distance from the plane
positiveEdgesEdges in a positive half-space relative to the plane or on the plane itself (only adds bits to the existing ones) Generated from function MR.extractSectionsFromPolyline.

◆ fillContours2D()

static unsafe void MR.fillContours2D ( MR.Mesh mesh,
MR.Std.Const_Vector_MREdgeId holeRepresentativeEdges )
inlinestatic

fill holes with border in same plane (i.e. after cut by plane)

Parameters
mesh- mesh with holes
holeRepresentativeEdges- each edge here represents a hole borders that should be filled should be not empty edges should have invalid left face (FaceId == -1)
Returns
Expected with has_value()=true if holes filled, otherwise - string error Generated from function MR.fillContours2D.

◆ fillHole()

static unsafe void MR.fillHole ( MR.Mesh mesh,
MR.EdgeId a,
MR.Const_FillHoleParams? params_ = null )
inlinestatic

Fills hole in mesh
Fills given hole represented by one of its edges (having no valid left face),
uses fillHoleTrivially if cannot fill hole without multiple edges,
default metric: CircumscribedFillMetric.

Before
After

Next picture show, how newly generated faces can be smoothed MR.positionVertsSmoothly MR.subdivideMesh

Fill with smooth
Parameters
meshmesh with hole
aEdgeId which represents hole (should not have valid left FaceId)
paramsparameters of hole filling
See also
buildCylinderBetweenTwoHoles
fillHoleTrivially
FillHoleParams Generated from function MR.fillHole. Parameter params_ defaults to {}.

◆ fillHoleNicely()

static unsafe MR.FaceBitSet MR.fillHoleNicely ( MR.Mesh mesh,
MR.EdgeId holeEdge,
MR.Const_FillHoleNicelySettings settings )
inlinestatic

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

Returns
triangles of the patch Generated from function MR.fillHoleNicely.

◆ fillHoles()

static unsafe void MR.fillHoles ( MR.Mesh mesh,
MR.Std.Const_Vector_MREdgeId as_,
MR.Const_FillHoleParams? params_ = null )
inlinestatic

fill all holes given by their representative edges in

Parameters
asGenerated from function MR.fillHoles. Parameter params_ defaults to {}.

◆ fillHolesWithExtraPoints()

static unsafe bool MR.fillHolesWithExtraPoints ( MR.Mesh mesh,
MR.PointCloud extraPoints,
MR.Const_FillHolesWithExtraPointsParams? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? progressCb = null )
inlinestatic

fills the holes in the mesh by adding triangles to it with the vertices in existing boundary vertices or given extra points (in any combination)

Parameters
extraPointsmust have either properly oriented normals or no normals, and it will be temporary modified during the call
Returns
false if the operation was canceled or incorrect input Generated from function MR.fillHolesWithExtraPoints. Parameter params_ defaults to {}. Parameter progressCb defaults to {}.

◆ fillHoleTrivially()

static unsafe MR.VertId MR.fillHoleTrivially ( MR.Mesh mesh,
MR.EdgeId a,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

Triangulates face of hole in mesh trivially
Fills given hole represented by one of its edges (having no valid left face)
by creating one new vertex in the centroid of boundary vertices and connecting new vertex with all boundary vertices.

Before
After

Next picture show, how newly generated faces can be smoothed MR.positionVertsSmoothly MR.subdivideMesh

Trivial fill with smooth
Parameters
meshmesh with hole
aEdgeId points on the face or hole to the left that will be triangulated
outNewFacesoptional output newly generated faces
Returns
new vertex
See also
fillHole Generated from function MR.fillHoleTrivially.

◆ filterCreaseEdges()

static unsafe void MR.filterCreaseEdges ( MR.Const_Mesh mesh,
MR.UndirectedEdgeBitSet creaseEdges,
float critLength,
bool? filterComponents = null,
bool? filterBranches = null )
inlinestatic

filters given edges using the following criteria: if

Parameters
filterComponentsis true then connected components with summary length of their edges less than
critLengthwill be excluded if
filterBranchesis true then branches shorter than
critLengthwill be excluded Generated from function MR.filterCreaseEdges. Parameter filterComponents defaults to true. Parameter filterBranches defaults to false.

◆ filterHistoryActionsVector()

static unsafe MR.Std.Pair_Bool_Int MR.filterHistoryActionsVector ( MR.Std.Vector_StdSharedPtrMRHistoryAction historyVector,
MR.Std._ByValue_Function_BoolFuncFromConstStdSharedPtrMRHistoryActionRef filteringCondition,
ulong? firstRedoIndex = null,
bool? deepFiltering = null )
inlinestatic

Remove actions from history actions vector that match the condition.

Parameters
firstRedoIndex- set redo index for calculate how many actions removed before it
deepFiltering- filter actions into combined actions
Returns
pair (anything removed, how many removed before firstRedoIndex) Generated from function MR.filterHistoryActionsVector. Parameter firstRedoIndex defaults to 0. Parameter deepFiltering defaults to true.

◆ findAllLeftBdEdges()

static unsafe MR.EdgeBitSet MR.findAllLeftBdEdges ( MR.Const_MeshTopology topology,
MR.Const_FaceBitSet? region,
bool? innerMeshEdgesOnly = null )
inlinestatic

returns all edges (e) for which topology.isLeftBdEdge( e, region ) is true;

Parameters
innerMeshEdgesOnlyif true then edges with no right face are excluded Generated from function MR.findAllLeftBdEdges. Parameter innerMeshEdgesOnly defaults to false.

◆ findAvgPointsRadius()

static unsafe float MR.findAvgPointsRadius ( MR.Const_PointCloud pointCloud,
int avgPoints,
int? samples = null )
inlinestatic

Finds the radius of ball, so on average that ball contained avgPoints excluding the central point.

Parameters
samplesthe number of test points to find given number of samples in each Generated from function MR.findAvgPointsRadius. Parameter samples defaults to 1024.

◆ findCollidingEdgePairs()

static unsafe MR.Std.Vector_MREdgePointPair MR.findCollidingEdgePairs ( MR.Const_Polyline2 a,
MR.Const_Polyline2 b,
MR.AffineXf2f? rigidB2A = null,
bool? firstIntersectionOnly = null )
inlinestatic

finds all pairs of colliding edges from two 2d polylines

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
firstIntersectionOnlyif true then the function returns at most one pair of intersecting edges and returns faster Generated from function MR.findCollidingEdgePairs. Parameter firstIntersectionOnly defaults to false.

◆ findCollidingEdges()

static unsafe MR.Std.Vector_MRUndirectedEdgeUndirectedEdge MR.findCollidingEdges ( MR.Const_Polyline2 a,
MR.Const_Polyline2 b,
MR.AffineXf2f? rigidB2A = null,
bool? firstIntersectionOnly = null )
inlinestatic

finds all pairs of colliding edges from two 2d polylines

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation
firstIntersectionOnlyif true then the function returns at most one pair of intersecting edges and returns faster Generated from function MR.findCollidingEdges. Parameter firstIntersectionOnly defaults to false.

◆ findCollidingEdgesBitsets()

static unsafe MR.Std.Pair_MRUndirectedEdgeBitSet_MRUndirectedEdgeBitSet MR.findCollidingEdgesBitsets ( MR.Const_Polyline2 a,
MR.Const_Polyline2 b,
MR.AffineXf2f? rigidB2A = null )
inlinestatic

finds bitset per polyline with colliding edges

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation Generated from function MR.findCollidingEdgesBitsets.

◆ findCollidingEdgeTrisPrecise()

static unsafe MR.Std.Vector_MRVarEdgeTri MR.findCollidingEdgeTrisPrecise ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv,
MR.AffineXf3f? rigidB2A = null,
bool? anyIntersection = null )
inlinestatic

finds all pairs of colliding edges from one mesh and triangle from another mesh

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
anyIntersectionif true then the function returns as fast as it finds any intersection Generated from function MR.findCollidingEdgeTrisPrecise. Parameter anyIntersection defaults to false.

◆ findCollidingTriangles()

static unsafe MR.Std.Vector_MRFaceFace MR.findCollidingTriangles ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null,
bool? firstIntersectionOnly = null )
inlinestatic

finds all pairs of colliding triangles from two meshes or two mesh regions

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
firstIntersectionOnlyif true then the function returns at most one pair of intersecting triangles and returns faster Generated from function MR.findCollidingTriangles. Parameter firstIntersectionOnly defaults to false.

◆ findDistance()

static unsafe MR.MeshMeshDistanceResult MR.findDistance ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null,
float? upDistLimitSq = null )
inlinestatic

computes minimal distance between two meshes or two mesh regions

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
upDistLimitSqupper limit on the distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points Generated from function MR.findDistance. Parameter upDistLimitSq defaults to 3.40282347e38f.

◆ findFewClosestPoints()

static unsafe void MR.findFewClosestPoints ( in MR.Vector3f pt,
MR.Const_PointCloud pc,
MR.FewSmallest_MRPointsProjectionResult res,
float? upDistLimitSq = null,
MR.AffineXf3f? xf = null,
float? loDistLimitSq = null )
inlinestatic

finds a number of the closest points in the cloud (as configured in

Parameters
res)to given point
upDistLimitSqupper limit on the distance in question, points with larger distance than it will not be returned
xfpointcloud-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow limit on the distance in question, the algorithm can return given number of points within this distance even skipping closer ones Generated from function MR.findFewClosestPoints. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findHalfSpacePoints()

static unsafe MR.VertBitSet MR.findHalfSpacePoints ( MR.Const_PointCloud pc,
MR.Const_Plane3f plane )
inlinestatic
Returns
All vertices on the positive side of the plane
Parameters
pcInput point cloud that will be cut by the plane
planeInput plane to cut point cloud with Generated from function MR.findHalfSpacePoints.

◆ findInnerShellFacesWithSplits()

static unsafe MR.FaceBitSet MR.findInnerShellFacesWithSplits ( MR.Const_MeshPart mp,
MR.Mesh shell,
MR.Const_FindInnerShellSettings? settings = null )
inlinestatic

Finds inner-shell faces on bidirectional.

Parameters
shellconstructed for an open
mp;The function will return all shell faces (after some subdivision) that have distance to mesh of same sign as settings.side Generated from function MR.findInnerShellFacesWithSplits. Parameter settings defaults to {}.

◆ findInnerShellVerts()

static unsafe MR.VertBitSet MR.findInnerShellVerts ( MR.Const_MeshPart mp,
MR.Const_Mesh shell,
MR.Const_FindInnerShellSettings? settings = null )
inlinestatic

Finds inner-shell vertices on bidirectional.

Parameters
shellconstructed for an open
mp;The function will return all shell vertices that have distance to mesh of same sign as settings.side Generated from function MR.findInnerShellVerts. Parameter settings defaults to {}.

◆ findMaxDistanceSq() [1/2]

static unsafe float MR.findMaxDistanceSq ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null,
float? maxDistanceSq = null )
inlinestatic

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)

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
maxDistanceSqupper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq Generated from function MR.findMaxDistanceSq. Parameter maxDistanceSq defaults to 3.40282347e38f.

◆ findMaxDistanceSq() [2/2]

static unsafe float MR.findMaxDistanceSq ( MR.Const_PointCloud a,
MR.Const_PointCloud b,
MR.AffineXf3f? rigidB2A = null,
float? maxDistanceSq = null )
inlinestatic

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)

Parameters
rigidB2Arigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation
maxDistanceSqupper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq Generated from function MR.findMaxDistanceSq. Parameter maxDistanceSq defaults to 3.40282347e38f.

◆ findMaxDistanceSqOneWay() [1/2]

static unsafe float MR.findMaxDistanceSqOneWay ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null,
float? maxDistanceSq = null )
inlinestatic

returns the maximum of the squared distances from each B-mesh vertex to A-mesh

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
maxDistanceSqupper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq Generated from function MR.findMaxDistanceSqOneWay. Parameter maxDistanceSq defaults to 3.40282347e38f.

◆ findMaxDistanceSqOneWay() [2/2]

static unsafe float MR.findMaxDistanceSqOneWay ( MR.Const_PointCloud a,
MR.Const_PointCloud b,
MR.AffineXf3f? rigidB2A = null,
float? maxDistanceSq = null )
inlinestatic

returns the maximum of the squared distances from each B-point to A-cloud

Parameters
rigidB2Arigid transformation from B-cloud space to A-cloud space, nullptr considered as identity transformation
maxDistanceSqupper limit on the positive distance in question, if the real distance is larger than the function exists returning maxDistanceSq Generated from function MR.findMaxDistanceSqOneWay. Parameter maxDistanceSq defaults to 3.40282347e38f.

◆ findMaxProjectionOnPolyline()

static unsafe MR.PolylineProjectionResult3Arg MR.findMaxProjectionOnPolyline ( MR.Const_VertCoords points,
MR.Const_Polyline3 polyline,
MR.Const_VertBitSet? pointsRegion = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

for each of points (pointsRegion) computes the closest point on polyline and returns the point for which maximum distance is reached,

Parameters
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findMaxProjectionOnPolyline. Parameter loDistLimitSq defaults to 0.

◆ findNClosestPointsPerPoint()

static unsafe MR.Buffer_MRVertId MR.findNClosestPointsPerPoint ( MR.Const_PointCloud pc,
int numNei,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

finds given number of closest points (excluding itself) to each valid point in the cloud;

Parameters
numNeithe number of closest points to find for each point
Returns
a buffer where for every valid point with index i its neighbours are stored at indices [i*numNei; (i+1)*numNei) Generated from function MR.findNClosestPointsPerPoint. Parameter progress defaults to {}.

◆ findNeighborVerts()

static unsafe MR.VertBitSet MR.findNeighborVerts ( MR.Const_Mesh mesh,
MR.Const_PointOnFace start,
float rangeSq )
inlinestatic

calculates all neighbor vertices within a given

Parameters
rangeand to first vertices with the distance more than range
rangeSqsquare of range Generated from function MR.findNeighborVerts.

◆ findNotSmoothFaces()

static unsafe MR.FaceBitSet MR.findNotSmoothFaces ( MR.Const_MeshPart mp,
float? minAngle = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

find inner faces of the given mesh part, which has large angles with its 3 neighbours

Parameters
minAnglethreshold in radians, which is used in comparison of angles of face's planes, the large minAngle the less number of faces will be found Generated from function MR.findNotSmoothFaces. Parameter minAngle defaults to 0.300000012f. Parameter cb defaults to {}.

◆ findOverhangs()

static unsafe MR.Std.Vector_MRFaceBitSet MR.findOverhangs ( MR.Const_Mesh mesh,
MR.Const_FindOverhangsSettings settings )
inlinestatic

Find face regions that might create overhangs.

Parameters
mesh- source mesh
settings- parameters
Returns
face regions Generated from function MR.findOverhangs.

◆ findPartialLens()

static unsafe MR.Std.Vector_Float MR.findPartialLens ( MR.Std.Const_Vector_MRCurvePoint cp,
bool? unitLength = null,
MR.Misc.InOut< float >? outCurveLen = null )
inlinestatic

given a polyline by its vertices, computes partial lengths along the polyline from the initial point; return an error if the polyline is less than 2 points or all points have exactly the same location

Parameters
unitLengthif true, then the lengths are normalized for the last point to have unit length
outCurveLenoptional output of the total polyline length (before possible normalization) Generated from function MR.findPartialLens. Parameter unitLength defaults to true.

◆ findPointsInBall() [1/3]

Finds all points in tree that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBall.

◆ findPointsInBall() [2/3]

static unsafe void MR.findPointsInBall ( MR.Const_Mesh mesh,
MR.Const_Ball3f ball,
MR.Std.Const_Function_MRProcessingFuncFromConstMRPointsProjectionResultRefConstMRVector3fRefMRBall3fRef foundCallback,
MR.AffineXf3f? xf = null )
inlinestatic

Finds all valid vertices of the mesh that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBall.

◆ findPointsInBall() [3/3]

static unsafe void MR.findPointsInBall ( MR.Const_PointCloud pointCloud,
MR.Const_Ball3f ball,
MR.Std.Const_Function_MRProcessingFuncFromConstMRPointsProjectionResultRefConstMRVector3fRefMRBall3fRef foundCallback,
MR.AffineXf3f? xf = null )
inlinestatic

Finds all valid points of pointCloud that are inside or on the surface of given ball until callback returns Stop; the ball can shrink (new ball is always within the previous one) during the search but never expand.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBall.

◆ findPointsInBox() [1/3]

static unsafe void MR.findPointsInBox ( MR.Const_AABBTreePoints tree,
in MR.Box3f box,
MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback,
MR.AffineXf3f? xf = null )
inlinestatic

Finds all points in tree that are inside or on the surface of given box.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBox.

◆ findPointsInBox() [2/3]

static unsafe void MR.findPointsInBox ( MR.Const_Mesh mesh,
in MR.Box3f box,
MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback,
MR.AffineXf3f? xf = null )
inlinestatic

Finds all valid vertices of the mesh that are inside or on the surface of given box.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBox.

◆ findPointsInBox() [3/3]

static unsafe void MR.findPointsInBox ( MR.Const_PointCloud pointCloud,
in MR.Box3f box,
MR.Std.Const_Function_VoidFuncFromMRVertIdConstMRVector3fRef foundCallback,
MR.AffineXf3f? xf = null )
inlinestatic

Finds all valid points of pointCloud that are inside or on the surface of given box.

Parameters
xfpoints-to-center transformation, if not specified then identity transformation is assumed Generated from function MR.findPointsInBox.

◆ findProjection()

static unsafe MR.MeshProjectionResult MR.findProjection ( in MR.Vector3f pt,
MR.Const_MeshPart mp,
float? upDistLimitSq = null,
MR.AffineXf3f? xf = null,
float? loDistLimitSq = null,
MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces = null,
MR.Std.Const_Function_BoolFuncFromConstMRMeshProjectionResultRef? validProjections = null )
inlinestatic

computes the closest point on mesh (or its region) to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point
xfmesh-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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
validFacesif provided then only faces from there will be considered as projections
validProjectionsif provided then only projections passed this test can be returned Generated from function MR.findProjection. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0. Parameter validFaces defaults to {}. Parameter validProjections defaults to {}.

◆ findProjectionOnMeshEdges() [1/2]

static unsafe MR.PolylineProjectionResult3 MR.findProjectionOnMeshEdges ( in MR.Vector3f pt,
MR.Const_Mesh mesh,
MR.Const_AABBTreePolyline3 tree,
float? upDistLimitSq = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

computes the closest point on the mesh edges (specified by the tree) to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findProjectionOnMeshEdges. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findProjectionOnMeshEdges() [2/2]

static unsafe MR.PolylineProjectionResult3 MR.findProjectionOnMeshEdges ( MR.Const_Line3f ln,
MR.Const_Mesh mesh,
MR.Const_AABBTreePolyline3 tree,
float? upDistLimitSq = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

computes the closest point on the mesh edges (specified by the tree) to given straight line

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findProjectionOnMeshEdges. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findProjectionOnPoints() [1/2]

static unsafe MR.PointsProjectionResult MR.findProjectionOnPoints ( in MR.Vector3f pt,
MR.Const_AABBTreePoints tree,
float? upDistLimitSq = null,
MR.AffineXf3f? xf = null,
float? loDistLimitSq = null,
MR.Const_VertBitSet? region = null,
MR.Std._ByValue_Function_BoolFuncFromMRVertId? skipCb = null )
inlinestatic

computes the closest point on AABBTreePoints to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point
xfpointcloud-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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
regionif not nullptr, all points not from the given region will be ignored
skipCbcallback to discard VertId projection candidate Generated from function MR.findProjectionOnPoints. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0. Parameter skipCb defaults to {}.

◆ findProjectionOnPoints() [2/2]

static unsafe MR.PointsProjectionResult MR.findProjectionOnPoints ( in MR.Vector3f pt,
MR.Const_PointCloudPart pcp,
float? upDistLimitSq = null,
MR.AffineXf3f? xf = null,
float? loDistLimitSq = null,
MR.Std._ByValue_Function_BoolFuncFromMRVertId? skipCb = null )
inlinestatic

computes the closest point on point cloud to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point
xfpointcloud-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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
skipCbcallback to discard VertId projection candidate Generated from function MR.findProjectionOnPoints. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0. Parameter skipCb defaults to {}.

◆ findProjectionOnPolyline() [1/2]

static unsafe MR.PolylineProjectionResult3 MR.findProjectionOnPolyline ( in MR.Vector3f pt,
MR.Const_Polyline3 polyline,
float? upDistLimitSq = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

computes the closest point on polyline to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findProjectionOnPolyline. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findProjectionOnPolyline() [2/2]

static unsafe MR.PolylineProjectionResult3 MR.findProjectionOnPolyline ( MR.Const_Line3f ln,
MR.Const_Polyline3 polyline,
float? upDistLimitSq = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

computes the closest point on polyline to given straight line

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findProjectionOnPolyline. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findProjectionOnPolyline2()

static unsafe MR.PolylineProjectionResult2 MR.findProjectionOnPolyline2 ( in MR.Vector2f pt,
MR.Const_Polyline2 polyline,
float? upDistLimitSq = null,
MR.Misc.InOut< MR.AffineXf2f >? xf = null,
float? loDistLimitSq = null )
inlinestatic

computes the closest point on polyline to given point

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimitSq and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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 Generated from function MR.findProjectionOnPolyline2. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findProjectionOnPolyline2WithOffset()

static unsafe MR.Polyline2ProjectionWithOffsetResult MR.findProjectionOnPolyline2WithOffset ( in MR.Vector2f pt,
MR.Const_Polyline2 polyline,
MR.Const_UndirectedEdgeScalars offsetPerEdge,
float? upDistLimit = null,
MR.Misc.InOut< MR.AffineXf2f >? xf = null,
float? loDistLimit = null )
inlinestatic

computes the closest point on polyline to given point, respecting each edge offset

Parameters
offsetPerEdgeoffset for each edge of polyline
upDistLimitupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimit and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitlow 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 Generated from function MR.findProjectionOnPolyline2WithOffset. Parameter upDistLimit defaults to 3.40282347e38f. Parameter loDistLimit defaults to 0.

◆ findProjectionOnPolylineWithOffset()

static unsafe MR.PolylineProjectionWithOffsetResult3 MR.findProjectionOnPolylineWithOffset ( in MR.Vector3f pt,
MR.Const_Polyline3 polyline,
MR.Const_UndirectedEdgeScalars offsetPerEdge,
float? upDistLimit = null,
MR.Misc.InOut< MR.AffineXf3f >? xf = null,
float? loDistLimit = null )
inlinestatic

computes the closest point on polyline to given point, respecting each edge offset

Parameters
offsetPerEdgeoffset for each edge of polyline
upDistLimitupper limit on the distance in question, if the real distance is larger then the function exists returning upDistLimit and no valid point or edge
xfpolyline-to-point transformation, if not specified then identity transformation is assumed
loDistLimitlow 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 Generated from function MR.findProjectionOnPolylineWithOffset. Parameter upDistLimit defaults to 3.40282347e38f. Parameter loDistLimit defaults to 0.

◆ findProjectionSubtree()

static unsafe MR.MeshProjectionResult MR.findProjectionSubtree ( in MR.Vector3f pt,
MR.Const_MeshPart mp,
MR.Const_AABBTree tree,
float? upDistLimitSq = null,
MR.AffineXf3f? xf = null,
float? loDistLimitSq = null,
MR.Std.Const_Function_BoolFuncFromMRFaceId? validFaces = null,
MR.Std.Const_Function_BoolFuncFromConstMRMeshProjectionResultRef? validProjections = null )
inlinestatic

computes the closest point on mesh (or its region) to given point

Parameters
treeexplicitly given BVH-tree for whole mesh or part of mesh we are searching projection on,
upDistLimitSqupper limit on the distance in question, if the real distance is larger than the function exits returning upDistLimitSq and no valid point
xfmesh-to-point transformation, if not specified then identity transformation is assumed
loDistLimitSqlow 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
validFacesif provided then only faces from there will be considered as projections
validProjectionsif provided then only projections passed this test can be returned Generated from function MR.findProjectionSubtree. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0. Parameter validFaces defaults to {}. Parameter validProjections defaults to {}.

◆ findRegionOuterFaces()

static unsafe MR.FaceBitSet MR.findRegionOuterFaces ( MR.Const_MeshTopology topology,
MR.Const_FaceBitSet region )
inlinestatic
Returns
All out of region faces that have a common edge with at least one region face Generated from function MR.findRegionOuterFaces.

◆ findSelfCollidingEdgeTrisPrecise()

static unsafe MR.Std.Vector_MREdgeTri MR.findSelfCollidingEdgeTrisPrecise ( MR.Const_MeshPart mp,
MR.Std._ByValue_Function_MRVector3iFuncFromConstMRVector3fRef conv,
bool? anyIntersection = null,
MR.AffineXf3f? rigidB2A = null,
int? aVertSizes = null )
inlinestatic

finds all pairs of colliding edges and triangle within one mesh

Parameters
anyIntersectionif true then the function returns as fast as it finds any intersection
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation, might be useful to obtain same result as in boolean operation would for mesh B
aVertsSizeused in float to int conversion, might be useful to obtain same result as in boolean operation would for mesh B Generated from function MR.findSelfCollidingEdgeTrisPrecise. Parameter anyIntersection defaults to false. Parameter aVertSizes defaults to 0.

◆ findSignedDistance() [1/2]

static unsafe MR.Std.Optional_MRSignedDistanceToMeshResult MR.findSignedDistance ( in MR.Vector3f pt,
MR.Const_MeshPart mp,
float? upDistLimitSq = null,
float? loDistLimitSq = null )
inlinestatic

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)

Parameters
upDistLimitSqupper limit on the distance in question, if the real distance is larger then the function exits returning nullopt
loDistLimitSqlow limit on the distance in question, if the real distance smaller then the function exits returning nullopt Generated from function MR.findSignedDistance. Parameter upDistLimitSq defaults to 3.40282347e38f. Parameter loDistLimitSq defaults to 0.

◆ findSignedDistance() [2/2]

static unsafe MR.MeshMeshSignedDistanceResult MR.findSignedDistance ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null,
float? upDistLimitSq = null )
inlinestatic

computes minimal distance between two meshes

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation
upDistLimitSqupper limit on the positive distance in question, if the real distance is larger than the function exists returning upDistLimitSq and no valid points Generated from function MR.findSignedDistance. Parameter upDistLimitSq defaults to 3.40282347e38f.

◆ findSkyRays()

static unsafe MR.BitSet MR.findSkyRays ( MR.Const_Mesh terrain,
MR.Const_VertCoords samples,
MR.Const_VertBitSet validSamples,
MR.Std.Const_Vector_MRSkyPatch skyPatches,
MR.Std.Vector_MRMeshIntersectionResult? outIntersections = null )
inlinestatic

In each valid sample point tests the rays from that point in the sky;.

Returns
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
Parameters
outIntersections- optional output vector of MeshIntersectionResult for every valid sample point Generated from function MR.findSkyRays.

◆ findSubstringCaseInsensitive()

static unsafe ulong MR.findSubstringCaseInsensitive ( string string_,
string substring )
inlinestatic

Finds the substring in the string.

Returns
position, npos if not found Generated from function MR.findSubstringCaseInsensitive.

◆ findTriangleSectionsByXYPlane()

static unsafe MR.Std.Vector_MRLineSegm3f MR.findTriangleSectionsByXYPlane ( MR.Const_MeshPart mp,
float zLevel,
MR.Std.Vector_MRFaceId? faces = null,
MR.UseAABBTree? u = null )
inlinestatic

finds all intersected triangles by the plane z=zLevel

Returns
the section's line segment within each such triangle;
Parameters
facesoptional output of the same size as return, where for each line segment one can find its triangle's id

this function must be faster than extractXYPlaneSections function when connecting continuous contours take most of the time Generated from function MR.findTriangleSectionsByXYPlane. Parameter u defaults to UseAABBTree.Yes.

◆ generalOffsetMesh()

static unsafe MR.Mesh MR.generalOffsetMesh ( MR.Const_MeshPart mp,
float offset,
MR.Const_GeneralOffsetParameters params_ )
inlinestatic

Offsets mesh by converting it to voxels and back using one of three modes specified in the parameters.

Generated from function MR.generalOffsetMesh.

◆ getBooleanPoints()

static unsafe MR.BooleanResultPoints MR.getBooleanPoints ( MR.Const_Mesh meshA,
MR.Const_Mesh meshB,
MR.BooleanOperation operation,
MR.AffineXf3f? rigidB2A = null )
inlinestatic

Returns the points of mesh boolean's result mesh 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.)

Parameters
meshAInput mesh A
meshBInput mesh B
operationBoolean operation to perform
rigidB2ATransform from mesh B space to mesh A space Generated from function MR.getBooleanPoints.

◆ getEdgeOrdering()

static unsafe MR.UndirectedEdgeBMap MR.getEdgeOrdering ( MR.Const_FaceBMap faceMap,
MR.Const_MeshTopology topology )
inlinestatic

compute the order of edges given the order of faces: edges near first faces also appear first;

Parameters
faceMapold face id -> new face id Generated from function MR.getEdgeOrdering.

◆ getPickedPointNormal()

static unsafe MR.Std.Optional_MRVector3f MR.getPickedPointNormal ( MR.Const_VisualObject object_,
MR.Std.Const_Variant_StdMonostate_MRMeshTriPoint_MREdgePoint_MRVertId point,
bool? interpolated = null )
inlinestatic

Returns object normal in local coordinates at given point,.

Parameters
interpolatedif true returns interpolated normal for mesh object, otherwise returns flat normal returns std.nullopt if object or point is invalid, or if it is ObjectLines or ObjectPoints without normals Generated from function MR.getPickedPointNormal. Parameter interpolated defaults to true.

◆ getTypeConverter()

static unsafe MR.Std.Function_FloatFuncFromConstCharPtr MR.getTypeConverter ( MR.ScalarType scalarType,
ulong range,
long min )
inlinestatic

get a function to convert binary data of specified format type to a scalar value

Parameters
scalarType- binary format type
range- (for integer types only) the range of possible values
min- (for integer types only) the minimal value Generated from function MR.getTypeConverter.

◆ getVectorConverters()

static unsafe MR.CoordinateConverters MR.getVectorConverters ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null )
inlinestatic

creates simple converters from Vector3f to Vector3i and back in mesh parts area range

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation Generated from function MR.getVectorConverters.

◆ getVertexOrdering()

static unsafe MR.VertBMap MR.getVertexOrdering ( MR.Const_FaceBMap faceMap,
MR.Const_MeshTopology topology )
inlinestatic

compute the order of vertices given the order of faces: vertices near first faces also appear first;

Parameters
faceMapold face id -> new face id Generated from function MR.getVertexOrdering.

◆ improveSampling()

static unsafe bool MR.improveSampling ( MR.Const_PointCloud cloud,
MR.VertBitSet samples,
MR.Const_ImproveSamplingSettings settings )
inlinestatic

Finds more representative sampling starting from a given one following k-means method;.

Parameters
samplesinput and output selected sample points from
cloud;
Returns
false if it was terminated by the callback Generated from function MR.improveSampling.

◆ inflate()

static unsafe void MR.inflate ( MR.Mesh mesh,
MR.Const_VertBitSet verts,
MR.Const_InflateSettings settings )
inlinestatic

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;.

Parameters
vertsmust not include all vertices of a mesh connected component Generated from function MR.inflate.

◆ intersection()

static unsafe MR.Std.Optional_MRVector2f MR.intersection ( MR.Const_LineSegm2f segm1,
MR.Const_LineSegm2f segm2 )
inlinestatic

finds an intersection between a segm1 and a segm2

Returns
nullopt if they don't intersect (even if they match) Generated from function MR.intersection.

◆ isHoleBd()

static unsafe bool MR.isHoleBd ( MR.Const_MeshTopology topology,
MR.Std.Const_Vector_MREdgeId loop )
inlinestatic

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 fillHole will fill the same hole Generated from function MR.isHoleBd.

◆ isInside() [1/2]

static unsafe bool MR.isInside ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null )
inlinestatic

checks that arbitrary mesh part A is inside of closed mesh part B

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation Generated from function MR.isInside.

◆ isInside() [2/2]

static unsafe bool MR.isInside ( MR.Const_Polyline2 a,
MR.Const_Polyline2 b,
MR.AffineXf2f? rigidB2A = null )
inlinestatic

checks that arbitrary 2d polyline A is inside of closed 2d polyline B

Parameters
rigidB2Arigid transformation from B-polyline space to A polyline space, nullptr considered as identity transformation Generated from function MR.isInside.

◆ isNonIntersectingInside() [1/2]

static unsafe bool MR.isNonIntersectingInside ( MR.Const_Mesh a,
MR.FaceId partFace,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null )
inlinestatic

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

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation Generated from function MR.isNonIntersectingInside.

◆ isNonIntersectingInside() [2/2]

static unsafe bool MR.isNonIntersectingInside ( MR.Const_MeshPart a,
MR.Const_MeshPart b,
MR.AffineXf3f? rigidB2A = null )
inlinestatic

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

Parameters
rigidB2Arigid transformation from B-mesh space to A mesh space, nullptr considered as identity transformation Generated from function MR.isNonIntersectingInside.

◆ isPointInsidePolyline()

static unsafe bool MR.isPointInsidePolyline ( MR.Const_Polyline2 polyline,
in MR.Vector2f point )
inlinestatic

detect if given point is inside polyline, by counting ray intersections

Parameters
polylineinput polyline
pointinput point Generated from function MR.isPointInsidePolyline.

◆ loadObjectFromFile()

static unsafe MR.LoadedObjects MR.loadObjectFromFile ( string filename,
MR.Std.Const_Function_BoolFuncFromFloat? callback = null )
inlinestatic

load all objects (or any type: mesh, lines, points, voxels or scene) from file

Parameters
callback- callback function to set progress (for progress bar) Generated from function MR.loadObjectFromFile. Parameter callback defaults to {}.

◆ makeBridge()

static unsafe MR.MakeBridgeResult MR.makeBridge ( MR.MeshTopology topology,
MR.EdgeId a,
MR.EdgeId b,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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;

Returns
MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear Generated from function MR.makeBridge.

◆ makeBridgeEdge()

static unsafe MR.EdgeId MR.makeBridgeEdge ( MR.MeshTopology topology,
MR.EdgeId a,
MR.EdgeId b )
inlinestatic

creates a new bridge edge between origins of two boundary edges a and b (both having no valid left face);

Returns
invalid id if bridge cannot be created because otherwise multiple edges appear Generated from function MR.makeBridgeEdge.

◆ makeDegenerateBandAroundHole()

static unsafe MR.EdgeId MR.makeDegenerateBandAroundHole ( MR.Mesh mesh,
MR.EdgeId a,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

creates a band of degenerate triangles around given hole;

Returns
the edge of new hole opposite to input edge (a) Generated from function MR.makeDegenerateBandAroundHole.

◆ makeDegenerateBandAroundRegion()

static unsafe void MR.makeDegenerateBandAroundRegion ( MR.Mesh mesh,
MR.Const_FaceBitSet region,
MR.Const_MakeDegenerateBandAroundRegionParams? params_ = null )
inlinestatic

Create a band of degenerate faces along the border of the specified region and the rest of the mesh.

The function is useful for extruding the region without changing the existing faces and creating holes

Parameters
mesh- the target mesh
region- the region required to be separated by a band of degenerate faces
params- optional output parameters Generated from function MR.makeDegenerateBandAroundRegion. Parameter params_ defaults to {}.

◆ makeDeloneEdgeFlips() [1/2]

static unsafe int MR.makeDeloneEdgeFlips ( MR.EdgeLengthMesh mesh,
MR.Const_IntrinsicDeloneSettings? settings = null,
int? numIters = null,
MR.Std.Const_Function_BoolFuncFromFloat? progressCallback = null )
inlinestatic

improves mesh triangulation by performing flipping of edges to satisfy Intrinsic Delaunay local property, consider every edge at most numIters times,

Returns
the number of flips done
Parameters
numItersMaximal iteration count
progressCallbackCallback to report algorithm progress and cancel it by user request see "An Algorithm for the Construction of Intrinsic Delaunay Triangulations with Applications to Digital Geometry Processing". https://page.math.tu-berlin.de/~bobenko/papers/InDel.pdf Generated from function MR.makeDeloneEdgeFlips. Parameter settings defaults to {}. Parameter numIters defaults to 1. Parameter progressCallback defaults to {}.

◆ makeDeloneEdgeFlips() [2/2]

static unsafe int MR.makeDeloneEdgeFlips ( MR.Mesh mesh,
MR.Const_DeloneSettings? settings = null,
int? numIters = null,
MR.Std.Const_Function_BoolFuncFromFloat? progressCallback = null )
inlinestatic

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,

Returns
the number of flips done
Parameters
numItersMaximal iteration count
progressCallbackCallback to report algorithm progress and cancel it by user request Generated from function MR.makeDeloneEdgeFlips. Parameter settings defaults to {}. Parameter numIters defaults to 1. Parameter progressCallback defaults to {}.

◆ makeNormals()

static unsafe MR.VertCoords MR.makeNormals ( MR.Const_PointCloud pointCloud,
int? avgNeighborhoodSize = null )
inlinestatic

Makes consistent normals for valid points of given point cloud.

Parameters
avgNeighborhoodSizeavg num of neighbors of each individual point Generated from function MR.makeNormals. Parameter avgNeighborhoodSize defaults to 48.

◆ makeOrientedNormals() [1/2]

static unsafe MR.Std.Optional_MRVertCoords MR.makeOrientedNormals ( MR.Const_PointCloud pointCloud,
float radius,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

Makes normals for valid points of given point cloud; directions of close points are selected to be consistent;.

Parameters
radiusof neighborhood to consider
Returns
nullopt if progress returned false Generated from function MR.makeOrientedNormals. Parameter progress defaults to {}.

◆ makeOrientedNormals() [2/2]

static unsafe MR.Std.Optional_MRVertCoords MR.makeOrientedNormals ( MR.Const_PointCloud pointCloud,
MR.AllLocalTriangulations triangs,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

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.

Returns
nullopt if progress returned false Generated from function MR.makeOrientedNormals. Parameter progress defaults to {}.

◆ makeQuadBridge()

static unsafe MR.MakeBridgeResult MR.makeQuadBridge ( MR.MeshTopology topology,
MR.EdgeId a,
MR.EdgeId b,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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;

Returns
false if bridge cannot be created because otherwise multiple edges appear Generated from function MR.makeQuadBridge.

◆ makeSmoothBridge()

static unsafe MR.MakeBridgeResult MR.makeSmoothBridge ( MR.Mesh mesh,
MR.EdgeId a,
MR.EdgeId b,
float samplingStep,
MR.FaceBitSet? outNewFaces = null )
inlinestatic

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;

Parameters
samplingStepboundaries of the bridge will be subdivided until the distance between neighbor points becomes less than this distance
Returns
MakeBridgeResult evaluating to false if bridge cannot be created because otherwise multiple edges appear Generated from function MR.makeSmoothBridge.

◆ makeSpline() [1/3]

static unsafe MR.MarkedContour3f MR.makeSpline ( MR._ByValue_MarkedContour3f in_,
float? markStability = null,
MR.Std.Const_Vector_MRVector3f? normals = null )
inlinestatic
Parameters
ininput marked contour
markStabilitya positive value, the more the value the closer marked points will be to their original positions
normalsif provided the curve at marked points will try to be orthogonal to given normal there
Returns
contour with same number of points and same marked, where each return point tries to be on a smooth curve Generated from function MR.makeSpline. Parameter markStability defaults to 1.

◆ makeSpline() [2/3]

static unsafe MR.MarkedContour3f MR.makeSpline ( MR._ByValue_MarkedContour3f in_,
MR.Std.Const_Vector_MRVector3f normals,
float? markStability = null )
inlinestatic
Parameters
ininput marked contour
normalsthe curve at marked points will try to be orthogonal to given normal there
markStabilitya positive value, the more the value the closer marked points will be to their original positions
Returns
contour with same number of points and same marked, where each return point tries to be on a smooth curve Generated from function MR.makeSpline. Parameter markStability defaults to 1.

◆ makeSpline() [3/3]

static unsafe MR.MarkedContour3f MR.makeSpline ( MR.Std.Const_Vector_MRVector3f controlPoints,
MR.Const_SplineSettings settings )
inlinestatic
Parameters
controlPointsordered point the spline to interpolate
Returns
spline contour with same or more points than initially given, marks field highlights the points corresponding to input ones Generated from function MR.makeSpline.

◆ makeUnorientedNormals() [1/3]

static unsafe MR.Std.Optional_MRVertCoords MR.makeUnorientedNormals ( MR.Const_PointCloud pointCloud,
float radius,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null,
MR.OrientNormals? orient = null )
inlinestatic

Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours.

Parameters
radiusof neighborhood to consider
orientOrientNormals.Smart here means orientation from best fit plane
Returns
nullopt if progress returned false Generated from function MR.makeUnorientedNormals. Parameter progress defaults to {}. Parameter orient defaults to OrientNormals.Smart.

◆ makeUnorientedNormals() [2/3]

static unsafe MR.Std.Optional_MRVertCoords MR.makeUnorientedNormals ( MR.Const_PointCloud pointCloud,
MR.Const_AllLocalTriangulations triangs,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null,
MR.OrientNormals? orient = null )
inlinestatic

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.

Parameters
orientOrientNormals.Smart here means orientation from normals of neigbour triangles
Returns
nullopt if progress returned false Generated from function MR.makeUnorientedNormals. Parameter progress defaults to {}. Parameter orient defaults to OrientNormals.Smart.

◆ makeUnorientedNormals() [3/3]

static unsafe MR.Std.Optional_MRVertCoords MR.makeUnorientedNormals ( MR.Const_PointCloud pointCloud,
MR.Const_Buffer_MRVertId closeVerts,
int numNei,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null,
MR.OrientNormals? orient = null )
inlinestatic

Makes normals for valid points of given point cloud by directing them along the normal of best plane through the neighbours.

Parameters
closeVertsa buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei)
orientOrientNormals.Smart here means orientation from best fit plane
Returns
nullopt if progress returned false Generated from function MR.makeUnorientedNormals. Parameter progress defaults to {}. Parameter orient defaults to OrientNormals.Smart.

◆ markedContour()

static unsafe MR.MarkedContour3f MR.markedContour ( MR.Std._ByValue_Vector_MRVector3f in_)
inlinestatic
Returns
marked contour with all points from (in) marked Generated from function MR.markedContour.

◆ markedFirstLast()

static unsafe MR.MarkedContour3f MR.markedFirstLast ( MR.Std._ByValue_Vector_MRVector3f in_)
inlinestatic
Returns
marked contour with only first and last points from (in) marked Generated from function MR.markedFirstLast.

◆ mcShellMeshRegion()

static unsafe MR.Mesh MR.mcShellMeshRegion ( MR.Const_Mesh mesh,
MR.Const_FaceBitSet region,
float offset,
MR.Const_BaseShellParameters params_,
MR.Vector_MRVoxelId_MRFaceId? outMap = null )
inlinestatic

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. Generated from function MR.mcShellMeshRegion.

◆ meshFromVoxelsMask()

static unsafe MR.Mesh MR.meshFromVoxelsMask ( MR.Const_VdbVolume volume,
MR.Const_VoxelBitSet mask )
inlinestatic

Creates mesh from voxels mask.

Parameters
maskin space of whole volume density inside mask is expected to be higher then outside Generated from function MR.meshFromVoxelsMask.

◆ meshToDirectionVolume()

static unsafe MR.Std.Array_MRSimpleVolumeMinMax_3 MR.meshToDirectionVolume ( MR.Const_MeshToDirectionVolumeParams params_)
inlinestatic

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.

Parameters
paramsExpected to have valid (not null) projector, with invoked method IPointsToMeshProjector.updateMeshData Generated from function MR.meshToDirectionVolume.

◆ moveMeshToVoxelMaxDeriv() [1/3]

static unsafe MR.VertBitSet MR.moveMeshToVoxelMaxDeriv ( MR.Mesh mesh,
in MR.AffineXf3f meshXf,
MR.Const_FunctionVolume volume,
in MR.AffineXf3f volumeXf,
MR.Const_MoveMeshToVoxelMaxDerivSettings settings,
MR.Std._ByValue_Function_BoolFuncFromFloat? callback = null )
inlinestatic

Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.

Returns
Vertices that were moved by the algorithm Generated from function MR.moveMeshToVoxelMaxDeriv<MR.FunctionVolume>. Parameter callback defaults to {}.

◆ moveMeshToVoxelMaxDeriv() [2/3]

static unsafe MR.VertBitSet MR.moveMeshToVoxelMaxDeriv ( MR.Mesh mesh,
in MR.AffineXf3f meshXf,
MR.Const_SimpleVolumeMinMax volume,
in MR.AffineXf3f volumeXf,
MR.Const_MoveMeshToVoxelMaxDerivSettings settings,
MR.Std._ByValue_Function_BoolFuncFromFloat? callback = null )
inlinestatic

Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.

Returns
Vertices that were moved by the algorithm Generated from function MR.moveMeshToVoxelMaxDeriv<MR.SimpleVolumeMinMax>. Parameter callback defaults to {}.

◆ moveMeshToVoxelMaxDeriv() [3/3]

static unsafe MR.VertBitSet MR.moveMeshToVoxelMaxDeriv ( MR.Mesh mesh,
in MR.AffineXf3f meshXf,
MR.Const_VdbVolume volume,
in MR.AffineXf3f volumeXf,
MR.Const_MoveMeshToVoxelMaxDerivSettings settings,
MR.Std._ByValue_Function_BoolFuncFromFloat? callback = null )
inlinestatic

Moves each vertex along its normal to the minimize (with sign, i.e. maximize the absolute value with negative sign) the derivative of voxels.

Returns
Vertices that were moved by the algorithm Generated from function MR.moveMeshToVoxelMaxDeriv<MR.VdbVolume>. Parameter callback defaults to {}.

◆ objectHasSelectableChildren()

static unsafe bool MR.objectHasSelectableChildren ( MR.Const_Object object_,
bool? recurse = null )
inlinestatic

returns whether the object has selectable children

Parameters
recurse- if true, look up for selectable children at any depth Generated from function MR.objectHasSelectableChildren. Parameter recurse defaults to false.

◆ offsetSurfaceLine() [1/2]

static unsafe MR.Std.Vector_StdVectorMRVector3f MR.offsetSurfaceLine ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
float offset )
inlinestatic

Returns contours in mesh space that are offset from surfaceLine on offset amount in all directions.

Parameters
meshmesh to perform offset on
surfaceLinesurface line to perofrm offset from
offsetamount of offset, note that absolute value is used
Returns
resulting offset contours or error if something goes wrong

Generated from function MR.offsetSurfaceLine.

◆ offsetSurfaceLine() [2/2]

static unsafe MR.Std.Vector_StdVectorMRVector3f MR.offsetSurfaceLine ( MR.Const_Mesh mesh,
MR.Std.Const_Vector_MRMeshTriPoint surfaceLine,
MR.Std.Const_Function_FloatFuncFromInt offsetAtPoint )
inlinestatic

Returns contours in mesh space that are offset from surfaceLine on offsetAtPoint amount in all directions.

Parameters
meshmesh to perform offset on
surfaceLinesurface line to perofrm offset from
offsetAtPointfunction that can return different amount of offset in different point (argument is index of point in surfaceLine), note that absolute value is used
Returns
resulting offset contours or error if something goes wrong

Generated from function MR.offsetSurfaceLine.

◆ offsetVerts()

static unsafe bool MR.offsetVerts ( MR.Mesh mesh,
MR.Std.Const_Function_FloatFuncFromMRVertId offset,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

Modifies mesh shifting each vertex along its pseudonormal by the corresponding offset.

Returns
false if cancelled. Generated from function MR.offsetVerts. Parameter cb defaults to {}.

◆ orderIntersectionContours()

static unsafe MR.Std.Vector_StdVectorMRVarEdgeTri MR.orderIntersectionContours ( MR.Const_MeshTopology topologyA,
MR.Const_MeshTopology topologyB,
MR.Std.Const_Vector_MRVarEdgeTri intersections )
inlinestatic

Combines unordered input intersections (and flips orientation of intersected edges from mesh B) into ordered oriented contours with the properties:

  1. Each contour is a. either closed (then its first and last elements are equal), b. or open (then its first and last intersected edges are boundary edges).
  2. Next intersection in a contour is located to the left of the current intersected edge: a. if the current and next intersected triangles are the same, then next intersected edge is either next( curr.edge ) or prev( curr.edge.sym() ).sym(), b. otherwise next intersected triangle is left( curr.edge ) and next intersected edge is one of the edges having the current intersected triangle to the right.
  3. Orientation of intersected edges in each pair of (intersected edge, intersected triangle): a. the intersected edge of mesh A is directed from negative half-space of the intersected triangle from mesh B to its positive half-space, b. the intersected edge of mesh B is directed from positive half-space of the intersected triangle from mesh A to its negative half-space.
  4. Orientation of contours: a. left of contours on mesh A is inside of mesh B (consequence of 3a), b. right of contours on mesh B is inside of mesh A (consequence of 3b). Generated from function MR.orderIntersectionContours.

◆ orderSelfIntersectionContours()

static unsafe MR.Std.Vector_StdVectorMRVarEdgeTri MR.orderSelfIntersectionContours ( MR.Const_MeshTopology topology,
MR.Std.Const_Vector_MREdgeTri intersections )
inlinestatic

Combines unordered input self-intersections (and flips orientation of some intersected edges) into ordered oriented contours with the properties:

  1. Each contour is a. either closed (then its first and last elements are equal), b. or open if terminal intersection is on mesh boundary or if self-intersection terminates in a vertex.
  2. Next intersection in a contour is located to the left of the current intersected edge: a. if the current and next intersected triangles are the same, then next intersected edge is either next( curr.edge ) or prev( curr.edge.sym() ).sym(), b. otherwise next intersected triangle is left( curr.edge ) and next intersected edge is one of the edges having the current intersected triangle to the right.
  3. Orientation of intersected edges in each pair of (intersected edge, intersected triangle): a. isEdgeATriB() = true: the intersected edge is directed from negative half-space of the intersected triangle to its positive half-space, b. isEdgeATriB() = false: the intersected edge is directed from positive half-space of the intersected triangle to its negative half-space.
  4. Contours [2*i] and [2*i+1] a. have equal lengths and pass via the same intersections but in opposite order, b. each intersection is present in two contours with different values of isEdgeATriB() flag, and opposite directions of the intersected edge.
  5. Orientation of contours: a. first element of even (0,2,...) contours has isEdgeATriB() = true, left of even contours goes inside (consequence of 3a), b. first element of odd (1,3,...) contours has isEdgeATriB() = false, right of odd contours goes inside (consequence of 3b). Generated from function MR.orderSelfIntersectionContours.

◆ orientLocalTriangulations()

static unsafe void MR.orientLocalTriangulations ( MR.AllLocalTriangulations triangs,
MR.Const_VertCoords coords,
MR.Const_VertBitSet region,
MR.Const_VertCoords targetDir )
inlinestatic

orient neighbors around each point in

Parameters
regionso they will be in clockwise order if look from the tip of target direction Generated from function MR.orientLocalTriangulations.

◆ orientNormals() [1/3]

static unsafe bool MR.orientNormals ( MR.Const_PointCloud pointCloud,
MR.VertCoords normals,
float radius,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

Select orientation of given normals to make directions of close points consistent;.

Parameters
radiusof neighborhood to consider
Returns
false if progress returned false Generated from function MR.orientNormals. Parameter progress defaults to {}.

◆ orientNormals() [2/3]

static unsafe bool MR.orientNormals ( MR.Const_PointCloud pointCloud,
MR.VertCoords normals,
MR.Const_AllLocalTriangulations triangs,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

Select orientation of given normals to make directions of close points consistent;.

Parameters
radiusof neighborhood to consider
Returns
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. Generated from function MR.orientNormals. Parameter progress defaults to {}.

◆ orientNormals() [3/3]

static unsafe bool MR.orientNormals ( MR.Const_PointCloud pointCloud,
MR.VertCoords normals,
MR.Const_Buffer_MRVertId closeVerts,
int numNei,
MR.Std.Const_Function_BoolFuncFromFloat? progress = null )
inlinestatic

Select orientation of given normals to make directions of close points consistent;.

Parameters
closeVertsa buffer where for every valid point #i its neighbours are stored at indices [i*numNei; (i+1)*numNei)
Returns
false if progress returned false Generated from function MR.orientNormals. Parameter progress defaults to {}.

◆ pack()

static unsafe MR.ObjectPoints MR.pack ( MR.Const_ObjectPoints pts,
MR.Reorder reorder,
MR.VertBitSet? newValidVerts = null,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

constructs new ObjectPoints containing the packed version of input points,

Parameters
newValidVertsif given, then use them instead of valid points from pts
Returns
nullptr if the operation was cancelled Generated from function MR.pack. Parameter cb defaults to {}.

◆ planeMeshIntersect()

static unsafe void MR.planeMeshIntersect ( MR.Const_MeshPart meshPart,
MR.Const_Plane3f plane,
MR.FaceBitSet? fs,
MR.UndirectedEdgeBitSet? ues,
MR.VertBitSet? vs,
MR.Std.Vector_MRFaceId? fsVec = null )
inlinestatic

given mesh part and arbitrary plane, outputs

Parameters
fstriangles from boxes crossed or touched by the plane
uesedges of these triangles
vsvertices of these triangles
fsVectriangles from boxes crossed or touched by the plane in unspecified order Generated from function MR.planeMeshIntersect.

◆ positionVertsSmoothly()

static unsafe void MR.positionVertsSmoothly ( MR.Mesh mesh,
MR.Const_VertBitSet verts,
MR.EdgeWeights? edgeWeights = null,
MR.VertexMass? vmass = null,
MR.Const_VertBitSet? fixedSharpVertices = null )
inlinestatic

Puts given vertices in such positions to make smooth surface both inside verts-region and on its boundary;.

Parameters
vertsmust not include all vertices of a mesh connected component
fixedSharpVerticesin these vertices the surface can be not-smooth Generated from function MR.positionVertsSmoothly. Parameter edgeWeights defaults to EdgeWeights.Cotan. Parameter vmass defaults to VertexMass.Unit.

◆ printTimingTree()

static unsafe void MR.printTimingTree ( double? minTimeSec = null)
inlinestatic

prints the current timing tree

Parameters
minTimeSecomit printing records with time spent less than given value in seconds Generated from function MR.printTimingTree. Parameter minTimeSec defaults to 0.10000000000000001.

◆ printTimingTreeAtEnd()

static unsafe void MR.printTimingTreeAtEnd ( bool on,
double? minTimeSec = null )
inlinestatic

enables or disables printing of timing tree when application terminates

Parameters
minTimeSecomit printing records with time spent less than given value in seconds Generated from function MR.printTimingTreeAtEnd. Parameter minTimeSec defaults to 0.10000000000000001.

◆ projectObjectMeshData()

static unsafe void MR.projectObjectMeshData ( MR.Const_ObjectMeshData oldMeshData,
MR.ObjectMeshData newMeshData,
MR.Const_FaceBitSet? region = null,
MR.Const_ProjectAttributeParams? params_ = null )
inlinestatic

finds attributes of new mesh by projecting faces/vertices on old mesh

Note
for now clears edges attributes
Parameters
oldMeshDataold mesh along with input attributes
newMeshDatanew mesh along with outpuyt attributes
regionoptional input region for projecting (usefull if newMesh is changed part of old mesh)
paramsparameters of prohecting

Generated from function MR.projectObjectMeshData. Parameter params_ defaults to {}.

◆ readByBlocks()

static unsafe bool MR.readByBlocks ( MR.Std.Istream in_,
MR.Misc.InOut< byte >? data,
ulong dataSize,
MR.Std._ByValue_Function_BoolFuncFromFloat? callback = null,
ulong? blockSize = null )
inlinestatic

read dataSize bytes from in stream to data by blocks blockSize bytes

if progress callback is not set, read all data by one block

Returns
false if process was canceled (callback is set and return false ) Generated from function MR.readByBlocks. Parameter callback defaults to {}. Parameter blockSize defaults to (size_t(1)<<16).

◆ reducePathViaVertex()

static unsafe bool MR.reducePathViaVertex ( MR.Const_Mesh mesh,
MR.Const_MeshTriPoint start,
MR.VertId v,
MR.Const_MeshTriPoint end,
MR.Std.Vector_MREdgePoint outPath,
MR.Std.Vector_MRVector2f tmp,
MR.Std.Vector_MREdgePoint cachePath )
inlinestatic

given path s-v-e, tries to decrease its length by moving away from v

Parameters
outPathintermediate locations between s and e will be added here
tmpelements will be temporary allocated here
cachePathas far as we need two sides unfold, cache one to reduce allocations Generated from function MR.reducePathViaVertex.

◆ relax() [1/2]

static unsafe bool MR.relax ( MR.Mesh mesh,
MR.Const_MeshRelaxParams? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of relaxation iterations to the whole mesh ( or some region if it is specified )

Returns
true if was finished successfully, false if was interrupted by progress callback Generated from function MR.relax. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ relax() [2/2]

static unsafe bool MR.relax ( MR.PointCloud pointCloud,
MR.Const_PointCloudRelaxParams? params_ = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified )

Returns
true if was finished successfully, false if was interrupted by progress callback Generated from function MR.relax. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ relaxApprox() [1/2]

static unsafe bool MR.relaxApprox ( MR.Mesh mesh,
MR.Const_MeshApproxRelaxParams? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of relaxation iterations to the whole mesh ( or some region if it is specified ) approx neighborhoods

Returns
true if the operation completed successfully, and false if it was interrupted by the progress callback. Generated from function MR.relaxApprox. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ relaxApprox() [2/2]

static unsafe bool MR.relaxApprox ( MR.PointCloud pointCloud,
MR.Const_PointCloudApproxRelaxParams? params_ = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of relaxation iterations to the whole pointCloud ( or some region if it is specified ) approx neighborhoods

Returns
true if was finished successfully, false if was interrupted by progress callback Generated from function MR.relaxApprox. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ relaxKeepVolume() [1/2]

static unsafe bool MR.relaxKeepVolume ( MR.Mesh mesh,
MR.Const_MeshRelaxParams? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? cb = null )
inlinestatic

applies given number of relaxation iterations to the whole mesh ( or some region if it is specified )
do not really keeps volume but tries hard

Returns
true if the operation completed successfully, and false if it was interrupted by the progress callback. Generated from function MR.relaxKeepVolume. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ relaxKeepVolume() [2/2]

static unsafe bool MR.relaxKeepVolume ( MR.PointCloud pointCloud,
MR.Const_PointCloudRelaxParams? params_ = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

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

Returns
true if was finished successfully, false if was interrupted by progress callback Generated from function MR.relaxKeepVolume. Parameter params_ defaults to {}. Parameter cb defaults to {}.

◆ replace()

static unsafe MR.Std.String MR.replace ( string target,
string from,
string to )
inlinestatic

Returns.

Parameters
targetwith all
fromreplaced with
to,zeroor more times. Generated from function MR.replace.

◆ replaceInplace()

static unsafe void MR.replaceInplace ( MR.Std.String target,
string from,
string to )
inlinestatic

Replaces.

Parameters
fromwith
toin
target(in-place), zero or more times. Generated from function MR.replaceInplace.

◆ reportProgress() [1/2]

static unsafe bool MR.reportProgress ( MR.Std._ByValue_Function_BoolFuncFromFloat cb,
float v )
inlinestatic

safely invokes

Parameters
cbwith given value; just returning true for empty callback Generated from function MR.reportProgress.

◆ reportProgress() [2/2]

static unsafe bool MR.reportProgress ( MR.Std._ByValue_Function_BoolFuncFromFloat cb,
float v,
ulong counter,
int divider )
inlinestatic

safely invokes

Parameters
cbwith given value if
counteris divisible by
divider(preferably a power of 2); just returning true for empty callback Generated from function MR.reportProgress.

◆ resample()

static unsafe MR.MarkedContour3f MR.resample ( MR.Const_MarkedContour3f in_,
float minStep,
MR.Std.Vector_MRVector3f? normals = null )
inlinestatic

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

Parameters
normalsoptional parameter with the normals of input points that will be resampled to become normals of output points Generated from function MR.resample.

◆ resolveMeshDegenerations()

static unsafe bool MR.resolveMeshDegenerations ( MR.Mesh mesh,
MR.Const_ResolveMeshDegenSettings? settings = null )
inlinestatic

Removes degenerate triangles in a mesh by calling decimateMesh function with appropriate settings.

consider using fixMeshDegeneracies for more complex cases

Returns
true if the mesh has been changed
See also
decimateMesh Generated from function MR.resolveMeshDegenerations. Parameter settings defaults to {}.

◆ segmentVolume()

static unsafe MR.Mesh MR.segmentVolume ( MR.Const_VdbVolume volume,
MR.Std.Const_Vector_StdPairMRVector3fMRVector3f pairs,
MR.Const_VolumeSegmentationParameters? params_ = null )
inlinestatic

Simple segment volume.

  1. Build paths between points pairs
  2. Mark paths as inside part seeds
  3. Mark volume part edges as outside part seeds
  4. Return mesh from segmented inside part Generated from function MR.segmentVolume. Parameter params_ defaults to MR.VolumeSegmentationParameters().

◆ segmentVolumeByGraphCut()

static unsafe MR.VoxelBitSet MR.segmentVolumeByGraphCut ( MR.Const_SimpleVolume densityVolume,
float k,
MR.Const_VoxelBitSet sourceSeeds,
MR.Const_VoxelBitSet sinkSeeds,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

Segment voxels of given volume on two sets using graph-cut, returning source set.

Parameters
k- coefficient in the exponent of the metric affecting edge capacity:
increasing k you force to find a higher steps in the density on the boundary, decreasing k you ask for smoother boundary
sourceSeeds- these voxels will be included in the result
sinkSeeds- these voxels will be excluded from the result
See also
VolumeSegmenter Generated from function MR.segmentVolumeByGraphCut. Parameter cb defaults to {}.

◆ segmentVoxelMaskToInstances()

static unsafe MR.Std.Vector_MRMesh MR.segmentVoxelMaskToInstances ( MR.Const_VdbVolume mask,
ulong? minSize = null,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

Given voxel mask, separate it into components using mincut algorithm.

Parameters
minSizeMinimum size of a segment (in voxels) Generated from function MR.segmentVoxelMaskToInstances. Parameter minSize defaults to 100. Parameter cb defaults to {}.

◆ serializeObjectTree()

static unsafe void MR.serializeObjectTree ( MR.Const_Object object_,
string path,
MR.Std._ByValue_Function_VoidFuncFromConstStdFilesystemPathRef preCompress,
MR.ObjectSave.Const_Settings? settings = null )
inlinestatic

saves object subtree in given scene file (zip/mru)

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_ Generated from function MR.serializeObjectTree. Parameter settings defaults to {}.

◆ setValue() [1/2]

static unsafe void MR.setValue ( MR.FloatGrid grid,
in MR.Vector3i p,
float value )
inlinestatic

sets given region voxels value

Note
region is in grid space (0 voxel id is minimum active voxel in grid) Generated from function MR.setValue.

◆ setValue() [2/2]

static unsafe void MR.setValue ( MR.FloatGrid grid,
MR.Const_VoxelBitSet region,
float value )
inlinestatic

sets given region voxels value

Note
region is in grid space (0 voxel id is minimum active voxel in grid) Generated from function MR.setValue.

◆ setValues()

static unsafe void MR.setValues ( MR.FloatGrid grid,
MR.Const_VoxelBitSet region,
MR.Std.Const_Vector_Float values )
inlinestatic

sets given region voxels value one by one

Note
region is in grid space (0 voxel id is minimum active voxel in grid) Generated from function MR.setValues.

◆ sharpenMarchingCubesMesh()

static unsafe void MR.sharpenMarchingCubesMesh ( MR.Const_MeshPart ref_,
MR.Mesh vox,
MR.Vector_MRVoxelId_MRFaceId face2voxel,
MR.Const_SharpenMarchingCubesMeshSettings settings )
inlinestatic

adjust the mesh

Parameters
voxproduced by marching cubes method (NOT dual marching cubes) by 1) correcting positions of all vertices to given offset relative to
refmesh (if correctOldVertPos == true); 2) introducing new vertices in the voxels where the normals change abruptly.
face2voxelmapping from Face Id to Voxel Id where it is located Generated from function MR.sharpenMarchingCubesMesh.

◆ shrinkFaces()

static unsafe MR.FaceBitSet MR.shrinkFaces ( MR.Const_MeshTopology topology,
MR.Const_FaceBitSet region,
MR.Const_UndirectedEdgeBitSet? stopEdges = null )
inlinestatic

returns given region without all faces sharing an edge with not-region face;

Parameters
stopEdges- neighborhood via this edges will be ignored Generated from function MR.shrinkFaces.

◆ smoothRegionBoundary()

static unsafe void MR.smoothRegionBoundary ( MR.Mesh mesh,
MR.Const_FaceBitSet regionFaces,
int? numIters = null )
inlinestatic

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;

Parameters
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 Generated from function MR.smoothRegionBoundary. Parameter numIters defaults to 4.

◆ split()

static unsafe MR.Std.Vector_StdString MR.split ( string string_,
string delimiter )
inlinestatic

Splits given string by delimiter.

Returns
vector of split strings Generated from function MR.split.

◆ straightenBoundary()

static unsafe void MR.straightenBoundary ( MR.Mesh mesh,
MR.EdgeId bd,
float minNeiNormalsDot,
float maxTriAspectRatio,
MR.FaceBitSet? newFaces = null )
inlinestatic

adds triangles along the boundary to straighten it;

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. Generated from function MR.straightenBoundary.

◆ subdivideMesh() [1/2]

static unsafe int MR.subdivideMesh ( MR.Mesh mesh,
MR.Const_SubdivideSettings? settings = null )
inlinestatic

splits edges in mesh region according to the settings;

Returns
The total number of edge splits performed Generated from function MR.subdivideMesh. Parameter settings defaults to {}.

◆ subdivideMesh() [2/2]

static unsafe int MR.subdivideMesh ( MR.ObjectMeshData data,
MR.Const_SubdivideSettings settings )
inlinestatic

subdivides mesh with per-element attributes according to given settings; \detail if settings.region is not null, then given region must be a subset of current face selection or face selection must absent

Returns
The total number of edge splits performed Generated from function MR.subdivideMesh.

◆ subdividePolyline()

static unsafe int MR.subdividePolyline ( MR.Polyline2 polyline,
MR.Const_PolylineSubdivideSettings? settings = null )
inlinestatic

Split edges in polyline according to the settings;
.

Returns
The total number of edge splits performed Generated from function MR.subdividePolyline. Parameter settings defaults to {}.

◆ subdivideWithPlane() [1/2]

static unsafe MR.FaceBitSet MR.subdivideWithPlane ( MR.Mesh mesh,
MR.Const_Plane3f plane,
MR.Phmap.FlatHashMap_MRFaceId_MRFaceId? new2Old = null,
float? eps = null,
MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeIdFloat? onEdgeSplitCallback = null )
inlinestatic

subdivides all triangles intersected by given plane, leaving smaller triangles that only touch the plane;

Returns
all triangles on the positive side of the plane
Parameters
new2Oldreceive mapping from newly appeared triangle to its original triangle (part to full)
epsif existing vertex is within eps distance from the plane, then move the vertex not introducing new ones
onEdgeSplitCallbackis invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex Generated from function MR.subdivideWithPlane. Parameter eps defaults to 0. Parameter onEdgeSplitCallback defaults to nullptr.

◆ subdivideWithPlane() [2/2]

static unsafe MR.UndirectedEdgeBitSet MR.subdivideWithPlane ( MR.Polyline3 polyline,
MR.Const_Plane3f plane,
MR.EdgeBitSet? newPositiveEdges = null,
MR.Std._ByValue_Function_VoidFuncFromMREdgeIdMREdgeIdFloat? onEdgeSplitCallback = null )
inlinestatic

This function splits edges intersected by the plane.

Returns
edges located above the plane (in direction of normal to plane)
Parameters
polylineInput polyline that will be cut by the plane
planeInput plane to cut polyline with
newPositiveEdgesedges with origin on the plane and oriented to the positive direction (only adds bits to the existing ones)
onEdgeSplitCallbackis invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex Generated from function MR.subdivideWithPlane. Parameter onEdgeSplitCallback defaults to {}.

◆ subprogress() [1/2]

static unsafe MR.Std.Function_BoolFuncFromFloat MR.subprogress ( MR.Std._ByValue_Function_BoolFuncFromFloat cb,
float from,
float to )
inlinestatic

returns a callback that maps [0,1] linearly into [from,to] in the call to

Parameters
cb(which can be empty) Generated from function MR.subprogress.

◆ subprogress() [2/2]

static unsafe MR.Std.Function_BoolFuncFromFloat MR.subprogress ( MR.Std._ByValue_Function_BoolFuncFromFloat cb,
ulong index,
ulong count )
inlinestatic

returns a callback that maps [0,1] linearly into [(index+0)/count,(index+1)/count] in the call to

Parameters
cb(which can be empty) Generated from function MR.subprogress.

◆ surroundingContour() [1/2]

static unsafe MR.Std.Vector_MREdgeId MR.surroundingContour ( MR.Const_Mesh mesh,
MR.Std._ByValue_Vector_MREdgeId includeEdges,
MR.Std.Const_Function_FloatFuncFromMREdgeId edgeMetric,
in MR.Vector3f dir )
inlinestatic

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.

Parameters
includeEdgescontain all edges in arbitrary order that must be present in the returned loop, probably with reversed direction (should have at least 2 elements)
edgeMetricreturned loop will minimize the sum of this metric
dirdirection approximately orthogonal to the loop, the resulting loop will be oriented clockwise if look from the direction's tip Generated from function MR.surroundingContour.

◆ surroundingContour() [2/2]

static unsafe MR.Std.Vector_MREdgeId MR.surroundingContour ( MR.Const_Mesh mesh,
MR.Std._ByValue_Vector_MRVertId keyVertices,
MR.Std.Const_Function_FloatFuncFromMREdgeId edgeMetric,
in MR.Vector3f dir )
inlinestatic

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.

Parameters
keyVerticescontain all vertices in arbitrary order that returned loop must pass (should have at least 2 elements)
edgeMetricreturned loop will minimize the sum of this metric
dirdirection approximately orthogonal to the loop, the resulting loop will be oriented clockwise if look from the direction's tip Generated from function MR.surroundingContour.

◆ trackSection()

static unsafe MR.Std.Vector_MREdgePoint MR.trackSection ( MR.Const_MeshPart mp,
MR.Const_MeshTriPoint start,
MR.Const_MeshTriPoint end,
in MR.Vector3f planePoint,
bool ccw )
inlinestatic

track section of plane set by start point, end point and planePoint from start to end

Parameters
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) Generated from function MR.trackSection.

◆ transformVdbVolume()

static unsafe MR.TransformVdbVolumeResult MR.transformVdbVolume ( MR.Const_VdbVolume volume,
in MR.AffineXf3f xf,
bool? fixBox = null,
MR.Box3f? box = null )
inlinestatic

Transform volume.

Parameters
volumeVolume to transform
xfThe transformation
fixBoxIf true, and if box is valid and represents the bounding box of the volume, then the result will be shifted so that no data has negative coordinate by any of dimensions Generated from function MR.transformVdbVolume. Parameter fixBox defaults to false. Parameter box defaults to {}.

◆ triangulatePointCloud()

static unsafe MR.Std.Optional_MRMesh MR.triangulatePointCloud ( MR.Const_PointCloud pointCloud,
MR.Const_TriangulationParameters? params_ = null,
MR.Std.Const_Function_BoolFuncFromFloat? progressCb = null )
inlinestatic

Creates mesh from given point cloud according params Returns empty optional if was interrupted by progress bar.

Before
After

Generated from function MR.triangulatePointCloud. Parameter params_ defaults to {}. Parameter progressCb defaults to {}.

◆ triDist()

static unsafe float MR.triDist ( ref MR.Vector3f p,
ref MR.Vector3f q,
in MR.Std.Array_MRVector3f_3 s,
in MR.Std.Array_MRVector3f_3 t )
inlinestatic

computes the closest points on two triangles, and returns the squared distance between them.

Parameters
s,tare the triangles, stored tri[point][dimension].

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. Generated from function MR.triDist.

◆ trimWithPlane() [1/2]

static unsafe void MR.trimWithPlane ( MR.Mesh mesh,
MR.Const_TrimWithPlaneParams params_,
MR.Const_TrimOptionalOutput? optOut = null )
inlinestatic

trim mesh by plane This function cuts mesh with plane, leaving only part of mesh that lay in positive direction of normal

Parameters
meshInput mesh that will be cut
paramsstores basic params for trimWithPlane function
optOutstores optional output params for trimWithPlane function Generated from function MR.trimWithPlane. Parameter optOut defaults to {}.

◆ trimWithPlane() [2/2]

static unsafe void MR.trimWithPlane ( MR.Polyline3 polyline,
MR.Const_Plane3f plane,
MR.Const_DividePolylineParameters? params_ = null )
inlinestatic

This function divides polyline with a plane, leaving only part of polyline that lies in positive direction of normal.

Parameters
polylineInput polyline that will be cut by the plane
planeInput plane to cut polyline with
paramsParameters of the function, containing optional output Generated from function MR.trimWithPlane. Parameter params_ defaults to {}.

◆ updateIndicator()

static unsafe void MR.updateIndicator ( MR.Const_Mesh mesh,
MR.UndirectedEdgeScalars v,
MR.Const_FaceNormals normals,
float beta,
float gamma )
inlinestatic

Compute edge indicator function (1 - smooth edge, 0 - crease edge) by solving large system of linear equations.

Parameters
meshcontains topology information and coordinates for equation weights
normalsper-face normals
beta0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges
gammathe amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20) Generated from function MR.updateIndicator.

◆ updateIndicatorFast()

static unsafe void MR.updateIndicatorFast ( MR.Const_MeshTopology topology,
MR.UndirectedEdgeScalars v,
MR.Const_FaceNormals normals,
float beta,
float gamma )
inlinestatic

Compute edge indicator function (1 - smooth edge, 0 - crease edge) by approximation without solving the system of linear equations.

Parameters
normalsper-face normals
beta0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges
gammathe amount of smoothing: 0 - no smoothing, 1 - average smoothing, ... see the article "Mesh Denoising via a Novel Mumford-Shah Framework", equation (20) Generated from function MR.updateIndicatorFast.

◆ vdbVolumeToSimpleVolumeNorm()

static unsafe MR.SimpleVolumeMinMax MR.vdbVolumeToSimpleVolumeNorm ( MR.Const_VdbVolume vdbVolume,
MR.Box3i? activeBox = null,
MR._InOpt_Box1f sourceScale = default,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

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
Parameters
sourceScaleif specified, defines the initial scale of voxels. If not specified, it is estimated as min. and max. values from the voxels Generated from function MR.vdbVolumeToSimpleVolumeNorm. Parameter activeBox defaults to MR.Box3i(). Parameter cb defaults to {}.

◆ vdbVolumeToSimpleVolumeU16()

static unsafe MR.SimpleVolumeMinMaxU16 MR.vdbVolumeToSimpleVolumeU16 ( MR.Const_VdbVolume vdbVolume,
MR.Box3i? activeBox = null,
MR._InOpt_Box1f sourceScale = default,
MR.Std._ByValue_Function_BoolFuncFromFloat? cb = null )
inlinestatic

Makes SimpleVolumeU16 from VdbVolume Values are linearly scaled from the source scale to the range corresponding to uint16_t.

Note
Makes copy of data
Parameters
sourceScaleif specified, defines the initial scale of voxels. If not specified, it is estimated as min. and max. values from the voxels Generated from function MR.vdbVolumeToSimpleVolumeU16. Parameter activeBox defaults to MR.Box3i(). Parameter cb defaults to {}.

◆ voxelFilter()

static unsafe MR.VdbVolume MR.voxelFilter ( MR.Const_VdbVolume volume,
MR.VoxelFilterType type,
int width )
inlinestatic

Performs voxels filtering.

Parameters
typeType of fitler
widthWidth of the filtering window, must be an odd number greater or equal to 1. Generated from function MR.voxelFilter.

◆ voxelsApplyTransform()

static unsafe bool MR.voxelsApplyTransform ( MR.ObjectVoxels obj,
in MR.AffineXf3f xf,
bool fixBox )
inlinestatic

Same as above but for the SceneObject.

Returns
true, if fixBox is true and the box was "fixed" (see parameter fixBox of transformVdbVolume) Generated from function MR.voxelsApplyTransform.

◆ writeByBlocks()

static unsafe bool MR.writeByBlocks ( MR.Std.Ostream out_,
byte? data,
ulong dataSize,
MR.Std._ByValue_Function_BoolFuncFromFloat? callback = null,
ulong? blockSize = null )
inlinestatic

write dataSize bytes from data to out stream by blocks blockSize bytes

if progress callback is not set, write all data by one block

Returns
false if process was canceled (callback is set and return false ) Generated from function MR.writeByBlocks. Parameter callback defaults to {}. Parameter blockSize defaults to (size_t(1)<<16).

◆ xyPlaneMeshIntersect()

static unsafe void MR.xyPlaneMeshIntersect ( MR.Const_MeshPart meshPart,
float zLevel,
MR.FaceBitSet? fs,
MR.UndirectedEdgeBitSet? ues,
MR.VertBitSet? vs,
MR.Std.Vector_MRFaceId? fsVec = null )
inlinestatic

given mesh part and plane z=zLevel, outputs

Parameters
fstriangles crossed or touched by the plane
uesedges of these triangles
vsvertices of these triangles
fsVectriangles crossed or touched by the plane in unspecified order Generated from function MR.xyPlaneMeshIntersect.

◆ zCompensate()

static unsafe bool MR.zCompensate ( MR.Mesh mesh,
MR.Const_ZCompensateParams params_ )
inlinestatic

For 3D printers: shifts every vertex with normal having negative projection on Z-axis, along Z-axis; mesh's topology is preserved unchanged.

Returns
false if cancelled. Generated from function MR.zCompensate.

◆ zlibCompressStream()

static unsafe void MR.zlibCompressStream ( MR.Std.Istream in_,
MR.Std.Ostream out_,
int? level = null )
inlinestatic

compress the input data using the Deflate algorithm

Parameters
in- input data stream
out- output data stream
level- compression level (0 - no compression, 1 - the fastest but the most inefficient compression, 9 - the most efficient but the slowest compression)
Returns
nothing or error string Generated from function MR.zlibCompressStream. Parameter level defaults to -1.

◆ zlibDecompressStream()

static unsafe void MR.zlibDecompressStream ( MR.Std.Istream in_,
MR.Std.Ostream out_ )
inlinestatic

/brief decompress the input data compressed using the Deflate algorithm

Parameters
in- input data stream
out- output data stream
Returns
nothing or error string Generated from function MR.zlibDecompressStream.

Friends And Related Symbol Documentation

◆ fromSameTriangle() [1/2]

static unsafe bool fromSameTriangle ( MR.Const_MeshTopology topology,
MR.EdgePoint a,
MR.EdgePoint b )
related

returns true if points a and b are located on a boundary of the same triangle;

if true a.e and b.e are updated to have that triangle on the left

Generated from function MR.fromSameTriangle.

◆ fromSameTriangle() [2/2]

static unsafe bool fromSameTriangle ( MR.Const_MeshTopology topology,
MR.Misc._Moved< MR.EdgePoint > a,
MR.Misc._Moved< MR.EdgePoint > b )
related

returns true if points a and b are located on a boundary of the same triangle;

if true a.e and b.e are updated to have that triangle on the left

Generated from function MR.fromSameTriangle.


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