跳到主要内容

Fix Undercuts(消除倒凹)

MR::FixUndercuts 命名空间下提供了消除“下凹”区域的函数。主要函数是:

void MR::FixUndercuts::fixUndercuts(Mesh &mesh, const Vector3f &upDirection,
float voxelSize=0.0f, float bottomExtension=0.0f);

以及带选区的重载,将 selectedArea 参数限制在网格的一部分。函数接受一个网格、一个“上升方向”向量(通常指重力相反方向),以及体素分辨率 voxelSize 和底部延伸厚度 bottomExtension。其实现方法类似各向异性偏移:先将网格在给定方向上按照 voxelSize 分辨率体素化,然后向上“填充”空洞,使得所有面相对于 upDirection 方向都能得到支撑。调用 fixUndercuts 后,原先的下凹/悬垂区域会被内部填充体素占据并重建为实体网格。可以在调用前用 MR::FixUndercuts::findUndercuts(mesh, upDir, outFaces) 识别那些下凹面(或顶点),并通过 getUndercutAreaMetric 等函数评估下凹面积。总体上,fixUndercuts 相当于将网格沿指定方向膨胀或偏移,从而消除过大的下凹角度。