| 272 | } |
| 273 | |
| 274 | Expected<Mesh> sharpOffsetMesh( const MeshPart& mp, float offset, const SharpOffsetParameters& params ) |
| 275 | { |
| 276 | MR_TIMER; |
| 277 | OffsetParameters mcParams = params; |
| 278 | mcParams.callBack = subprogress( params.callBack, 0.0f, 0.7f ); |
| 279 | Vector<VoxelId, FaceId> map; |
| 280 | auto res = mcOffsetMesh( mp, offset, mcParams, &map ); |
| 281 | if ( !res.has_value() ) |
| 282 | return res; |
| 283 | |
| 284 | SharpenMarchingCubesMeshSettings sharpenParams; |
| 285 | sharpenParams.minNewVertDev = params.voxelSize * params.minNewVertDev; |
| 286 | sharpenParams.maxNewRank2VertDev = params.voxelSize * params.maxNewRank2VertDev; |
| 287 | sharpenParams.maxNewRank3VertDev = params.voxelSize * params.maxNewRank3VertDev; |
| 288 | sharpenParams.maxOldVertPosCorrection = params.voxelSize * params.maxOldVertPosCorrection; |
| 289 | sharpenParams.offset = offset; |
| 290 | sharpenParams.outSharpEdges = params.outSharpEdges; |
| 291 | |
| 292 | sharpenMarchingCubesMesh( mp, res.value(), map, sharpenParams ); |
| 293 | if ( !reportProgress( params.callBack, 0.99f ) ) |
| 294 | return unexpectedOperationCanceled(); |
| 295 | |
| 296 | return res; |
| 297 | } |
| 298 | |
| 299 | Expected<Mesh> generalOffsetMesh( const MeshPart& mp, float offset, const GeneralOffsetParameters& params ) |
| 300 | { |