MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / mcShellMeshRegion

Function mcShellMeshRegion

source/MRVoxels/MROffset.cpp:242–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

240}
241
242Expected<Mesh> mcShellMeshRegion( const Mesh& mesh, const FaceBitSet& region, float offset,
243 const BaseShellParameters& params, Vector<VoxelId, FaceId> * outMap )
244{
245 MR_TIMER;
246
247 DistanceVolumeParams dvParams;
248 dvParams.cb = subprogress( params.callBack, 0.0f, 0.5f );
249 auto absOffset = std::abs( offset );
250 const auto box = mesh.computeBoundingBox( &region ).expanded( Vector3f::diagonal( absOffset ) );
251 const auto [origin, dimensions] = calcOriginAndDimensions( box, params.voxelSize );
252 dvParams.origin = origin;
253 dvParams.voxelSize = Vector3f::diagonal( params.voxelSize );
254 dvParams.dimensions = dimensions;
255
256 auto volume = meshRegionToIndicatorVolume( mesh, region, offset, dvParams );
257 if ( !volume )
258 return unexpectedOperationCanceled();
259
260 MarchingCubesParams vmParams;
261 vmParams.origin = dvParams.origin;
262 vmParams.iso = 0;
263 vmParams.cb = subprogress( params.callBack, 0.5f, 1.0f );
264 vmParams.lessInside = true;
265 vmParams.outVoxelPerFaceMap = outMap;
266 vmParams.freeVolume = [&volume]
267 {
268 Timer t( "~SimpleVolume" );
269 volume = {};
270 };
271 return marchingCubes( *volume, vmParams );
272}
273
274Expected<Mesh> sharpOffsetMesh( const MeshPart& mp, float offset, const SharpOffsetParameters& params )
275{

Callers 1

EMSCRIPTEN_BINDINGSFunction · 0.85

Calls 9

subprogressFunction · 0.85
absFunction · 0.85
diagonalFunction · 0.85
calcOriginAndDimensionsFunction · 0.85
marchingCubesFunction · 0.85
expandedMethod · 0.80
computeBoundingBoxMethod · 0.45

Tested by

no test coverage detected