![image](https://i-blog.csdnimg.cn/blog_migrate/25f5d859610877e8ecc63fb252f810af.png)
Using a triangulation algorithm (known as tessellation) on a model's boundary representation is relatively easy. Building polygonal (tessellated) representations is useful for visualization purposes and for doing geometric calculations.
在模型的边界表示上使用三角剖分算法(称为曲面细分)相对容易。 建立多边形(镶嵌)表示形式对于可视化目的和进行几何计算很有用。
The reverse transformation — from the polygonal representation to B-rep — faces, however, a series of issues related to the complexity in recognizing different types of surfaces, including free-form ones. As well, there is the problem of noise in polygonal models that appear typically as the result of 3D scanning.
然而,从多边形表示到B-rep的反向转换面临着一系列与识别不同类型的曲面(包括自由曲面)的复杂性有关的问题。 同样,在多边形模型中也存在噪声问题,通常是3D扫描的结果。
The general process by which C3D B-Shaper transforms models from polygonal to B-rep formats consists of three stages: segmentation, reconstruction of surfaces, and b-rep model construction. The transformation process is iterative: if users are for any reason unhappy with the results, then corrections can be made during the segmentation and surface reconstruction stages.
C3D B-Shaper将模型从多边形格式转换为B-rep格式的一般过程包括三个阶段:分割,曲面重构和b-rep模型构建。 转换过程是迭代的:如果用户出于任何原因对结果不满意,则可以在分割和曲面重建阶段进行校正。
![image](https://i-blog.csdnimg.cn/blog_migrate/d233b6d1e04795d75c1d119147b233e1.png)
Before initiating the process of b-rep transformation, however, we improve the quality of the source polygonal mesh by applying the following fixes: coordinate the directions of normals in adjacent polygons; eliminate holes; and apply smoothing algorithms to noisy mesh sources, if any.
但是,在启动b-rep转换过程之前,我们通过应用以下修复方法来提高源多边形网格的质量:协调相邻多边形中法线的方向; 消除Kong洞; 并将平滑算法应用于嘈杂的网格源(如果有)。
分割多边形模型 (Segmenting the Polygonal Model)
The first stage of transformation is segmenting the polygonal model. We classify the mesh polygon into subsets (segments). Information about the normals at each mesh vertex makes it possible to perform a first-order segmentation and then carry out the initial mesh splitting, as well as classify areas as flat or highly curved. The initial mesh splitting is based on defining «sharp» edges. These are the edges between two triangular polygons where the angle between their average normals exceeds a predefined value.
转换的第一阶段是分割多边形模型。 我们将网格多边形分类为子集(段)。 有关每个网格顶点处的法线的信息可以执行一阶分割,然后执行初始网格划分,以及将区域分类为平坦或高度弯曲。 初始网格划分基于定义“锋利”边缘。 这些是两个三角形多边形之间的边缘,其中它们的平均法线之间的角度超过预定义的值。
A second-order segmentation analyzes the mesh based on its main curvature, which is sufficient for classifying elementary surfaces. When calculating curvatures at mesh vertices, we use the results of Meyer's work (Mark Meyer, Mathieu Desbrun, Peter Schroder, and Alan H. Barr, «Discrete Differential-Geometry Operators for Triangulated 2-Manifolds,» Visualization and Mathematics III, 2003) in defining a discrete differential operator for triangulated regions: a set of adjacent vertices (related to a given vertex via an edge) is considered for each initial mesh vertex. Next, a discrete operator K is calculated for the vertex. Based on the operator, the average normal, mean KH, and Gaussian KG curvatures are defined at the mesh vertex.
二阶分割基于网格的主曲率来分析网格,这足以对基本面进行分类。 在计算网格顶点处的曲率时,我们使用了Meyer的工作结果(Mark Meyer,Mathieu Desbrun,Peter Schroder和Alan H. Barr,«