MeshLib C++ Docs
Loading...
Searching...
No Matches
MRVoxels/MROffset.h
Go to the documentation of this file.
1#pragma once
2#include "MRVoxelsFwd.h"
3#include "MRMesh/MRMeshPart.h"
6#include "MRMesh/MRExpected.h"
7#include "MRMesh/MREnums.h"
8#include <optional>
9#include <string>
10
11namespace MR
12{
13
23
25[[nodiscard]] MRVOXELS_API float suggestVoxelSize( const MeshPart & mp, float approxNumVoxels );
26
58
60{
62 UndirectedEdgeBitSet* outSharpEdges = nullptr;
64 float minNewVertDev = 1.0f / 25;
72};
73
78[[nodiscard]] MRVOXELS_API Expected<Mesh> offsetMesh( const MeshPart& mp, float offset, const OffsetParameters& params = {} );
79
83[[nodiscard]] MRVOXELS_API Expected<Mesh> doubleOffsetMesh( const MeshPart& mp, float offsetA, float offsetB, const OffsetParameters& params = {} );
84
87[[nodiscard]] MRVOXELS_API Expected<Mesh> mcOffsetMesh( const MeshPart& mp, float offset,
88 const OffsetParameters& params = {}, Vector<VoxelId, FaceId>* outMap = nullptr );
89
93[[nodiscard]] MRVOXELS_API Expected<Mesh> mcShellMeshRegion( const Mesh& mesh, const FaceBitSet& region, float offset,
94 const BaseShellParameters& params, Vector<VoxelId, FaceId> * outMap = nullptr );
95
98[[nodiscard]] MRVOXELS_API Expected<Mesh> sharpOffsetMesh( const MeshPart& mp, float offset, const SharpOffsetParameters& params = {} );
99
106
108[[nodiscard]] MRVOXELS_API Expected<Mesh> generalOffsetMesh( const MeshPart& mp, float offset, const GeneralOffsetParameters& params );
109
114[[nodiscard]] MRVOXELS_API Expected<Mesh> thickenMesh( const Mesh& mesh, float offset, const GeneralOffsetParameters & params = {} );
115
120[[nodiscard]] MRVOXELS_API Expected<Mesh> offsetOneDirection( const MeshPart& mp, float offset, const GeneralOffsetParameters& params = {} );
121
126[[nodiscard]] MRVOXELS_API Expected<Mesh> offsetPolyline( const Polyline3& polyline, float offset, const OffsetParameters& params = {} );
127
128}
#define MRVOXELS_API
Definition MRVoxels/MRVoxelsFwd.h:13
std::vector<T>-like container that requires specific indexing type,
Definition MRMesh/MRVector.h:20
std::function< bool(float)> ProgressCallback
Definition MRMesh/MRMeshFwd.h:626
SignDetectionMode
how to determine the sign of distances from a mesh
Definition MRMesh/MRSignDetectionMode.h:10
@ OpenVDB
sign detection from OpenVDB library, which is good and fast if input geometry is closed
MRVOXELS_API Expected< Mesh > mcShellMeshRegion(const Mesh &mesh, const FaceBitSet &region, float offset, const BaseShellParameters &params, Vector< VoxelId, FaceId > *outMap=nullptr)
MRVOXELS_API Expected< Mesh > mcOffsetMesh(const MeshPart &mp, float offset, const OffsetParameters &params={}, Vector< VoxelId, FaceId > *outMap=nullptr)
MRVOXELS_API float suggestVoxelSize(const MeshPart &mp, float approxNumVoxels)
computes size of a cubical voxel to get approximately given number of voxels during rasterization
MRVOXELS_API Expected< Mesh > thickenMesh(const Mesh &mesh, float offset, const GeneralOffsetParameters &params={})
MRVOXELS_API Expected< Mesh > generalOffsetMesh(const MeshPart &mp, float offset, const GeneralOffsetParameters &params)
Offsets mesh by converting it to voxels and back using one of three modes specified in the parameters...
tl::expected< T, E > Expected
Definition MRExpected.h:59
MRVOXELS_API Expected< Mesh > offsetOneDirection(const MeshPart &mp, float offset, const GeneralOffsetParameters &params={})
MRVOXELS_API Expected< Mesh > offsetPolyline(const Polyline3 &polyline, float offset, const OffsetParameters &params={})
MRVOXELS_API Expected< Mesh > offsetMesh(const MeshPart &mp, float offset, const OffsetParameters &params={})
OffsetMode
Definition MREnums.h:38
MRVOXELS_API Expected< Mesh > sharpOffsetMesh(const MeshPart &mp, float offset, const SharpOffsetParameters &params={})
MRVOXELS_API Expected< Mesh > doubleOffsetMesh(const MeshPart &mp, float offsetA, float offsetB, const OffsetParameters &params={})
Definition MRVoxels/MROffset.h:15
float voxelSize
Definition MRVoxels/MROffset.h:18
ProgressCallback callBack
Progress callback.
Definition MRVoxels/MROffset.h:21
allows the user to select in the parameters which offset algorithm to call
Definition MRVoxels/MROffset.h:102
Mode mode
Definition MRVoxels/MROffset.h:104
Definition MRMesh/MRMesh.h:23
Definition MRVoxels/MROffset.h:28
bool closeHolesInHoleWindingNumber
whether to construct closed mesh in signMode = SignDetectionModeShort::HoleWindingNumber
Definition MRVoxels/MROffset.h:33
std::shared_ptr< IFastWindingNumber > fwn
Definition MRVoxels/MROffset.h:47
SignDetectionMode signDetectionMode
determines the method to compute distance sign
Definition MRVoxels/MROffset.h:30
float windingNumberThreshold
Definition MRVoxels/MROffset.h:38
bool memoryEfficient
Definition MRVoxels/MROffset.h:56
float windingNumberBeta
Definition MRVoxels/MROffset.h:42
Definition MRVoxels/MROffset.h:60
float maxNewRank2VertDev
maximal surface deviation to introduce new rank 2 vertex (on intersection of 2 planes),...
Definition MRVoxels/MROffset.h:66
float maxNewRank3VertDev
maximal surface deviation to introduce new rank 3 vertex (on intersection of 3 planes),...
Definition MRVoxels/MROffset.h:68
UndirectedEdgeBitSet * outSharpEdges
if non-null then created sharp edges will be saved here
Definition MRVoxels/MROffset.h:62
float minNewVertDev
minimal surface deviation to introduce new vertex in a voxel, measured in voxelSize
Definition MRVoxels/MROffset.h:64
float maxOldVertPosCorrection
Definition MRVoxels/MROffset.h:71