This article introduces a general mesh intersection algorithm that exactly computes the so-called Weiler model and that uses it to implement boolean operations with arbitrary multi-operand expressions, CSG (constructive solid geometry) and some mesh repair operations. From an input polygon soup, the algorithm first computes the co-refinement, with an exact representation of the intersection points. Then, the decomposition of 3D space into volumetric regions (Weiler model) is constructed, by sorting the facets around the non-manifold intersection edges (radial sort), using specialized exact predicates. Finally, based on the input boolean expression, the triangular facets that belong to the boundary of the result are classified. This is, to our knowledge, the first algorithm that computes an exact Weiler model. To implement all the involved predicates and constructions, two geometric kernels are proposed, tested and discussed (arithmetic expansions and multi-precision floating-point). As a guiding principle,the combinatorial information shared between each step is kept as simple as possible. It is made possible by treating all the particular cases in the kernel. In particular, triangles with intersections are remeshed using the (uniquely defined) Constrained Delaunay Triangulation, with symbolic perturbations to disambiguate configurations with co-cyclic points. It makes it easy to discard the duplicated triangles that appear when remeshing overlapping facets. The method is tested and compared with previous work, on the existing "thingi10K" dataset (to test co-refinement and mesh repair) and on a new "thingiCSG" dataset made publicly available (to test the full CSG pipeline) on a variety of interesting examples featuring different types of "pathologies"
翻译:本文提出了一种通用网格求交算法,该算法精确计算所谓的Weiler模型,并用于实现任意多操作数表达式的布尔运算、CSG(构造实体几何)及部分网格修复操作。算法首先从输入的多边形汤中计算共精化,并采用交点的精确表示。随后,通过沿非流形交边对面片进行径向排序(使用专用精确谓词),构建三维空间体区域分解(Weiler模型)。最终根据输入布尔表达式,分类属于结果边界的三角形面片。据我们所知,这是首个计算精确Weiler模型的算法。为实现涉及的所有谓词与构造,本文提出、测试并讨论了两种几何内核(算术展开与多精度浮点数)。作为指导原则,各步骤间共享的组合信息被保持尽可能简单,这通过在内核中处理所有特例得以实现。特别地,包含交点的三角形采用(唯一确定的)约束Delaunay三角剖分进行重网格化,并通过符号扰动消除共圆点配置的歧义性。该方法可轻松剔除重网格化重叠面片时产生的重复三角形。我们在现有"thingi10K"数据集(测试共精化与网格修复)及新公开的"thingiCSG"数据集(测试完整CSG流水线)上,针对包含各类"病态"特征的有趣示例,对该方法进行了测试并与先前工作进行了比较。