多边形网格到B-Rep实体转换:算法详细信息和C ++代码示例

本文详细介绍了将多边形模型转换为B-Rep模型的过程,包括分段、表面识别和B-Rep模型创建。在转换中,通过三角剖分、曲面重构和迭代校正实现从多边形到B-Rep的转换。文章还讨论了如何处理噪声和识别不同类型的表面,以及如何处理不同来源的多边形模型。C3D B-Shaper提供了自动化和交互式模式,以适应不同的转换需求。
摘要由CSDN通过智能技术生成
image

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
Transforming a polygonal representation into a B-rep 将多边形表示转换为B-rep

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,«

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值